-
|
Hello all, I currently am using exex on reth v1.8.2, for a new range of blocks (N ~ N + X), I use history_by_block_hash to get post-state of block (N-1). But when executing that block with the created db from the given state, I get a nonce too low error. (state is ahead of block N's nonce). This happens for the first block in the batch, first transaction. This error seems to happen only on start-up, during the pipeline process, not when it chases single blocks normally. How I installed exex: How I retrieved state and created db to execute with within ExExNotification::ChainCommitted{new}
How I go about executing it: What my replay function looks like (with custom inspector attached): Logs: I've tried:
Please advise on
For past discussions, I have tried searching for "exex", "history_by_block_hash", "block_hash", "noncetoolow", "nonce too low". Was not able to find related discussions, if I missed it, please feel free to refer me to it, thank you! |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 3 replies
-
|
Could this be a corrupted database issue? I am currently trying to re-run with a fresh snapshot. On one hand, my history_by_block_hash should give me the valid state for block N-1 to execute block N, so this part of the code cannot be incorrect. On the other hand, if my node was able to process block N ~ N + X and then notify the exex, how can the historical state stored be invalid? Still quite stuck with solving this issue. |
Beta Was this translation helpful? Give feedback.
-
|
Currently I've updated the code to wait for "Finish" stage checkpoint. Which means to execute a new range of blocks N ~ N + X |
Beta Was this translation helpful? Give feedback.
-
|
Instead of replaying blocks in exex, another approach was used. Directly hooking into payload_validator's execute_block function and executionstage's execute function to directly gather the data needed from the block execution during live and pipeline sync. |
Beta Was this translation helpful? Give feedback.
-
|
Should wait on ctx.network().is_initially_syncing() to be done before calling history_by_block_hash (Specifically for first start-up's pipeline sync) |
Beta Was this translation helpful? Give feedback.
Should wait on ctx.network().is_initially_syncing() to be done before calling history_by_block_hash (Specifically for first start-up's pipeline sync)