Conversation
Adds `--network plataberget`. The BAL wire format and the EIP-8037 state gas are unchanged, so the Gloas work needs no rework; the churn is node bootstrap plus two moved EIP-8282 predeploy addresses, now read from ethrex instead of hardcoded. Co-Authored-By: Claude Opus 5 (1M context) <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.
Issue: #561 (follow-up; unblocks running the stack on devnet-8)
Why
Our pin (
b4d5677, v20.0.0) targets bal-devnet-7 — ethrex's own roadmap atthat rev says so, and marks EIP-7928 and EIP-8037 "devnet-7 aligned". Those are
exactly the two EIPs the Gloas work rests on. devnet-8 (
plataberget) is thenext round, and our pin has no
Platabergetnetwork variant, so ahelix-builder built from our tree cannot join it by name at all.
The reassuring part
Nothing in the Gloas work needed rework. The two things most likely to break
are unchanged between devnet-7 and devnet-8:
compute_hashcharacter for character, and theRLPEncode for BlockAccessListimpl hashes to the same md5. The 838 changed lines in thatfile are recorder/checkpoint internals, not encoding. So step 3's
hash-as-received and recomputed-comparison hold as written.
STATE_BYTES_PER_NEW_ACCOUNT(120) xcost_per_state_byte(1530) = 183600, so a first payment still needs exactly204600. Both step 4 assertions pass on v26, which turns that from inference
into a measurement.
The gas constants look changed —
TX_VALUE_COST_AMSTERDAM4244 -> 6000 andTRANSFER_LOG_COST_AMSTERDAM(1756) removed — but 1756 + 4244 = 6000: twoconstants merged into one and moved behind
recipient_regular_gas. A plaintransfer still costs 21000 regular.
What the bump actually cost
ethrex-cryptopinned at 20.0.0, so[patch]stopped applying and both it and upstream 26.0.0 entered the graphkeccak/, so our symbol renames carried over untouched; onlykzg.rs,provider.rsand the version needed updatingSyncManager::new+2 args (BackfillConfig,TaskTracker);bind_api16->15 (node + record collapsed intoSharedLocalNode);start_network+1;DiscoveryConfiglostDefault;get_latest_block_numberno longer async;DEFAULT_ROCKSDB_BLOCK_CACHE_SIZE_BYTESrenamedapply_fork_choicegained a reorg-depth boundNoneapply_tx_to_payload, which is worth knowingEvery compile error was in
cli.rs/node.rsor a test fixture. None were inthe validation, building, or Gloas logic.
Two corrections to the runbook, both found the hard way
The EIP-8282 predeploy addresses moved between devnet-7 and devnet-8. The
pair the runbook documented were devnet-7's; the bytecode is identical but the
Nick's-method addresses changed:
0x0000884d…D90082820x0000BFF4…300D82820x000014574A…0f0082820x000064D6…800E8282This cost 15 test failures, which is how it surfaced.
deploy_amsterdam_predeploysnow reads both from
ethrex_vm::system_contractsrather than hardcoding them,so the next pin bump cannot silently invalidate every Amsterdam block.
And "the predeploys must be in genesis" was wrong for a real devnet.
devnet-8's shipped genesis does not allocate them: they are Nick's-method
addresses deployed on chain by an ordinary transaction before the fork, which
activated 2026-08-20T07:50:24Z. On a synced node there is nothing to do. The
genesis requirement applies only to a local genesis with Amsterdam from block 0,
which is what the test fixture builds. The runbook now says so, and points at
eth_getCodeas the check.The runbook also gains devnet-8's specifics — chain id
7091047534, theAmsterdam timestamp, the ethpandaops config link — and one trap: an unrecognised
--networkvalue is not an error, ethrex treats it as a genesis file path, so amisspelling fails as a missing file. It is
plataberget, with anl.What this PR deliberately does not do
and pass its tests against v26; whether our blocks are accepted by other
devnet-8 clients is the next thing to find out, and it needs a running node.
so the figures in the runbook still stand.
ethrex-levmremoval. Still a direct dependency for the two state-gasconstants, which is exactly why the payout survived the bump unchanged.
Tests
All 414 pass on v26 (same count as before),
just fmt-checkandcargo clippy --all-features --no-deps -- -D warningsclean.Reviewer checklist
lint,unit-test) is green