gnosischain / reth_gnosis

22 stars 3 forks source link

Reth doesn't accept block RLPs produced by itself #24

Closed debjit-bw closed 3 weeks ago

debjit-bw commented 4 weeks ago

With ./scripts/apply_test_vectors_reth.sh, 5 empty blocks are applied on reth. During the post block execution, we are calling block.encode(file) to write the block's RLP to a file. This, however raises this error:

ERROR Stage encountered a validation error: mismatched block state root: got 0x9ec3eaf4e6188dfbdd6ade76eaa88289b57c63c9a2cde8d35291d5a29e143d31, expected 0xa59f6ea19d9ee6d7e79bcb286e6d8838b47b48351b37960e24c0a72d41fa1629 stage=MerkleExecute bad_block=1

Full trace:

2024-10-24T15:56:23.355274Z  INFO Executing stage pipeline_stages=8/12 stage=MerkleExecute checkpoint=0 target=1
2024-10-24T15:56:23.364768Z ERROR Failed to verify block state root! 
Invalid state root error on stage verification!
This is an error that likely requires a report to the reth team with additional information.
Please include the following information in your report:
 * This error message
 * The state root of the block that was rejected
 * The output of `reth db stats --checksum` from the database that was being used. This will take a long time to run!
 * 50-100 lines of logs before and after the first occurrence of the log message with the state root of the block that was rejected.
 * The debug logs from __the same time period__. To find the default location for these logs, run:
   `reth --help | grep -A 4 'log.file.directory'`

Once you have this information, please submit a github issue at https://github.com/paradigmxyz/reth/issues/new
 target_block=1 got=0x9ec3eaf4e6188dfbdd6ade76eaa88289b57c63c9a2cde8d35291d5a29e143d31 expected=SealedHeader { hash: 0xed7872a172549e9accebf17707054f5f0fa6983818e04af947d76be921fa6e02, header: Header { parent_hash: 0xa7931c99fd2b7b5e323a2fda8a2dd607cea04f03835c3f29bfe7c057c8b5672e, ommers_hash: 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347, beneficiary: 0x0000000000000000000000000000000000000000, state_root: 0xa59f6ea19d9ee6d7e79bcb286e6d8838b47b48351b37960e24c0a72d41fa1629, transactions_root: 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, receipts_root: 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, withdrawals_root: None, logs_bloom: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, difficulty: 0, number: 1, gas_limit: 10000000, gas_used: 0, timestamp: 1700000001, mix_hash: 0x0000000000000000000000000000000000000000000000000000000000000000, nonce: 0x0000000000000000, base_fee_per_gas: Some(875000000), blob_gas_used: None, excess_blob_gas: None, parent_beacon_block_root: None, requests_root: None, extra_data: 0x726574682f76312e302e382f6d61636f73 } }
2024-10-24T15:56:23.365268Z ERROR Stage encountered a validation error: mismatched block state root: got 0x9ec3eaf4e6188dfbdd6ade76eaa88289b57c63c9a2cde8d35291d5a29e143d31, expected 0xa59f6ea19d9ee6d7e79bcb286e6d8838b47b48351b37960e24c0a72d41fa1629 stage=MerkleExecute bad_block=1
2024-10-24T15:56:23.365879Z  INFO Unwinding{stage=Finish}: Starting unwind from=0 to=0 bad_block=Some(1)
2024-10-24T15:56:23.365937Z  INFO Unwinding{stage=IndexAccountHistory}: Starting unwind from=0 to=0 bad_block=Some(1)
2024-10-24T15:56:23.365973Z  INFO Unwinding{stage=IndexStorageHistory}: Starting unwind from=0 to=0 bad_block=Some(1)
2024-10-24T15:56:23.366006Z  INFO Unwinding{stage=TransactionLookup}: Starting unwind from=0 to=0 bad_block=Some(1)
debjit-bw commented 4 weeks ago

Will be fixed through https://github.com/paradigmxyz/reth/pull/12074

Defaulting to ethereum execution in the Import command was preventing blocks from getting hashed properly