Merge geth v1.17.2#4416
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #4416 +/- ##
==========================================
+ Coverage 52.27% 58.76% +6.48%
==========================================
Files 506 506
Lines 73739 60407 -13332
==========================================
- Hits 38548 35496 -3052
+ Misses 30013 19680 -10333
- Partials 5178 5231 +53 |
❌ 8 Tests Failed:
View the top 3 failed tests by shortest run time
📣 Thoughts on this report? Let Codecov know! | Powered by Codecov |
| MaxAmountOfGasToSkipStateSaving: cachingConfig.MaxAmountOfGasToSkipStateSaving, | ||
| StateScheme: cachingConfig.StateScheme, | ||
| StateHistory: cachingConfig.StateHistory, | ||
| TrienodeHistory: cachingConfig.TrienodeHistory, |
There was a problem hiding this comment.
There's one more config added in 1.17: FullValueCheckpoint that defaults in geth to 8, while leaving this field uninitialized (so zero) disables this storage optimization.
We need to add FullValueCheckpoint config and set it's default to 8.
Expose geth's NodeFullValueCheckpoint setting through CachingConfig, defaulting to 8 to match geth's default. Without this, the field was left at zero which disables the storage optimization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…int-config Add FullValueCheckpoint config for pathdb trienode history
Note: this branch is not consensus-compatible with LatestConsensusReleaseTestBlockValidatorSimpleOnchainWithPublishedMachine fails on this branch with missing requested preimage. This is expected for a feature branch carrying a geth bump and consensus-affecting changes that haven't been packaged into a release yet. It is not a regression in this PR. What's actually happening. The test downloads the validator binary from github.LatestConsensusRelease() and runs it against blocks produced by this branch. That binary was compiled before the merge and has neither (a) the geth v1.17.2 changes nor (b) the post-merge gas-accounting fixes added in this PR. The branch's sequencer (new code) emits blocks the published validator (old code) can't reproduce, and validation fails on the first state node whose preimage the witness didn't anticipate. The matching local-build variant TestBlockValidatorSimpleOnchain — same workload, validator built from this branch's source — passes. So the branch is internally consistent; the published-machine test fails purely because the two binaries are different binaries, by construction. What this PR actually containsNon-consensus (purely local / API):
Consensus-affecting, restoring pre-merge behaviour (these would diverge from the published validator if omitted; including them re-aligns the new code with the old):
Consensus-affecting from upstream v1.17.2 itself (in the merge, not added on top of it): Amsterdam-fork rules, EIP-7623 calldata floor pricing, the new gp.cumulativeUsed accounting model, multigas WithRefund tracking, pathdb retention and history-indexer rework. What's needed before a releaseFor the published-machine validator to accept code from this branch, every consensus-affecting change above (effectively, the entire v1.17.2 delta plus the four "restoring" fixes) needs to be gated behind a new ArbosVersion_* activation. Pre-activation blocks must continue to take the exact old code path so the current published machine can still validate them; only blocks at or after the activation height may use v1.17.2 semantics. This is the same upgrade pattern Nitro already uses for ArbosVersion_30, ArbosVersion_StylusFixes, ArbosVersion_FixRedeemGas, ArbosVersion_60, etc. Once that gating PR lands, a new consensus-* release can be cut from the activation point and LatestConsensusRelease() will return it; the published-machine test starts passing again automatically. |
pulls in OffchainLabs/go-ethereum#627 that is up-to-date with upstream go-ethereum version 1.17.2
Resolves NIT-4484
Resolves NIT-4839