自動化されたオンチェーン実行について調べていると、ずっと気になっていたことがある。
私たちは通常、権限チェックが1つのトランザクションずつ順に行われると想像する。
しかし現実はもっとややこしい。
大規模な取引システムでは、同一のスマートアカウントから複数のリクエストを同時に送信することがよくある。権限エンジンがそれらのリクエストを並列に評価する場合、ブロックチェーンがアカウントの状態を更新する前に、各トランザクションが一時的に同じ利用可能な上限を「見えてしまう」ことがある。
それは、パーミッションのインターリーブ(permission interleaving)として知られるエンジニアリング上の問題を引き起こす。
たとえば、取引Aが承認されるのは、アカウントにまだ十分な利用可能上限があるからだ。
そして数ミリ秒後、取引Bもまったく同じ理由で承認される。
どちらのリクエストも、すでにその上限の一部が別のリクエストによって確保されたことを互いに知らない。
結果として、必ずしもブロックチェーンが壊れるわけではない。
これは、権限付与ワークフローそのものの内部における競合状態(レースコンディション)なのだ。
だからこそ、現代の権限システムでは、単に高速な検証に頼るだけでなく、最終的に決定的なシーケンスロック(deterministic sequence locking)が必要になることがある。
時に、自動化でいちばん難しいのはトランザクションを実行することではない。
同時に複数のトランザクションが、うっかり同じ残高を信頼してしまわないようにすることだ。
@NewtonProtocol #Newt #BinanceTurns9 #ZcashRises1190%OverPastYear #SKHynixSharesFallInSeoulAfterUSDebut #StrategySells3588BTCForDividends
$VELVET $DODO $NEWT
⚡ 複数の自動化されたトランザクションが同時に到着した場合、最初に何が起こるべきですか?
私たちは通常、権限チェックが1つのトランザクションずつ順に行われると想像する。
しかし現実はもっとややこしい。
大規模な取引システムでは、同一のスマートアカウントから複数のリクエストを同時に送信することがよくある。権限エンジンがそれらのリクエストを並列に評価する場合、ブロックチェーンがアカウントの状態を更新する前に、各トランザクションが一時的に同じ利用可能な上限を「見えてしまう」ことがある。
それは、パーミッションのインターリーブ(permission interleaving)として知られるエンジニアリング上の問題を引き起こす。
たとえば、取引Aが承認されるのは、アカウントにまだ十分な利用可能上限があるからだ。
そして数ミリ秒後、取引Bもまったく同じ理由で承認される。
どちらのリクエストも、すでにその上限の一部が別のリクエストによって確保されたことを互いに知らない。
結果として、必ずしもブロックチェーンが壊れるわけではない。
これは、権限付与ワークフローそのものの内部における競合状態(レースコンディション)なのだ。
だからこそ、現代の権限システムでは、単に高速な検証に頼るだけでなく、最終的に決定的なシーケンスロック(deterministic sequence locking)が必要になることがある。
時に、自動化でいちばん難しいのはトランザクションを実行することではない。
同時に複数のトランザクションが、うっかり同じ残高を信頼してしまわないようにすることだ。
@NewtonProtocol #Newt #BinanceTurns9 #ZcashRises1190%OverPastYear #SKHynixSharesFallInSeoulAfterUSDebut #StrategySells3588BTCForDividends
$VELVET $DODO $NEWT
⚡ 複数の自動化されたトランザクションが同時に到着した場合、最初に何が起こるべきですか?
🔒 Lock the permissions
50%
⚖️ Check available balance
50%
🚀 Process everything together
0%
🤔 Not sure
0%
2 投票 • 投票は終了しました