I am syncing a Geth client in full sync mode and also have made some changes in the client to log the execution time , time stamp and block number of all the opcodes executed in the Ethereum virtual machine(EVM).
Output:
{"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"}
I can see that some opcodes of block number 192 were executed before opcodes of block number 191. How that can be possible? or how are the data of blocks processed while syncing in a full sync mode.
Reason why that can't be possible: There is only one state trie(which gets updated after every block) that acts as a single global truth in full node unlike archive node which has many state trie . So the block number 192 needs an initial state trie(which is state trie generated after processing all the data of block 191) to process the transactions.