Update Fast Sync configuration in Nethermind repository - #3396
Merged
Conversation
Open
2 tasks
AnkushinDaniil
added a commit
that referenced
this pull request
Aug 20, 2026
…d fees wire Three tests still encoded the pre-catch-up shape and failed on CI: - FrameTxDecoderTests hand-built payloads carried the three fee scalars flat; the decoder now reads fees as a nested list, so a padded payload hit the fee sequence-prefix check before the trailing-signature guard. - The two max-gas gating tests (TxPool picker and block-production picker) fixed their boundary case to the old 15,000 intrinsic; with the spec-correct 12,000 intrinsic the 115,000 frame now fits the 130,000 block, so the reject/skip case needed a higher limit. No production change; the wire and intrinsic are already covered by the #3396 fixtures (200/200).
4 tasks
AnkushinDaniil
added a commit
that referenced
this pull request
Aug 21, 2026
EIP-8141 now owns its spec-canonical introspection indices; the sibling extensions move off the collisions so a pure-8141 fork matches the spec. - TXPARAM 0x0C = STATE_GAS_LEFT (8141), was 0x11 - opcode 0xb5 = SIGDATACOPY (8141) as a distinct opcode; SIGPARAM (0xb4) is read-only again (no copy overload) - EIP-8250 legacy nonce TXPARAM 0x0C -> 0x11 (gated on 8250) - EIP-8272 RECENTROOTREFLOAD opcode 0xb5 -> 0xb6 - wire: fees is a nested [max_priority_fee, max_fee, max_fee_per_blob_gas] list; intrinsic FRAME_TX_INTRINSIC_COST 15000 -> 12000 Verified against execution-spec fixtures (EELS #3396) at fork Bogota: 201/201 pass. Unit suites green (Evm/Core/TxPool/Blockchain frame tests). The matching EIP-8250 / EIP-8272 index moves ship as separate spec PRs.
AnkushinDaniil
added a commit
that referenced
this pull request
Aug 22, 2026
* feat(frames): two-dimensional gas limits per EIP-8141 (devnet7) Split each frame's single gas_limit into limits = [execution, state] end to end, and the frame receipt's gas_used into [execution, state], per EIP-8141 (ethereum/EIPs#12062), which adopts the EIP-8037 two-dimensional gas model. Core: - TxFrame carries ExecutionGasLimit and StateGasLimit; the combined GasLimit is their sum. TxFrameReceipt carries ExecutionGasUsed and StateGasUsed. - Per-frame independent gas pools: a state charge exceeding limits.state halts the frame and is never paid from execution gas. - State-gas attribution and cross-frame refills are journaled at call, frame and atomic-batch boundaries; a refill reduces the owning frame's receipt. - Static validity: per-dimension overflow, expiry frame limits.state == 0, value_transfer_cost (EIP-2780 TX_VALUE_COST) folded into the intrinsic, and the EIP-7825 cap enforced on intrinsic + sum(limits.execution). - The Bogota devnet fork now derives from Amsterdam so EIP-8037 is active under frame transactions. Wire and settlement: - RLP: frame limits = [execution, state]; receipt gas_used = [execution, state]. - Settlement binds the calldata floor to the execution dimension only; state gas is charged on top. Block inclusion, mempool admission and block production check the execution and state dimensions separately. Introspection: - FRAMEPARAM exposes limits.state and per-dimension gas_used. TXPARAM state_gas_left is assigned 0x11 to avoid the EIP-8250 legacy-nonce 0x0C collision (a spec update will follow separately). Payment approval that must create an absent sender charges NEW_ACCOUNT from the approving frame's state budget, atomically before the nonce increment; a frame that cannot afford it halts with no approval effects. * feat(frames): give EIP-8141 its canonical TXPARAM/opcode indices EIP-8141 now owns its spec-canonical introspection indices; the sibling extensions move off the collisions so a pure-8141 fork matches the spec. - TXPARAM 0x0C = STATE_GAS_LEFT (8141), was 0x11 - opcode 0xb5 = SIGDATACOPY (8141) as a distinct opcode; SIGPARAM (0xb4) is read-only again (no copy overload) - EIP-8250 legacy nonce TXPARAM 0x0C -> 0x11 (gated on 8250) - EIP-8272 RECENTROOTREFLOAD opcode 0xb5 -> 0xb6 - wire: fees is a nested [max_priority_fee, max_fee, max_fee_per_blob_gas] list; intrinsic FRAME_TX_INTRINSIC_COST 15000 -> 12000 Verified against execution-spec fixtures (EELS #3396) at fork Bogota: 201/201 pass. Unit suites green (Evm/Core/TxPool/Blockchain frame tests). The matching EIP-8250 / EIP-8272 index moves ship as separate spec PRs. * Address review: 2D producer headroom, cast clamps, EIP-2780 gate, warm/cold cite; track post-refund block gas pending EIP-8141 spec fix * Address review round 2: Low findings + wurdum + Marchhill nits Reviewer findings addressed in this commit: claude-bot (Low): - Separate MAX_VERIFY_STATE_GAS rejection (AcceptTxResult, error message, metric) so a state-bound mempool reject is distinguishable from an execution-bound one. - TxParam 0x11 activation guard already present (gated on TEip8250). wurdum: - TxValidator: split overflow (FrameGasOverflow) from over-cap (FrameExecutionGasExceedsCap now carries the reservation and cap), add the IsEip8037Enabled gate mirroring IntrinsicGasTxValidator. - EvmInstructions.Storage: gate RecordStateChargeOwner on TEip8037.IsActive, matching the refill side; otherwise the ownership map/journal grow on a spec with 8141 but not 8037. - FrameTxContext: single dictionary probe on the SSTORE path (GetValueRefOrAddDefault / Remove(key, out)); early-exit + AsSpan + ref read in RestoreStateGasJournal. - Remove the now-unused TotalStateGasCorrection; accumulate the per-frame correction total in the existing settlement loop instead of a second pass. Marchhill (nits): trim member docs to summary + one-line cite per repo style. Deliberately kept (explained in review threads): the three-decoder gas_used wire framing and the receipt-format decoder are consensus-wire shapes, not mechanically deduped under pressure; the three block-gas tests are not identical (success+nonzero vs two halt+zero paths); the hardcoded operands at EvmInstructions.FrameTx 221/279 are pre-existing. * Strip added inline // comments (rationale lives in the PR/threads) * Extract block-production gas reservation helper (review: Marchhill)
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.
Config files included:
Properties refreshed:
PivotNumber
PivotHash
PivotTotalDifficulty
Auto-generated by [create-pull-request][1]
[1]: https://github.com/peter-evans/create-pull-request