chore(fast-inbox): delete legacy node message paths (A-1388)#24793
Open
spalladino wants to merge 10 commits into
Open
chore(fast-inbox): delete legacy node message paths (A-1388)#24793spalladino wants to merge 10 commits into
spalladino wants to merge 10 commits into
Conversation
Removes the legacy inboxLag / AZTEC_INBOX_LAG config field and env var from ethereum config, foundation env vars, the network-consensus-config list, the l1-contracts and spartan network defaults, and the e2e test option plumbing. Also drops the removed inHash argument from the e2e web3signer createBlockProposal wrapper.
…ers from stdlib/p2p (A-1388) Deletes computeInHashFromL1ToL2Messages and the inHash field from BlockProposal (including its signed-payload slot), the CheckpointProposal getBlockProposal pass-through, and the createBlockProposal inHash argument on the validator interface. Removes the padded per-checkpoint InboxLeaf helpers (smallestIndexForCheckpoint / indexRangeForCheckpoint / checkpointNumberFromIndex) and the legacy getL1ToL2Messages(checkpointNumber) member from the L1ToL2MessageSource and archiver RPC interfaces. Regenerates the block-proposal golden wire fixtures for the shrunk payload; the p2p wire format changes at a release boundary (fresh networks), matching the A-1381 optional-tail precedent.
…aths in the archiver (A-1388) Removes the legacy getL1ToL2Messages(checkpointNumber) flow, the padded per-checkpoint index invariants, the inboxTreeInProgress readiness gate, and the L1ToL2MessagesNotReadyError. InboxMessage drops the 128-bit keccak rollingHash and the vacuous derived checkpointNumber, so messages carry only the compact global index and the full-width consensus rolling hash; the store serialization changes and ARCHIVER_DB_VERSION bumps to 9 (nodes resync, no migration). Reorg detection now compares the local consensus rolling hash and total against the Inbox's current rolling-hash bucket via new getBucket/getCurrentBucketSeq/getCurrentBucket wrappers, replacing the 128-bit getState comparison. Test fakes/mocks move to compact indexing.
…lidator (A-1388) Removes the dead inHash=Fr.ZERO plumbing through the checkpoint proposal job and the validator/validation-service createBlockProposal path, and deletes the dead in_hash_mismatch validation-failure reason from proposal_handler, validator, and metrics. Updates the sequencer/validator test mocks and callers for the dropped inHash argument and the removed getL1ToL2Messages message source member.
…ator message fetch (A-1388) Drops the no-op first-in-checkpoint padding alias and its stale docs in world-state, and removes the obsolete non-first-block-empty-bundle transitional test. The node public-calls simulator no longer fetches next-checkpoint messages via the removed per-checkpoint API and drops its now-unused l1ToL2MessageSource dependency, simulating against the fork's current tree (streaming Inbox consumes per block). Rewrites the THREAT_MODEL inHash/consume passages to the consensus rolling-hash / bucket model.
…ts (A-1388) The optional bucket-reference tail keeps proposals that omit it round-tripping cleanly; it does not make the wire byte-identical to the pre-inHash-removal format. Reword the toBuffer/fromBuffer comments to describe only the tail's unset case.
… tests (A-1388) The env sweep removed AZTEC_INBOX_LAG from scripts/network-defaults.json but both deploy-script test setUps still readUint the key, which reverts (vm.parseJsonUint on a missing path), failing the suites before any test runs. The deploy configuration no longer consumes the env var.
…proposal formats (A-1388) The attestation store persists raw BlockProposal and CheckpointAttestation buffers. Both changed shape in this stack (the checkpoint header lost inHash and the block-proposal wire format dropped its zeroed inHash), and stored checkpoint attestations are decoded without a tolerant fallback, so a store written by a pre-Fast-Inbox node would throw on read. Bump 2 -> 3 to wipe stale pools, matching the archiver's no-migration bump.
…inbox consumption (A-1388) The suite still modeled the legacy per-checkpoint lag (a shift register consuming messages sent two checkpoints earlier) and built every checkpoint header from a zero previous rolling hash, neither of which can pass the streaming-inbox propose validation. Each checkpoint now consumes every message sent while it was built: the previous checkpoint's inboxRollingHash threads into the next header, and the propose bucket hint is read from the Inbox's current bucket, which also satisfies the mandatory-consumption assert. Single-checkpoint helpers default to consuming nothing (bucket hint 0 against the genesis bucket) instead of a padded zero-filled list. The suite cannot run locally (stale circuit artifacts in noir-protocol-circuits-types); CI is the runner of record.
…388) Removes the dead AZTEC_INBOX_LAG entries from the spartan environment profiles and the governance-upgrade tutorial, rewrites the validator and sequencer README sections that still described the legacy inHash flow, and drops e2e comments that still explained fixture settings in terms of the deleted inboxLag / L1ToL2MessagesNotReadyError behavior. Versioned docs snapshots are left untouched.
spalladino
force-pushed
the
spl/a-1388-node-cleanup
branch
from
July 19, 2026 01:25
92cecbd to
83a74e1
Compare
spalladino
force-pushed
the
spl/a-1387-circuits-cleanup
branch
from
July 19, 2026 01:25
d06eb0f to
7e1dc3d
Compare
This was referenced Jul 19, 2026
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.
Node cleanup for the Fast Inbox (AZIP-22) project — removes the legacy L1-to-L2 message paths the flip (#24789) left dead. Sits on the Fast Inbox stack (#24784..#24792); base is
spl/a-1387-circuits-cleanup.What's removed
computeInHashFromL1ToL2Messagesand the wholein_hash.ts; theinHashfield onBlockProposal(constructor, signed payload, wire, and thecreateBlockProposalvalidator-interface argument); theCheckpointProposal.getBlockProposalinHashpass-through; the padded per-checkpointInboxLeafhelpers (smallestIndexForCheckpoint/indexRangeForCheckpoint/checkpointNumberFromIndex); the legacygetL1ToL2Messages(checkpointNumber)member from theL1ToL2MessageSourceand archiver RPC interfaces.getL1ToL2Messagesflow, the padded per-checkpoint index invariants, theinboxTreeInProgressreadiness gate +L1ToL2MessagesNotReadyError, and the 128-bit keccak rolling hash.InboxMessagenow carries only the compact global index and the full-width consensus rolling hash (the vacuous derivedcheckpointNumberand the 128-bitrollingHashare gone). Reorg detection compares the local consensus rolling hash and total against the Inbox's current rolling-hash bucket (newgetBucket/getCurrentBucketSeq/getCurrentBucketwrappers) instead of the 128-bitgetState.inHash = Fr.ZEROthreading through the checkpoint proposal job and the validator/validation-service create-proposal path, plus the deadin_hash_mismatchvalidation-failure reason.l1ToL2MessageSourcedependency.AZTEC_INBOX_LAG/inboxLagfrom ethereum config, foundation env vars, the network-consensus-config list, the l1-contracts + spartan network defaults, and the e2e option plumbing.THREAT_MODEL.mdand the archiver README rewritten from theinHash == inbox.consume(...)model to the consensus rolling-hash / bucket model.Format / store / wire notes
ARCHIVER_DB_VERSION8 → 9 becauseInboxMessageserialization droppedrollingHash+checkpointNumberand theinboxTreeInProgresssingleton is gone. No migration — nodes resync (fresh rollup instance per release line, same no-migration policy as the rest of the stack).inHashshrinks the block-proposal bytes. Done as a plain removal at a release boundary (fresh networks), matching the A-1381 optional-tail precedent; the goldenwire_compat_fixtures.tsbuffers were regenerated. The checkpoint-proposal fixture is unaffected (it never carriedinHash).messagesRollingHashaccumulation +getState()/getTotalMessagesInserted()+MessageSent.rollingHashstill have readers (the l1-contracts test suite and thechain_monitorTS test util), so per the plan's conditional they are left in place; deleting them is a separate L1 change.Testing
Locally green (unit suites that run without
@aztec/bb-avm-sim): archiver (561), stdlib p2p + interfaces (76), world-state synchronizer + native (74), validator-client unit (38), ethereum config (6). Suites that import@aztec/bb-avm-sim(p2p libp2p, sequencer-client, node simulator, validator integration) and full typecheck of the packages downstream of the pinned-VK blocker are CI-validated. No e2e / VK regen locally.Review follow-up (phase-2 final review)
Four commits were appended by the final review pass:
AZTEC_INBOX_LAGfromscripts/network-defaults.jsonwhile both L1 deploy-script test setUps stillreadUintthe key, reverting before any test ran; the reads are gone.inHash; block-proposal wire dropped it), and stored checkpoint attestations decode without a tolerant fallback.l1_publisher.integration.test.tsis reworked for streaming consumption: each checkpoint consumes every message sent while it was built, threading the previous checkpoint's rolling hash and reading the proposebucketHintfrom the Inbox's current bucket (the legacy inboxLag shift register is gone).inboxLag/inHashreferences are swept from the spartan environment profiles, the governance-upgrade tutorial, the validator/sequencer READMEs, and stale e2e comments.