Skip to content

Conversation

@sieniven
Copy link

@sieniven sieniven commented Dec 3, 2025

📝 Summary

  1. This PR resolve issues found on the payload handler when handling received externally built flashblocks payload. It is found that when retrieving external payloads from peer builders, the state root calculation could mismatch due to errors on the payload validation execution (refer to Issue logs section for the example logs.
    • Resolve issue where retrieval depositor nonce was after tx execution - depositor nonce should be cached and retrieved before the transaction execution
    • Transaction envelope handling is incorrect - tx envelope for non deposit txs should be nil (instead of the current vec![0x00]
    • Use the standard reth's execution pattern evm.transact() instead for execution of transactions and handling of state changes
  2. Add pre-execution payload validation on the incoming block header and parent block header validations, aligning with the default reth's payload_validator logic
  3. Chore: switch repeated logs to debug level

Issue logs

2025-12-03T06:24:06.957584Z INFO Received block from consensus engine number=8594186 hash=0x92a82266795a15929a3ed696fe1e362172b1d63d50baf46beefa7342329200a8
2025-12-03T06:24:06.958276Z INFO Canonical chain committed number=8594186 hash=0x92a82266795a15929a3ed696fe1e362172b1d63d50baf46beefa7342329200a8 elapsed=56.792µs
2025-12-03T06:24:07.959807Z INFO executing flashblock header=Header { parent_hash: 0x92a82266795a15929a3ed696fe1e362172b1d63d50baf46beefa7342329200a8, ommers_hash: 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347, beneficiary: 0x4200000000000000000000000000000000000011, state_root: 0xddfd9afcfde543996f2d18e8f5c62e57d232e0f0e9064940edaaa2d224871237, transactions_root: 0x83d6757ffa229f27347d6c365e942198163325eb8c1b1a5c159a9d844422b581, receipts_root: 0xfc1d8bc99328e4113633b9ab891882bac50660e419d13c144d943f7c811e38d1, logs_bloom: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, difficulty: 0, number: 8594187, gas_limit: 150000000, gas_used: 147220286, timestamp: 1764743048, extra_data: 0x00000000fa00000006, mix_hash: 0x9d542a3f5333b4b3f8223c60b866bc33a4fd4be8ee3e4b3e7c6cb527b6ec18fa, nonce: 0x0000000000000000, base_fee_per_gas: Some(345052862), withdrawals_root: Some(0x8ed4baae3a927be3dea54996b4d5899f8c01e7594bf50b17dc1e741388ce3d12), blob_gas_used: Some(0), excess_blob_gas: Some(0), parent_beacon_block_root: Some(0x8b8d851a12382805c09ed58c23047e2888b3f6649d9b3952383922b89e68efe6), requests_hash: Some(0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855) }
2025-12-03T06:24:07.983973Z INFO Received block from consensus engine number=8594187 hash=0x028840ebb9422a1f70ccb6b92ac91b99ba0c714484f2914f8fed9235b84e32e7
2025-12-03T06:24:08.058053Z ERROR flashblock hash mismatch after execution expected=0x028840ebb9422a1f70ccb6b92ac91b99ba0c714484f2914f8fed9235b84e32e7 got=0xfbf5b5d69ff651ce69d1028c6e5912f471d565290378d1d91e6827b053535b9e
2025-12-03T06:24:08.058826Z ERROR failed to execute received flashblock error=flashblock hash mismatch after execution

✅ I have completed the following steps:

  • [✅] Run make lint
  • [✅] Run make test
  • Added tests (if applicable)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant