Repository navigation
feat(collector): prepare paired proposer signature collection - #1312
Conversation
Pin Lighthouse #10036 so the proposer fold can receive the local payload root. Adapt signing call sites while retaining the existing envelope flow and leaving stateless production disabled. Refs sigp#1309.
Register block and envelope roots together, publish one proposer packet, and reconstruct each signature independently. Retain bounded same-packet companion evidence and expose a wait-only path for later publication. Existing duty callers retain their behavior until the fold activates. Refs sigp#1309.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## epbs #1312 +/- ##
=======================================
Coverage ? 80.93%
=======================================
Files ? 181
Lines ? 42337
Branches ? 0
=======================================
Hits ? 34265
Misses ? 8072
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
shane-moore
left a comment
There was a problem hiding this comment.
Reviewed 8d9a52cc. No findings.
The paired API emits one proposer packet and waits only for the block signature. Envelope reconstruction is independent, same-packet companion evidence remains bound to the signature bytes, and the wait-only path cannot recreate an expired collector. Existing callers retain unrestricted collection.
Verified hosted debug and release logs: 1,030 tests passed in each on the same source tree as this head, including all ten new proposer tests and the existing collector fallback tests. Local-testnet CI also passed.
This is collector preparation only: the paired API has no production caller yet, and two-entry proposer admission remains for #1313.
Reviewed by gpt-6 astra high.
Merge order: #1311 → #1312 → #1313. All three target
epbs; rebase remaining branches after each merge.Problem, Evidence, and Context (Required)
Second of three PRs for #1309, dependent on #1311. SIP-94 requires one proposer packet containing block and envelope shares, while block completion must not wait for envelope quorum. Two independent collection calls would emit two packets.
Change Overview (Required)
Review only this layer.
Risks, Trade-offs, and Mitigations (Required)
The shared collector is the main regression risk. Companion policy is opt-in and immutable after registration; evidence is bounded, signature-specific, and removed with existing slot cleanup. This avoids a separate packet inbox or another lifetime-managed cache.
Validation (Required)
Executed independently with the first two layers applied:
cargo check --workspace --tests --locked: passed.cargo nextest run --locked -p signature_collector -p anchor_validator_store: 232 passed, 0 skipped.make lint,make cargo-fmt-check,git diff --check: passed.Rollback (Required for behavior or runtime changes; optional otherwise)
Before activation, revert this preparatory layer. After activation, revert the final layer first.
Blockers / Dependencies (Optional)
Merge #1311 first. The source branch is stacked in
shane-moore/anchor. This PR targetsepbsbecause its predecessor branch exists only in the fork; the upstream diff includes the prerequisite until it lands.