Repository navigation
chore: bump Foundry to 1.8.5 on v6 with bytecode-identical L1 builds - #25674
Closed
spalladino wants to merge 1 commit into
Closed
spalladino wants to merge 1 commit into
spalladino wants to merge 1 commit into
Conversation
spalladino
marked this pull request as ready for review
October 21, 2026 15:00
spalladino
requested review from
charlielye,
iAmMichaelConnor,
iakovenkos,
just-mitch,
koenmtb1 and
ludamad
as code owners
October 21, 2026 15:00
spalladino
requested review from
fcarreiro
and removed request for
charlielye,
iAmMichaelConnor,
iakovenkos,
just-mitch,
koenmtb1 and
ludamad
October 21, 2026 15:00
fcarreiro
approved these changes
Oct 21, 2026
fcarreiro
enabled auto-merge (squash)
October 21, 2026 15:05
Contributor
|
Superseded by #25677 |
auto-merge was automatically disabled
October 21, 2026 16:58
Pull request was closed
fcarreiro
added a commit
that referenced
this pull request
Oct 21, 2026
Combines #25673 and #25674 on `v6`, plus one commit that drops labs patch `0003`: - `a6d3060919`, `bf8aac88e5` (#25673): `labs` pinned to aztec-node `ea00f1b0` (`v6.0.0-rc.4`), labs patch queue drained, labs' mainnet compatibility test run. - `b89b782a5e` (#25674): Foundry 1.8.5 with bytecode-identical L1 builds, cherry-picked with the same diff. - `e6d3ed1248`: drops `0003-fix-ethereum-default-viem-polling-to-1-s-and-let-tes.patch`. It does not apply to `ea00f1b0`, which already polls anvil test chains every 100 ms in `createExtendedL1Client` (aztec-labs-eng/aztec-node#401). The labs patch series is empty, as on #25673. `ea00f1b0` targets Foundry 1.8.5 and contains aztec-labs-eng/aztec-node#483, the fix for the `l1_fee_analyzer.test.ts` failure #25674 hits on the old pin: block timestamps under anvil 1.8 are whole seconds, so `timeBeforeBlockMs` is negative for a block mined in the snapshot's second.
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.
Ports the tooling part of #25602 to
v6, so the release line builds with Foundry 1.8.5 while the L1 contracts compile to exactly the bytecode they compiled to under 1.4.1, metadata hash included.Context
v6contracts are deployed, so a rebuild has to reproduce them byte for byte. A plain Foundry bump does not: under 1.8.5 every artifact's CBOR metadata hash changes. The executable code is unchanged. The cause is remapping auto-detection: 1.5+ adds context-scoped remappings for the nestedforge-stdcopies inlib/circuitsandlib/openzeppelin-contracts, some with absolute paths. Those land insettings.remappingsin the metadata, so the bytecode would also vary between checkouts.Approach
bootstrap.sh, the build image andsetup-container.sh.3.1. The image files now matchnext, where3.1is already published.forge installin the l1-contracts and barretenberg/sol builds.forge buildat the end ofbuild_verifier.isolate = falsefor the tests.--slowin place of the removed--batch-sizeinforge_broadcast.js.tmnt331revert-data fix.test/.0003.l1-contracts/foundry.tomlsetsauto_detect_remappings = false. Each profile lists the remappings 1.4.1 recorded, its explicit ones plus the six it auto-detected fromlib/.osakaEVM target, which changes the metadata.evm_versionstaysprague.l1-contracts/srcand of the honk verifier sources and templates. Any source change changes the metadata hash.v6's labs and fixes an unrelated anvil port clash in tests.[fmt] ignore. That covers sixsrc/files and the pinnedDeployRollupForUpgradeV6.s.solin l1-contracts, andsrc/honk/{CommitmentScheme,Relations}.solin barretenberg/sol, which feed the generatedHonkVerifier.Bytecode check: I built
src/from unmodifiedv6with forge 1.4.1 and from this branch with 1.8.5. All 236 creation and runtime objects matched byte for byte in the default and production profiles, and 212/212 in coverage. The deploy scripts plus the generatedHonkVerifiermatched 262/262.Locally with 1.8.5:
forge test: 1455 passed, 0 failed, 10 skipped.forge fmt --checkis clean in both projects.check_contract_sizes.shpasses.test_rollup_upgrade.shcompletes.