refactor(block): fold withdrawals into Block.Processor#135
Merged
Conversation
Withdrawals were applied in BlockchainTestRunner *after* process_block/4 returned, then the runner recomputed the state root. A real client folds EIP-4895 credits into block processing so the returned state_root already reflects them. - Add EEVM.Block.Withdrawal in lib/. - Add :withdrawals option to Block.Processor.process_block/4, applied between the transaction fold and the commitments phase. Defaults to []. - BlockchainTestRunner converts fixture withdrawals to the new struct, passes them via :withdrawals, and verifies result.state_root directly. apply_withdrawals/credit_balance/StateRoot helpers in the runner go away. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
BlockchainTestRunnerafterBlock.Processor.process_block/4returned, then the runner recomputed the state root. A real client folds these credits into block processing so the returnedstate_rootalready reflects them.EEVM.Block.Withdrawal(lib/) plus a:withdrawalsoption onprocess_block/4, applied between the transaction fold and the commitments phase.result.state_rootdirectly — theapply_withdrawals/credit_balance/StateRoothelpers in the runner are gone.Test plan
mix compilecleanmix credo --strictcleanmix test— 4 doctests, 617 tests, 0 failures (4 new tests cover gwei→wei conversion, state root reflects withdrawals, ordering relative to txs, empty list no-op)🤖 Generated with Claude Code