You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Draft holding everything from the VCT feature branch not yet extracted into the split series. Stacked on #411 (split/vct-verify-core) so the diff shows only the remaining work.
Contents (extraction map)
State — VCT runtime + fast path: vct.rs + embedded mainnet frontier, CommitmentRootSource seam, request/error plumbing, committer fast path, fail-closed reopen, prop tests (next slices per the agreed order).
The precomputed checkpoint request path accepts cached block metadata that is not re-bound to the underlying block at the consensus service boundary. CheckpointVerifiedBlock::with_hash stores a caller-supplied hash while deriving only the height and transaction hashes from the block bytes. Router::call routes CommitCheckpointPrecomputed directly to CheckpointVerifier::call_precomputed before applying the normal max_checkpoint_height router cutoff. The checkpoint verifier then validates PoW and checkpoint-chain membership against the cached hash and height, not a freshly recomputed block.hash(). A caller with access to the public consensus service API can therefore submit block bytes under a forged checkpoint hash and put them on the checkpoint path that skips full semantic validation.
A bad peer-supplied VCT root can wedge checkpoint commit in an in-place retry loop after the note-commitment frontier has been frozen. Header sync persists untrusted BlockCommitmentRoots into the provisional Zakura root store, and PeerSource exposes those rows to the VCT committer. When fast-path verification rejects a supplied root, vct_reject_supplied_root invalidates the root and returns VctSuppliedRootUnavailable. The finalized write loop treats that error as retryable, keeps the same block parked, sleeps, and retries without notifying header sync or otherwise requesting a replacement root. On the next attempt the root is absent while vct_frontier_frozen is true, so the committer refuses legacy recompute and returns the same retryable error again.
The VCT fast path omits Ironwood from the root source, verification step, handoff frontier, and fast-path persistence. PeerSource reads full BlockCommitmentRoots rows but returns only Sapling and Orchard roots to the committer. verify_commitment_roots folds the supplied roots into the history tree with Default::default() for Ironwood even though Ironwood-onward history leaves use the supplied Ironwood root. At checkpoint handoff, only Sapling and Orchard frontiers are verified, and the committed tip treestate installs a default Ironwood tree. On a Nu7-enabled VCT deployment, the handoff can therefore finalize a default Ironwood state instead of the peer-supplied and header-authenticated Ironwood root.
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
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.
Motivation
Draft holding everything from the VCT feature branch not yet extracted into the split series. Stacked on #411 (
split/vct-verify-core) so the diff shows only the remaining work.Contents (extraction map)
vct.rs+ embedded mainnet frontier,CommitmentRootSourceseam, request/error plumbing, committer fast path, fail-closed reopen, prop tests (next slices per the agreed order).vct_fast_syncconfig knob,start.rsplumbing.zebra-checkpointsmainnet-frontier generation +checkpoint-update.ymlartifact step.HedgedBlocksByHash,route_hedge) + blocksync congestion-control spec + zakura testkit cleanup.zebra-replay-bench,make/perf.mk,deploy/runner— already open as feat(perf): add replay benchmark tooling #404.CommitCheckpointPrecomputed) — dropped with perf(chain): precompute note-commitment tree hashing off the committer #387.Not intended to merge as-is; reference source for the remaining split PRs.
AI Disclosure