0

我正在以完全同步模式同步一个 Geth 客户端,并且还在客户端中进行了一些更改,以记录在以太坊虚拟机 (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 的操作码之前执行。这怎么可能?或者在完全同步模式下同步时如何处理块的数据。

不可能的原因:只有一个状态树(在每个块后更新)充当完整节点中的单个全局真相,这与具有许多状态树的存档节点不同。所以192号区块需要一个初始状态trie(处理完191区块所有数据后生成的状态trie)来处理交易。

4

0 回答 0