test(frost): multi-node interactive signing e2e over the real pkg/net transport#4095
Merged
mswilkison merged 1 commit intoJun 19, 2026
Conversation
… transport
The pkg/net RunnerBus adapter (broadcastChannelRunnerBus) had thorough unit
coverage (seat authentication, demux, dedup, drop-on-overflow, wire round-trip)
but no end-to-end test of a full interactive signing round flowing through it.
This adds that: n interactive signing runners wired over n REAL pkg/net
BroadcastChannel buses (one operator per seat on one in-memory network), each
driving the deterministic fake engine, completing a whole round across the
production transport rather than the in-process test bus.
It exercises wire serialization of every RunnerMessage type (commitments,
signing package, shares), the claimed-seat<->authenticated-operator-key binding,
the per-type demux, and bounded delivery, with two cases:
- full-included (group size == threshold == 2, every seat signs);
- t-of-included (group size 3, threshold 2): the coordinator finalizes over a
t-subset and the remaining committed seat observes, so the RFC-21 Phase 7.3
subset/observer flow is validated across the real transport too.
This is the explicit prerequisite for retiring the coarse path ("real transport
passes multi-node testing"). Test-only, frost_native (pre-prod) tag; no
production behavior change. The standard client-* CI does not build frost_native
tags, so this is validated locally (default + frost_native + -race).
Co-Authored-By: Claude Opus 4.8 <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 |
eb35661
into
feat/frost-schnorr-migration-scaffold
15 of 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.
What
The
pkg/netRunnerBus adapter (broadcastChannelRunnerBus, #4080) had thorough unit coverage — seat authentication, demux, dedup, drop-on-overflow, wire round-trip — but no end-to-end test of a full interactive signing round flowing through it. This adds that.ninteractive signing runners are wired overnrealpkg/netBroadcastChannel buses (one operator per seat, all on one in-memory network), each driving the deterministic fake engine, completing a whole round across the production transport adapter rather than the in-process test bus. It exercises:RunnerMessagetype (commitments, signing package, shares),Two cases:
TestInteractiveSigningRunner_NetTransport_FullIncludedRound): group size == threshold == 2, every seat signs.TestInteractiveSigningRunner_NetTransport_ThresholdSubsetRound): group size 3, threshold 2 — the coordinator finalizes over a t-subset and the remaining committed seat observes, so the RFC-21 Phase 7.3 subset/observer flow is validated across the real transport too.Why
This is the explicit prerequisite for retiring the coarse path ("don't delete coarse until real transport passes multi-node testing"). It's un-gated (no
-traudit dependency — fake engine, no real FROST crypto; the engine suite covers the crypto), and it raises confidence in the merged transport adapter before any production cutover.Scope
Test-only,
frost_native(pre-prod) tag; no production behavior change. The standardclient-*CI does not buildfrost_nativetags, so this is validated locally: default +frost_nativebuild/vet, and the new tests under-race, plus the fullpkg/frost/signingfrost_native -racesuite (no regression), gofmt clean.🤖 Generated with Claude Code