Skip to content

Bump to nitro v3.12.1 - #32

Draft
sduchesneau wants to merge 3952 commits into
release/v3.x-fhfrom
bump/v3.12.1-fh3.0
Draft

sduchesneau wants to merge 3952 commits into
release/v3.x-fhfrom
bump/v3.12.1-fh3.0

Conversation

@sduchesneau

Copy link
Copy Markdown

Merges upstream tag v3.12.1 (includes v3.12.0 and v3.11.5). Files outside our own changes are identical to v3.12.1.

  • go-ethereum submodule points at cc164e37de from Bump to the go-ethereum revision of nitro v3.12.1 go-ethereum#74. Re-pin to the merged commit once that PR lands, and update the link in CHANGELOG.sf.md.
  • Upstream workflows stay disabled, including the new nitro-reth-approvals-check.yml and zk-proving.yml.
  • Adds ACTIVATIONS.md, the ArbOS version inventory and each version's effect on Firehose blocks. All three chains are at ArbOS 61; v3.12.1 supports up to 61.

go build ./... passes, along with go vet on arbos, execution, precompiles, gethhook and arbnode. Building needs make target/lib/libstylus.a target/include/arbitrator.h first for the v3.12.1 Stylus C API.

pmikolajczyk41 and others added 30 commits August 25, 2026 08:18
…24-seq-race

Fix race between sequencer chain-state reads and head updates
…14-eip7702-seq-bug

Fix sequencer nonce tracking for self-sponsored EIP-7702 transactions
…-apis

limit rpc surface of el-proxy, valnode, tx filterer and bid validator
The script served at foundry.paradigm.xyz switched to foundryup-init
2.0.0, which prints PATH instructions instead of appending
~/.foundry/bin to ~/.bashrc. The contracts-builder stage relied on
sourcing ~/.bashrc to find forge, so 'make build-solidity' failed with
'forge: No such file or directory'. Set PATH explicitly via ENV
instead.

NIT-5526
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…irect

The previous commit copied the rustup curl flags but dropped -L.
sh.rustup.rs serves the script directly (200), while
foundry.paradigm.xyz 301-redirects to raw.githubusercontent.com, so
without -L curl pipes the redirect HTML into bash (-f only fails on
>=400, not 3xx), which exits 2 on the syntax error.
Review feedback on OffchainLabs#640: the harness lived in _test.go files, invisible
to the v2 system tests which import this package. Move external_l1 and
the tx-wait helpers it needs into non-test files, and replace the
7-value createExternalL1 signature with CreateExternalL1 taking
ExternalL1Params and returning an ExternalL1 struct with named fields.
The function body is intentionally untouched to keep the stacked
Amsterdam branch rebasing cleanly.
The test-system-external-l1 targets wrapped what is a plain go test
invocation. Keep only build-upstream-geth (which CI and the test error
messages depend on) and document the direct commands.
…26-fix-execution-spec-tests-nightly-ci-build-failure

Fix Docker build: new foundryup installer no longer edits ~/.bashrc
Under MEL no batch spending report reaches L2 within the window these
tests run in, so the batch poster is never registered in the L1 pricing
poster table and the reimbursement assertion at the end of
testSequencerPriceAdjustsFrom fails intermittently in the MEL CI shards.

Skip in the shared helper, which covers all five From*Gwei variants
across every MEL mode. The tests keep running in all non-MEL
configurations, where they are stable.
…20-expired-metric

Add sequencer metrics for txs dropped due to expired context
…fees-tests-under-mel

Skip TestSequencerPriceAdjustsFrom* under message extraction
geth v1.17.4 adds EIP-7928 block access list support; SetTxContext now
takes the BAL index, which follows geth's txIndex+1 convention (index 0
is reserved for pre-execution system calls). The value is only consumed
at ArbOS >= params.ArbosVersion_Amsterdam.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI and others added 30 commits August 31, 2026 17:18
Co-authored-by: joshuacolvin0 <32654531+joshuacolvin0@users.noreply.github.com>
…olved-revision

fix(build-pipeline): check out the revision the pipeline resolved
The CodeBuild projects run an inline copy of this buildspec, taken
before the nitroversion refactor renamed the Docker build args from
"version" to tag/branch/commit. Docker only warns about an undeclared
build arg, so v3.12.0-rc.1 shipped as "local+unknown-20260828T193632Z"
with a correct image tag and a green build.

Check the first image built reports both the tag (or branch) and the
commit the pipeline selected. Asserting the commit alone would miss a
rename of tag, which is the worse half: an empty tag leaves
IsSemverTagged false, so CheckVersionBounds and the version alerter
stop enforcing while the binary still names the right commit.

Also drop the ${BUILD_ARGS:-} fallback and export the variable instead.
That is hardening rather than part of the fix -- the incident had a
populated BUILD_ARGS carrying stale arg names -- but it removes the one
value the build phase reads without the producer exporting it.

The comment above the token re-mint claimed a staleness that does not
happen: v3.12.0-rc.1 ran 20:27:30 to 20:50:04, so the token was minutes
old, not expired. Removed rather than replaced with another guess.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
buildspec.yml has built and pushed the per-arch rust-validator images
since 30345ca, but the manifest job never aggregated them, so
$IMAGE_TAG-rust-validator resolved to nothing while its -amd64 and
-arm64 tags existed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A read-only open with the freezer attached needs every chain freezer table
on disk, so after the bals table was added upstream the probe failed on
every pre-existing store and the node read it as absent. The probe now
skips the freezer; the chain config is read below it from the read-write
handle, which has the ancients that block 0 needs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fix ci flakyness around BlockValidator shutdown on execution RPC
…t-5519-runner-modes

SP1 replay-runner execution modes: fast, simulate, and prove
…-freezer-probe

Don't attach the freezer to the l2chaindata existence probe
…t-5572-env-trait

arb-stylus adopts arbutil's `EvmApi` trait (dedup 2/n)
…t-5512-arb-stylus-cut

The Stylus compile seam: `arb-stylus` builds for wasm32
…sfer-base-scanarios

system tests v2: Transfer base scenarios
…t-5577-ccbrotli

nitro-reth links the prebuilt brotli libs; common CI setup action
(cherry picked from commit db99e32746932215a17aec3bb055e7375a51e343)
…rt-3.12

Bump go-ethereum to release cancelled eth_getLogs searches (backport OffchainLabs#862)
FillReceiptInfo read p.msg.Tx, which is nil for a message built from
RPC call arguments. GetPaidGasPrice gives the same price without it.

(cherry picked from commit 13eb5d90e52c0a21ac4b34fc0b58abb922935d3c)
GetPaidGasPrice gives min(baseFee, GasFeeCap) for a retry, where
Receipt.DeriveFields gives baseFee. Signed txs now use the same formula.

(cherry picked from commit fa130685799a9df5cbf8250594daa122a7091289)
Nothing reads the receipt price for a message with no Tx. A nil guard
on the original CollectTips branch is enough.

(cherry picked from commit ec06aa3980f95495aefc2dc4d7556b39272277d3)
…rt-3.12

Fix debug_traceCall and eth_simulateV1 crash when collecting tips (backport OffchainLabs#910)
…-backport-3.12

backport(NIT-5735): nitro feed client backfills over rest
…-for-3.12

Backport 3.12: Refuse Stylus activation for requests not executed onchain
When node.feed.input.rest.url is unset, backfill uses the first feed url's
host as the base URL. Backfill stays opt-in via node.feed.input.rest.enable.

Backport of OffchainLabs#953.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…efault-backport-3.12

port - Set default feed REST endpoint if not set explicitly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.