Skip to content

Conversation

@dknopik
Copy link
Member

@dknopik dknopik commented Dec 19, 2025

Issue Addressed

Proposed Changes

Instead of using the slot start as start time (which is later used for determining timeouts), use the current time.

@dknopik dknopik added QBFT v2.0.0 The release shipping the next network upgrade labels Dec 19, 2025
let timer = metrics::start_timer_vec(&metrics::CONSENSUS_TIMES, &[metrics::BLOCK]);
let start_time = self.get_instant_in_slot(slot, Duration::ZERO)?;
// proposals do not use a fixed start time: https://github.com/sigp/anchor/issues/758
let start_time = Instant::now();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this equivalent to "a relative timeout from QBFT start"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I realized now that the Go-SSV code appears to actually also use timeouts relative to round changes, e.g. induced by justified proposals: https://github.com/ssvlabs/ssv/blob/8808f67d0660821aa3991017272655fbecfbfa04/protocol/v2/qbft/instance/proposal.go#L35-L38

I believe we therefore need two timer modes - the existing one and one to mirror the behaviour above.

Therefore this fix is not sufficient. Closing it. Thanks!

@dknopik dknopik closed this Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

QBFT v2.0.0 The release shipping the next network upgrade

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants