0

完全同期モードで Geth クライアントを同期していますが、Ethereum 仮想マシン (EVM) で実行されたすべてのオペコードの実行時間、タイムスタンプ、およびブロック番号をログに記録するために、クライアントにいくつかの変更を加えました。

出力:

{"block_no":191,"opcode":"Swap1","execution_time":69,"time_stamp":"2022-02-14 20:41:37.34015876 +0000 UTC m=+150.233632791"}
{"block_no":191,"opcode":"Return","execution_time":137,"time_stamp":"2022-02-14 20:41:37.340165417 +0000 UTC m=+150.233639449"}

{"block_no":192,"opcode":"Push1","execution_time":106,"time_stamp":"2022-02-14 20:34:44.425052394 +0000 UTC m=+11.426059327"}
{"block_no":192,"opcode":"Push1","":119,"time_stamp":"2022-02-14 20:34:44.425097606 +0000 UTC m=+11.426104535"}

ブロック番号 192 の一部のオペコードが、ブロック番号 191 のオペコードの前に実行されていることがわかります。または、完全同期モードで同期中にブロックのデータがどのように処理されるか。

それが不可能な理由: 多くのステート トライがあるアーカイブ ノードとは異なり、フル ノードで単一のグローバル トゥルースとして機能するステート トライ(ブロックごとに更新される)は 1 つだけです。したがって、ブロック番号 192 は、トランザクションを処理するために初期状態トライ (ブロック 191 のすべてのデータを処理した後に生成される状態トライ) を必要とします。

4

0 に答える 0