docs(rfc-21): Annex B — computed serial-attempt latency budget vs on-chain timeouts#4032
Merged
mswilkison merged 2 commits intoJun 11, 2026
Conversation
…eouts RFC-21 runs ROAST attempts serially where paper-ROAST runs up to n-t+1 concurrent sessions. Compute what that costs against the bridge's deadlines instead of asserting it is fine: - As deployed (41 blocks/attempt, signingAttemptsLimit=5): <= ~41 minutes before the loop gives up -- ~175x inside the 5-day redemption timeout. - f-byzantine worst case at a hypothetical f+1=50 attempt limit: ~6.8 hours -- still ~17x inside the redemption timeout. - The binding liveness constraint is therefore NOT serial latency but all-honest-subset sampling: per-attempt success is 0.49/0.24/0.11/ 0.025 for f=1/2/3/5, so for f>=3 the 5-attempt loop fails with better-than-even odds long before any timeout is approached. The node.go attempts-limit rationale assumes f<=2; the production backstops beyond that are inactivity claims, redemption-timeout slashing, and wallet retirement. - Codify the structural fix as a Phase-7+ requirement: t-of-included finalize (first t responsive members; groundwork in the signer's true-late-t-of-n doc) at minimum for redemption signings, bounded n-t+1 concurrency as the follow-on, and alerting when observed failure rates imply f>=3 behaviour until then. Stacked on the Annex A PR so the annex numbering lands in order. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The i.i.d. subset-sampling table models the deployed legacy loop. The RFC-21 Layer B transitional path differs in both directions: one-shot silence is absorbed by parking, but staggered silence (or submitting evidence snapshots while withholding signing contributions, which bundle-absence parking does not detect) can fail every attempt deterministically at small f. The table is therefore not a worst case for Layer B -- which strengthens, not weakens, the t-of-included finalize requirement this annex codifies. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Base automatically changed from
unify/roast-coordinator-seed-go-2026-06-11
to
feat/frost-schnorr-migration-scaffold
June 11, 2026 23:11
e740bff
into
feat/frost-schnorr-migration-scaffold
16 checks passed
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.
Stacked on #4030 (base:
unify/roast-coordinator-seed-go-2026-06-11), which is itself stacked on #3866 — so the annex numbering (A: seed derivation, B: latency budget) lands in order. Implements item 4 of the review feedback (serial attempts vs real ROAST concurrency: "it should be a computed bound in the docs").What
Adds RFC-21 Annex B (informative): serial-attempt latency budget vs on-chain timeouts — the computed bound with current code and chain values, and an honest statement of which constraint actually binds:
signingAttemptMaximumBlocks),signingAttemptsLimit = 5, engine ROAST coordinator timeout 30 s (sub-dominant), n=100/t=51/f=49,redemptionTimeout5 days, moving-funds timeouts 7 days.∏(49−i)/(100−i)— 0.49 / 0.24 / 0.11 / 0.025 for f = 1/2/3/5 — so for f ≥ 3 the 5-attempt loop fails with better-than-even odds long before any timeout is approached. The existingsigningAttemptsLimitrationale inpkg/tbtc/node.goexplicitly assumes f ≤ 2; beyond that the backstops are operator-inactivity claims, redemption-timeout slashing, and wallet retirement — all outside the signing loop. (This profile is inherited from the tECDSA-era loop, not introduced by FROST.)true-late-t-of-n-finalize-considerations.md) at minimum for redemption signings; treat boundedn−t+1concurrency as the follow-on; until then alert when observed attempt-failure rates imply f ≥ 3 behaviour.Docs-only; no code change.
🤖 Generated with Claude Code