chore(upgrade-signal): read new ProtocolVersions schedule contract#3963
Merged
Conversation
Collaborator
🟡 Heimdall Review Status
|
PelleKrab
force-pushed
the
pellekrab/upgrade-signal-protocol-versions
branch
2 times, most recently
from
July 14, 2026 23:10
8b0a575 to
b8b8020
Compare
PelleKrab
force-pushed
the
pellekrab/upgrade-signal-protocol-versions
branch
from
July 15, 2026 00:07
c80117f to
93c2d9d
Compare
jackchuma
reviewed
Jul 15, 2026
PelleKrab
force-pushed
the
pellekrab/upgrade-signal-protocol-versions
branch
from
July 15, 2026 16:43
93c2d9d to
6581bce
Compare
jackchuma
approved these changes
Jul 16, 2026
jackchuma
left a comment
Contributor
There was a problem hiding this comment.
looks good - just one optional nit to address
Replace the per-upgrade IUpgradeSignal reads (getTimestamp/getProtocolVersion by name) with the new ProtocolVersions interface from base/contracts#353: - read the full id-ordered schedule with one getSchedule() call and the global minimumProtocolVersion() in a single pinned L1 block read - map schedule entries onto the node hardfork ladder in activation (timestamp) order: id 0 (lowest timestamp) aligns with the oldest contract-backed hardfork; entries newer than the known ladder are logged and ignored, and unregistered hardforks produce no signal - attach the global minimum protocol version to every mapped signal so the existing validation and sink pipeline is unchanged - bump the supported node protocol version from 7 to packed semver 1.1.0 - drop the now-impossible TimestampOverflow error (timestamps are uint64 onchain)
Co-authored-by: Codex <codex-noreply@coinbase.com>
Cache node_protocol_version() in a LazyLock and add tests for the 0.0.0 -> U256::MAX dev-build invariant. Note the packed-semver input assumption on protocol_version_to_f64. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
The reader only issues eth_calls for getSchedule and minimumProtocolVersion; nothing decodes TimestampSet or MinimumProtocolVersionUpdated. Remove them and re-add if event-based reads are introduced later. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
…sion - Document that map_schedule aligns entries by registration id (positional), not by activation timestamp; timestamps need not be monotonic (README + doc). - Cache the Cargo-derived node protocol version in a LazyLock instead of recomputing on every call. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
PelleKrab
force-pushed
the
pellekrab/upgrade-signal-protocol-versions
branch
from
July 16, 2026 18:07
9f25b7c to
3dc0af9
Compare
Contributor
Review SummaryReviewed the migration from per-upgrade No new issues found. The implementation is clean:
Previous inline comments from an earlier review run addressed minor documentation points that appear to already be resolved in this version of the PR. |
Contributor
❌ base-std fork tests did not runThe build or setup step failed before any tests could execute. Check the workflow logs for details.
|
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
Adds support for reading dynamic upgrade activation schedules from the L1
ProtocolVersionscontract.This updates the upgrade-signal utility to:
getSchedule()minimumProtocolVersion()BaseUpgrade::CONTRACT_VARIANTS0.0.0dev builds to bypass the minimum-version rejection withU256::MAXThe Solidity ABI in this crate intentionally includes only the read surface used by nodes, not the
full contract interface.
Notes
CONTRACT_VARIANTSremains explicit because it is not the same as allBaseUpgradevariants. Itrepresents the contract-backed upgrade set in L1 schedule order and intentionally excludes non-
contract-backed upgrades like
BedrockandZombie.Tests
cargo fmt --check -p base-upgrade-signal cargo test -p base-upgrade-signal --all-features cargo clippy -p base-upgrade-signal --all-targets --all-features -- -D warnings