Repository navigation
feat(qbft_manager): shorten proposer QBFT round timeout to 1.5s (SIP-102) - #1325
Merged
shane-moore merged 1 commit intoSep 28, 2026
Merged
Conversation
…102) Gloas moves the attestation deadline to 3s. A proposer instance starts about 1.1-1.5s into the slot, so with 2s rounds a round change starts round 2 after the deadline. Give proposer rounds 1.5s each, measured from each round's start, matching go-ssv #3044. Add --legacy-proposer-round-timeout to restore 2s, mirroring go-ssv's LegacyProposerRoundTimeout rollback switch. The value is carried in TimeoutMode::Relative, which only the proposer uses. SlotTime duties, message validation, and the proposer round cap are unchanged. Closes sigp#1324
shane-moore
commented
Sep 28, 2026
shane-moore
left a comment
Member
Author
There was a problem hiding this comment.
review from opus 5.5 at 64032a6: no findings
checked:
- round 1 gets the full 1.5s:
initializeresetscurrent_round_start_timeto now after thesleep_until, so the slot-start value passed bydecide_abstract_blockdoesn't shorten round 1 - the round 2 cap holds via
Role::Proposer.max_round()->with_max_rounds->end_round - message validation needs no change: the spread upper bound is always >= 4, above the proposer cap of 2
- matches go-ssv #3044 (1.5s default, legacy bool back to 2s, proposer only, not fork gated, timed from instance start)
- the startup log fires since
enable_loggingruns beforefrom_cli
not verified: anchor's round 1 latency under gloas, as the description already says
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## epbs #1325 +/- ##
=======================================
Coverage ? 80.80%
=======================================
Files ? 179
Lines ? 41275
Branches ? 0
=======================================
Hits ? 33352
Misses ? 7923
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:
|
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.
Problem, Evidence, and Context
epbs-gloasin qbft/roundtimer: shorten the proposer round budget to 1.5s (SIP-102) ssvlabs/ssv#3044. It is not fork-gated, and it addsLegacyProposerRoundTimeoutto restore 2s. Without this PR, committees where Anchor runs more than f operators stay on 2s after Sepolia's Gloas fork (2026-10-06).Change Overview
TimeoutMode::Relative, which only the proposer uses.--legacy-proposer-round-timeoutrestores 2s, and startup logs at info when it is set.Risks, Trade-offs, and Mitigations
Validation
sign_blocktest checks that the proposer path passes the configured timeout to QBFT, for both values.make cargo-fmt-check,make lintandmake cli-reference-checkpass.make test(release) passes, with one exception.spec_testsfirst failed because the ssv-spec fixture submodule was not initialized in the fresh worktree. After initializing it,cargo test --release -p spec_testspasses.Rollback
Run with
--legacy-proposer-round-timeouton every operator in the committee, or revert the commit. There is no storage or wire-format impact.Additional Info / Next Steps
🤖 Generated with Claude Code