Skip to content

chore(p2p): lower attestation pool per-slot caps to 2#21709

Merged
PhilWindle merged 1 commit intomerge-train/spartanfrom
palla/lower-attestation-pool-caps
Mar 18, 2026
Merged

chore(p2p): lower attestation pool per-slot caps to 2#21709
PhilWindle merged 1 commit intomerge-train/spartanfrom
palla/lower-attestation-pool-caps

Conversation

@spalladino
Copy link
Contributor

@spalladino spalladino commented Mar 17, 2026

Motivation

Equivocation detection fires at count > 1 (i.e., the 2nd distinct entry). Nothing in the codebase uses counts beyond 2, so entries 3+ are dead storage. A cap of 2 is sufficient to store the honest entry plus one conflicting entry for detection. And if we fail to store the honest one, still too bad since it means there was a bad proposer or attestor.

Approach

Lower all three per-slot caps in the attestation pool from their current values (5, 3, 3) to 2. Update tests that previously asserted a third entry could be added—they now assert rejection at the cap. Update README docs that referenced the old values.

Changes

  • p2p (attestation_pool): MAX_CHECKPOINT_PROPOSALS_PER_SLOT 5→2, MAX_BLOCK_PROPOSALS_PER_POSITION 3→2, MAX_ATTESTATIONS_PER_SLOT_AND_SIGNER 3→2
  • p2p (tests): Updated "track multiple duplicates" tests to expect rejection on the 3rd entry instead of acceptance
  • p2p (docs): Updated proposal_validator and attestation_validator READMEs with new cap values

Equivocation detection fires at count > 1 (i.e., the 2nd distinct entry).
Nothing in the codebase uses counts beyond 2, so entries 3+ are dead storage.
A cap of 2 is sufficient to store the honest entry plus one conflicting entry
for detection.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@spalladino spalladino added the ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure label Mar 17, 2026
@PhilWindle PhilWindle merged commit 5541264 into merge-train/spartan Mar 18, 2026
21 of 25 checks passed
@PhilWindle PhilWindle deleted the palla/lower-attestation-pool-caps branch March 18, 2026 11:07
github-merge-queue bot pushed a commit that referenced this pull request Mar 18, 2026
BEGIN_COMMIT_OVERRIDE
fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation
(#21605)
chore: fixing M3 devcontainer builds (#21611)
fix: clamp finalized block to oldest available in world-state (#21643)
chore: fix proving logs script (#21335)
fix: (A-649) tx collector bench test (#21619)
fix(validator): process block proposals from own validator keys in HA
setups (#21603)
fix: add bounds when allocating arrays in deserialization (#21622)
fix: skip handleChainFinalized when block is behind oldest available
(#21656)
chore: demote finalized block skip log to trace (#21661)
fix: skip -march auto-detection for cross-compilation presets (#21356)
chore: revert "add bounds when allocating arrays in deserialization"
(#21622) (#21666)
fix: capture txs not available error reason in proposal handler (#21670)
fix: estimate gas in bot and make BatchCall.simulate() return
SimulationResult (#21676)
fix: prevent HA peer proposals from blocking equivocation in duplicate
proposal test (#21673)
fix(p2p): penalize peers for errors during response reading (#21680)
feat(sequencer): add build-ahead config and metrics (#20779)
chore: fixing build on mac (#21685)
fix: HA deadlock for last block edge case (#21690)
fix: process all contract classes in storeBroadcastedIndividualFunctions
(A-683) (#21686)
chore: add slack success post on nightly scenario (#21701)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix: only delete logs from rolled-back blocks, not entire tag (A-686)
(#21687)
chore(p2p): lower attestation pool per-slot caps to 2 (#21709)
chore(p2p): remove unused method (#21678)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(test): workaround slow mock creation (#21708)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
fix: batch checkpoint unwinding in handleEpochPrune (A-690) (#21668)
fix(sequencer): add missing opts arg to checkpoint_builder tests
(#21733)
fix: race condition in fast tx collection (#21496)
fix: increase default postgres disk size from 1Gi to 10Gi (#21741)
fix: update batch_tx_requester tests to use RequestTracker (#21734)
chore: replace dead BOOTSTRAP_TO env var with bootstrap.sh build arg
(#21744)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
fix: deflake attempt for l1_tx_utils (#21743)
fix(test): fix flaky keystore reload test (#21749)
fix(test): fix flaky duplicate_attestation_slash test (#21753)
feat(pipeline): introduce pipeline views for building (#21026)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants