fix(precompiles): Fix B20 Factory Address#2892
Merged
Merged
Conversation
Collaborator
✅ Heimdall Review Status
|
b6c806a to
38647e2
Compare
Contributor
Review SummaryNo issues found. The address fix is correct — the old constant Both the Rust constant and the devnet shell script are updated consistently, and the new pinning test guards against future regressions. |
eric-ships
approved these changes
May 23, 2026
haardikk21
pushed a commit
to base/base-anvil
that referenced
this pull request
May 23, 2026
…t fix
Original pin (c0ebd548d, 'align base-std precompile parity') lived on an
off-main branch and was missing every fix landed since 2026-05-22 12:24,
including:
- b20 factory address moved back to 0xB20F..0000 to match base-std
fixtures (base/base#2892)
- security share ratio sentinel alignment (#2889)
- REDEEM_SENDER_POLICY default = ALWAYS_BLOCK_ID (#2887)
- METADATA_ROLE required for updateContractURI (#2878)
- assorted policy / activation precompile fixes
This PR bumps to 2f27f588ec75e79b7868524b888947965237b49e, which sits on
top of base/base#2895 ('seed policy builtins independently of bytecode
init'). The latter fix is required because base-anvil pre-warms the
three singleton precompile addresses with sentinel bytecode so Solidity
high-level wrappers pass the EXTCODESIZE check; this pre-warm also
trips the upstream lazy-init gate (is_initialized = 'has code'),
causing PolicyRegistry's ALWAYS_ALLOW_ID / ALWAYS_BLOCK_ID slots to
stay empty and next_counter to start at 0.
End-to-end verification against base-std fork tests:
- before: 116 / 233 pass (stale rev)
- after rev bump only: 437 / 465
- after rev bump + #2895: 450 / 463
The remaining 13 failures are unrelated upstream issues (EIP712 fields
bitfield, updateName metadata propagation, AccessControl caller
attribution) tracked separately.
TODO: re-pin to base/base main once #2895 lands and is included in
the trunk SHA.
haardikk21
added a commit
to base/base-anvil
that referenced
this pull request
May 23, 2026
* fix(deps): bump reth v2 stack
* ci: fix dependency deny checks
* fix: add Default fallback to Header / VyperConfig test literals
The alloy 2.0.5 and foundry-config bumps added new fields to Header and
VyperConfig respectively. The library/binary builds were unaffected,
but five test-target struct literals broke compilation under
'cargo check --all-targets'. Add '..Default::default()' so future
upstream field additions don't break the test build again.
* chore(precompiles): bump base/base rev to current main + builtins-init fix
Original pin (c0ebd548d, 'align base-std precompile parity') lived on an
off-main branch and was missing every fix landed since 2026-05-22 12:24,
including:
- b20 factory address moved back to 0xB20F..0000 to match base-std
fixtures (base/base#2892)
- security share ratio sentinel alignment (#2889)
- REDEEM_SENDER_POLICY default = ALWAYS_BLOCK_ID (#2887)
- METADATA_ROLE required for updateContractURI (#2878)
- assorted policy / activation precompile fixes
This PR bumps to 2f27f588ec75e79b7868524b888947965237b49e, which sits on
top of base/base#2895 ('seed policy builtins independently of bytecode
init'). The latter fix is required because base-anvil pre-warms the
three singleton precompile addresses with sentinel bytecode so Solidity
high-level wrappers pass the EXTCODESIZE check; this pre-warm also
trips the upstream lazy-init gate (is_initialized = 'has code'),
causing PolicyRegistry's ALWAYS_ALLOW_ID / ALWAYS_BLOCK_ID slots to
stay empty and next_counter to start at 0.
End-to-end verification against base-std fork tests:
- before: 116 / 233 pass (stale rev)
- after rev bump only: 437 / 465
- after rev bump + #2895: 450 / 463
The remaining 13 failures are unrelated upstream issues (EIP712 fields
bitfield, updateName metadata propagation, AccessControl caller
attribution) tracked separately.
TODO: re-pin to base/base main once #2895 lands and is included in
the trunk SHA.
* chore(deps): bump rand 0.8.5 -> 0.8.6 for RUSTSEC-2026-0097
Resolves cargo deny advisories failure caused by unsound aliased
mutable references in rand v0.8.5 when log + thread_rng features
are active.
* ci: switch from depot.dev runners to GitHub-hosted standard runners
The repo was forked from foundry which uses custom depot.dev runners
(depot-ubuntu-latest, depot-ubuntu-22.04-16, depot-windows-latest-16,
foundry-runner, macos-*-large, etc.) that don't exist in the base
GitHub org and never trigger CI jobs on the fork.
Runner mapping:
depot-ubuntu-latest / -16 -> ubuntu-latest
depot-ubuntu-latest-arm-16 -> ubuntu-24.04-arm
depot-ubuntu-22.04-16 -> ubuntu-22.04
depot-ubuntu-22.04-arm-16 -> ubuntu-22.04-arm
depot-macos-latest / macos-*-large -> macos-latest / macos-13
depot-windows-latest-16 -> windows-latest
foundry-runner -> ubuntu-latest
docker-publish: replaced depot/setup-action + depot/build-push-action
with standard docker/setup-qemu-action + docker/setup-buildx-action +
docker/build-push-action (multi-arch via QEMU instead of depot infra).
release: dropped 'contains(matrix.runner, "depot")' conditional gating
sccache so it runs unconditionally now that the matrix has no depot
labels.
* chore(precompiles): bump base/base rev to tip of main (77b26157f)
Picks up #2895 (policy builtins init fix - now merged) plus #2860,
#2893, #2894. Fork-test suite holds at 450/465 passing; remaining 13
failures are tracked upstream (EIP712 fields=0x0c vs 0x0f, updateName
metadata, ActivationRegistry deactivate, B20Security recursion +
factory bootstrap).
* chore(precompiles): bump base/base rev to tip of main (a4b689fda)
Picks up #2859 'Align Base Std Precompile Parity' (squash of 8804a1282)
which fixes most B20Security / B20Factory / Policy parity issues with
the base-std fixtures. Fork-test suite holds at 450/465 passing -
remaining 13 failures all stem from the unmerged permittable.rs EIP-712
fields=0x0c -> 0x0f canonical-domain change tracked separately.
---------
Co-authored-by: haardikk21 <haardik@base.org>
Co-authored-by: Haardik H <haardik.haardik@coinbase.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.
Summary
This fixes the B20 factory singleton address constant to use the canonical B20F precompile address. The change keeps factory storage aligned with the intended precompile address and avoids encoding the factory marker byte in the wrong position.