Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
490 commits
Select commit Hold shift + click to select a range
fc7493d
Support FROST moving funds outputs
mswilkison Jun 7, 2026
df267a5
Support multi-seat FROST DKG readiness
mswilkison Jun 7, 2026
453bb9b
Use FROST wallet data for moving funds proposals
mswilkison Jun 8, 2026
deb526c
Reject legacy aliases for FROST wallet outputs
mswilkison Jun 8, 2026
d065260
Fix FROST redemption history queries
mswilkison Jun 8, 2026
343b740
Support FROST moving funds outputs (#4023)
mswilkison Jun 8, 2026
143f7c7
Merge remote-tracking branch 'origin/main' into pr3866-conflicts
mswilkison Jun 8, 2026
40289ca
Pin cross-language coordinator selection vectors
mswilkison Jun 10, 2026
b7317f2
test(frost/roast): pin cross-language coordinator selection vectors (…
mswilkison Jun 11, 2026
934d1a6
hardening(frost/roast): require accuser quorum for exclusion; overflo…
mswilkison Jun 11, 2026
a7dd330
spec(frost/roast): normative coordinator-seed derivation annex + cros…
mswilkison Jun 11, 2026
ac2356e
docs(rfc-21): Annex B — serial-attempt latency budget vs on-chain tim…
mswilkison Jun 11, 2026
f6375ba
test(frost/roast): cross-language differential corpus for the coordin…
mswilkison Jun 11, 2026
d44fa86
docs(rfc-21): Annex A — pin MessageDigest as the padded raw message, …
mswilkison Jun 11, 2026
e0ce74b
docs(frost/roast): document quorum-gate boundary behaviour and parkin…
mswilkison Jun 11, 2026
0302321
docs(frost/roast): mark shuffle-corpus regeneration as a protocol-cha…
mswilkison Jun 11, 2026
c1a17da
docs(rfc-21): scope Annex B sampling table to the legacy loop
mswilkison Jun 11, 2026
9914b78
docs(frost/roast): mark seed-vector regeneration as a protocol-change…
mswilkison Jun 11, 2026
3651a3a
test(frost/roast): pin the MaxInt32 source-seed normalization collision
mswilkison Jun 11, 2026
5fa67b1
hardening(frost/roast): verifiable blame — accuser quorum for exclusi…
mswilkison Jun 11, 2026
09f61d3
spec(frost/roast): normative coordinator-seed derivation (RFC-21 Anne…
mswilkison Jun 11, 2026
d9d64f0
test(frost/roast): 600-case cross-language differential corpus for th…
mswilkison Jun 11, 2026
e740bff
docs(rfc-21): Annex B — computed serial-attempt latency budget vs on-…
mswilkison Jun 11, 2026
4f79078
feat(frost/roast): protobuf signed-body envelopes for transition evid…
mswilkison Jun 12, 2026
ed0e27c
build: copy pkg/frost/roast/gen into the Docker generation stage
mswilkison Jun 12, 2026
44eadfe
docs(frost/roast): pin cache-slice immutability; note Dockerfile prot…
mswilkison Jun 12, 2026
b9dfffc
feat(frost/roast): protobuf signed-body envelopes for transition evid…
mswilkison Jun 12, 2026
f3c689a
feat(frost/signing): adopt the tbtc-signer init-time config FFI
mswilkison Jun 12, 2026
8cb12a0
docs(frost/signing): error-level config-mode failure log; precise sem…
mswilkison Jun 12, 2026
9de1d7c
feat(frost/signing): adopt the tbtc-signer init-time config FFI (#4041)
mswilkison Jun 12, 2026
143f96a
feat(frost/roast): retain signed equivocation evidence at detection p…
mswilkison Jun 12, 2026
156cda9
fix(frost/roast): emit snapshot-conflict evidence after releasing c.mu
mswilkison Jun 12, 2026
5fa1c19
fix(frost/roast): contain observer panics and stop aliasing the marsh…
mswilkison Jun 12, 2026
0d21adc
feat(frost/roast): retain signed equivocation evidence at detection p…
mswilkison Jun 12, 2026
e53b97d
feat(tbtc/clientinfo): implement RFC-21 Annex B implied-f liveness al…
mswilkison Jun 12, 2026
5bf76f9
feat(frost/signing): terminate on unmet init-config demand
mswilkison Jun 12, 2026
b79d40c
docs(rfc-21): record Phase 6 completion and home the readiness manifest
mswilkison Jun 12, 2026
d119fbd
fix(clientinfo): publish liveness gauges under the tracker mutex
mswilkison Jun 12, 2026
93b37d3
docs(frost): use the exported performance_-prefixed gauge names
mswilkison Jun 12, 2026
b3bab0b
fix(frost/signing): point the incomplete-registration fatal at the cause
mswilkison Jun 12, 2026
208d254
feat(frost/signing): terminate on unmet init-config demand (#4045)
mswilkison Jun 12, 2026
83aa732
feat(tbtc/clientinfo): RFC-21 Annex B implied-f liveness alerting (#4…
mswilkison Jun 12, 2026
d4dac93
docs(rfc-21): record Phase 6 completion; home the readiness manifest …
mswilkison Jun 12, 2026
8d335ba
feat(frost/roast): Phase 7.2b-2 signed signing-package envelope (wire)
mswilkison Jun 14, 2026
0ae2f79
fix(frost/roast): reject out-of-range coordinator_id in signing package
mswilkison Jun 14, 2026
7279cce
fix(frost/roast): domain-separate signing-package signatures (P1)
mswilkison Jun 14, 2026
7ec1057
fix(frost/roast): bound signing-package envelope before allocating (P2)
mswilkison Jun 14, 2026
d01493f
feat(frost/roast): Phase 7.2b-2 coordinator-sign + member-authenticat…
mswilkison Jun 14, 2026
51eabcd
docs(frost/roast): align proto signing contract with domain separatio…
mswilkison Jun 14, 2026
6b89dd9
fix(frost/roast): harden signing-package domain separation + reset ca…
mswilkison Jun 14, 2026
877ed48
feat(frost/roast): domain-separate evidence-snapshot + transition-mes…
mswilkison Jun 14, 2026
27c06c9
docs(frost/roast): clarify domain-separation rationale (self-review)
mswilkison Jun 14, 2026
4a47cb6
docs(frost/roast): align evidence proto + RFC-21 with tagged signatur…
mswilkison Jun 14, 2026
fa5b4dc
fix(frost/roast): prime signable-bytes cache in Unmarshal to avoid ve…
mswilkison Jun 14, 2026
a2d888e
fix(frost/roast): prime signing-package signable cache in Unmarshal (…
mswilkison Jun 14, 2026
d65ac91
feat(frost/roast): domain-separate evidence-snapshot + transition-mes…
mswilkison Jun 14, 2026
f9eebb6
feat(frost/roast): Phase 7.2b-2 signed signing-package envelope (wire…
mswilkison Jun 14, 2026
fe126de
feat(frost/roast): Phase 7.2b-2 share-submission envelope (wire found…
mswilkison Jun 14, 2026
5d31b4a
fix(frost/roast): bind coordinator_id + cap submitter signature in sh…
mswilkison Jun 14, 2026
c481826
feat(frost/roast): Phase 7.2b-2 share-submission envelope (wire found…
mswilkison Jun 14, 2026
bf91db8
feat(frost/roast): Phase 7.2b-2 share-submission member authentication
mswilkison Jun 14, 2026
eaf89f2
fix(frost/roast): validate auth inputs before trusting fields (review)
mswilkison Jun 14, 2026
aa6ad11
feat(frost/roast): Phase 7.2b-2 share-submission member authenticatio…
mswilkison Jun 14, 2026
e26bd6f
feat(frost/roast): Phase 7.2b-2 round-2 blame-input collector (founda…
mswilkison Jun 14, 2026
5e8a345
fix(frost/roast): bind shares + detect equivocation by body hash, not…
mswilkison Jun 14, 2026
8efa482
fix(frost/roast): reject nil inputs instead of panicking (review)
mswilkison Jun 14, 2026
3373ad4
fix(frost/roast): nil-guard Marshal/Unmarshal receivers (review)
mswilkison Jun 14, 2026
fdbaf84
feat(frost/roast): Phase 7.2b-2 round-2 blame-input collector (founda…
mswilkison Jun 14, 2026
a00e27e
feat(frost/roast): Phase 7.2b-2 round-2 share collection (RecordShare…
mswilkison Jun 14, 2026
caadf3e
fix(frost/roast): membership pre-auth gate + narrow share-conflict sc…
mswilkison Jun 15, 2026
7fc6024
fix(frost/roast): retain divergent shares as blame evidence, not drop…
mswilkison Jun 15, 2026
55182bd
feat(frost/roast): Phase 7.2b-2 round-2 share collection (RecordShare…
mswilkison Jun 15, 2026
8c6aef2
feat(frost/roast): Phase 7.2b-4a candidate-culprit blame classifier
mswilkison Jun 15, 2026
8f8e5bf
fixup(frost/roast): tri-state Round2ShareVerifier (fold Gemini P2 on …
mswilkison Jun 15, 2026
3dcaf5b
Phase 7.2b-4a: candidate-culprit blame classifier (#4063)
mswilkison Jun 15, 2026
7281087
feat(frost/roast): Phase 7.2b-4b-i surface coordinator equivocation a…
mswilkison Jun 15, 2026
7313a03
refactor(frost/roast): pivot 7.2b-4b to proof-carrying surface (Coord…
mswilkison Jun 15, 2026
3b9f99b
proto(frost/roast): add coordinator_package_proofs to LocalEvidenceSn…
mswilkison Jun 15, 2026
cb4307e
docs(frost/roast): fix stale conflictingSigningPackageEnvelope commen…
mswilkison Jun 15, 2026
e3eb0ce
Phase 7.2b-4b: surface coordinator-signed package proofs (collector) …
mswilkison Jun 15, 2026
a5b2d7d
feat(frost/roast): carry coordinator package proofs in LocalEvidenceS…
mswilkison Jun 15, 2026
5b4b656
fix(frost/roast): pre-allocation byte caps on snapshot/bundle Unmarsh…
mswilkison Jun 15, 2026
128b58d
Phase 7.2b-4b PR2: carry coordinator package proofs in LocalEvidenceS…
mswilkison Jun 15, 2026
1cdc1bd
feat(frost/roast): Phase 7.2b-4b PR3 - instant coordinator-equivocati…
mswilkison Jun 15, 2026
72f06ae
Phase 7.2b-4b PR3: instant coordinator-equivocation exclusion in Next…
mswilkison Jun 15, 2026
3c490fb
Phase 7.2b-4: engine VerifySignatureShare FFI bridge (cgo)
mswilkison Jun 16, 2026
3a40f06
Fold #4069 self-review: test the decoder's malformed-JSON error path
mswilkison Jun 16, 2026
e7b1caf
Phase 7.2b-4: engine VerifySignatureShare FFI bridge (cgo) (#4069)
mswilkison Jun 16, 2026
f1e5878
Phase 7.2b-4: engine-backed Round2ShareVerifier (concrete blame seam)
mswilkison Jun 16, 2026
add4b89
Fold #4070 review: fix frost_native test build (P1) + share-package b…
mswilkison Jun 16, 2026
48e8bbd
Phase 7.2b-4: engine-backed Round2ShareVerifier (concrete blame seam)…
mswilkison Jun 16, 2026
3212528
Phase 7.3 PR1: interactive signing-session cgo bridge (open/round1/ro…
mswilkison Jun 16, 2026
b70c944
Fold #4072 review: 0-based RFC -> 1-based wire attempt number (P2) + …
mswilkison Jun 16, 2026
2678d8d
Phase 7.3 PR1: interactive signing-session cgo bridge (open/round1/ro…
mswilkison Jun 16, 2026
7a60dc9
Phase 7.3 PR1b: interactive_aggregate cgo bridge + candidate-culprit …
mswilkison Jun 16, 2026
d0edfef
Phase 7.3 PR1b: interactive_aggregate cgo bridge + candidate-culprit …
mswilkison Jun 16, 2026
7d6e2db
Phase 7.3: Coordinator.MarkSucceeded (success transition; no spurious…
mswilkison Jun 16, 2026
90f310a
Phase 7.3: Coordinator.MarkSucceeded (success transition; no spurious…
mswilkison Jun 16, 2026
456ac9a
Phase 7.3 PR3a-i: runner harness foundation (ActiveRoastAttempt + in-…
mswilkison Jun 16, 2026
8120b82
Fold #4075 review: enforce ActiveRoastAttempt DKG-key consistency + c…
mswilkison Jun 16, 2026
3ba8ee6
Fold #4075 re-review: snapshot bus payload per delivery (P2 aliasing)
mswilkison Jun 16, 2026
765062b
Phase 7.3 PR3a-i: runner harness foundation (ActiveRoastAttempt + in-…
mswilkison Jun 16, 2026
7a1b0b5
Phase 7.3 PR3a-ii (runner, part 1): engine interface + programmable fake
mswilkison Jun 16, 2026
e1d91be
Phase 7.3 PR3a-ii (runner, part 2): happy-path orchestration + multi-…
mswilkison Jun 16, 2026
202496c
Fold #4076 review: harden runner collection loops (Gemini + Codex P1/P2)
mswilkison Jun 16, 2026
12b3d2e
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
f544c02
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
608809a
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
4ec8281
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
95985c1
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
9cca150
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 16, 2026
89d627c
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 17, 2026
4df818a
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 17, 2026
edf6472
fixup! frost(7.3): happy-path interactive signing runner
mswilkison Jun 17, 2026
d26eb29
Phase 7.3 PR3a-ii: happy-path interactive signing runner (multi-node,…
mswilkison Jun 17, 2026
7aa5ea4
frost(7.3): Go cgo bridge for DeriveInteractiveAttemptContext
mswilkison Jun 17, 2026
60b3d54
frost(7.3): reject frost-identifier/participant count mismatch in decode
mswilkison Jun 17, 2026
2612b6b
frost(7.3): bind each decoded FROST identifier to its participant (Co…
mswilkison Jun 17, 2026
9dc0f3a
Phase 7.3: Go cgo bridge for DeriveInteractiveAttemptContext (#4078)
mswilkison Jun 17, 2026
7264be6
frost(7.3): wire the runner to engine-derived attempt context (retire…
mswilkison Jun 17, 2026
9697058
frost(7.3): compare the engine coordinator in uint16 space (self-review)
mswilkison Jun 17, 2026
0e99b54
frost(7.3): make sameMemberSet reject duplicates (self-review)
mswilkison Jun 17, 2026
0ff355b
Phase 7.3: wire the runner to engine-derived attempt context (retire …
mswilkison Jun 17, 2026
5572e5e
frost(7.3): pkg/net transport adapter for the runner bus (foundation)
mswilkison Jun 17, 2026
875383b
frost(7.3): net/local integration tests for the runner bus adapter
mswilkison Jun 17, 2026
3dd9a77
frost(7.3): reject out-of-range sender ids + don't suppress dropped m…
mswilkison Jun 17, 2026
394be69
frost(7.3): correct the overflow-drop rationale; size streams above h…
mswilkison Jun 17, 2026
89dd1a2
Phase 7.3: pkg/net transport adapter for the interactive signing runn…
mswilkison Jun 17, 2026
256dc00
feat(frost): wire gated single-attempt interactive ROAST signing into…
mswilkison Jun 17, 2026
7c71f83
fix(frost): thread the per-Execute attempt handle into the interactiv…
mswilkison Jun 17, 2026
a10b031
docs(frost): mark the interactive engine provider deferral at the cgo…
mswilkison Jun 18, 2026
4828159
feat(frost): wire gated single-attempt interactive ROAST signing into…
mswilkison Jun 18, 2026
c740573
feat(frost): stable member-scoped ROAST session key + transition reco…
mswilkison Jun 18, 2026
cb61990
fix(frost): fold Codex review (#4082) - drive binds stable id; select…
mswilkison Jun 18, 2026
3d1e9c0
fix(frost): re-scope PR2a - defer ROAST selector consumption to PR2b …
mswilkison Jun 18, 2026
86d2cdb
fix(frost): fold Codex round 3 (#4082) - key-path startBlock + coordi…
mswilkison Jun 18, 2026
a589f78
feat(frost): stable member-scoped ROAST session key + transition reco…
mswilkison Jun 18, 2026
e22e610
feat(frost): member-level participant selection (7.3 PR2b-1a)
mswilkison Jun 18, 2026
585b704
feat(frost): member-level participant selection (7.3 PR2b-1a) (#4083)
mswilkison Jun 18, 2026
f4c6a15
feat(frost): observe-attempt foundation for ROAST transitions (7.3 PR…
mswilkison Jun 18, 2026
c12df14
feat(frost): ROAST transition exchange engine (7.3 PR2b-1b C2 part 1)
mswilkison Jun 18, 2026
ceb7b1f
feat(frost): wire ROAST transition exchange into the signing loop (7.…
mswilkison Jun 18, 2026
3eb0e96
feat(frost): activate ROAST member-level selection with fail-closed (…
mswilkison Jun 18, 2026
bef131e
chore(frost): retire cleanup transition producer + wire registry swee…
mswilkison Jun 18, 2026
73e60a2
fix(frost): parking-aware attempt context (7.3 PR2b-1b review fix, B1…
mswilkison Jun 18, 2026
1d1cc62
fix(frost): decouple ROAST attempt number + thread transient parking …
mswilkison Jun 18, 2026
b5ca70b
fix(frost): lost-sync detection + clear-on-success (7.3 PR2b-1b revie…
mswilkison Jun 18, 2026
78e9bef
fix(frost): review-pass hardening (7.3 PR2b-1b)
mswilkison Jun 18, 2026
3a6da25
fix(frost): key active signing attempt off committed ROAST number (7.…
mswilkison Jun 19, 2026
ca542b5
test(frost): cover active-attempt parking thread + clarify Number doc…
mswilkison Jun 19, 2026
557ddb9
fix(frost): gate ROAST-active on transition producer availability (7.…
mswilkison Jun 19, 2026
cf14464
test(frost): skip active-ROAST tests without a transition producer (7…
mswilkison Jun 19, 2026
292d3e6
feat(frost): ROAST transition distribution + member-level selection (…
mswilkison Jun 19, 2026
4829c92
feat(frost): member-keyed ROAST coordinator registry (7.3 PR2b-1.5, f…
mswilkison Jun 19, 2026
3b0017c
feat(frost): thread per-member ROAST deps through observe/exchange/se…
mswilkison Jun 19, 2026
e031eca
test(frost): multi-seat elected-seat aggregation acceptance test (7.3…
mswilkison Jun 19, 2026
649ca28
test(frost): non-vacuous multi-seat test + review folds (7.3 PR2b-1.5)
mswilkison Jun 19, 2026
fa9a5c3
fix(frost): process-level ROAST activation + fail-closed on partial r…
mswilkison Jun 19, 2026
58c20ef
fix(frost): disable coarse evidence path under multi-seat (7.3 PR2b-1…
mswilkison Jun 19, 2026
36427ce
test(tbtc): tag signer-material resolver tests to their build flavour
mswilkison Jun 19, 2026
e2bd437
fix(frost): fail closed on partial multi-seat orchestration (7.3 PR2b…
mswilkison Jun 19, 2026
7322edc
fix(frost): classify multi-seat orchestration fail-closed as terminal…
mswilkison Jun 19, 2026
d9dc0fc
test(tbtc): tag signer-material resolver tests to their build flavour…
mswilkison Jun 19, 2026
2cc36ef
feat(frost): multi-seat per-seat ROAST coordinator deps (7.3 PR2b-1.5…
mswilkison Jun 19, 2026
df4d5fb
feat(frost): member-key the ROAST session-handle binding (7.3 PR2b-2 …
mswilkison Jun 19, 2026
5aa9953
fix(frost): submit reject/conflict-only ROAST evidence snapshots (PR2…
mswilkison Jun 19, 2026
8c369c3
feat(frost): member-key the ROAST session-handle binding (7.3 PR2b-2 …
mswilkison Jun 19, 2026
b3ff29a
feat(frost): route coarse ROAST evidence into the transition bundle (…
mswilkison Jun 19, 2026
c3aa36c
feat(frost): route coarse ROAST evidence into the transition bundle (…
mswilkison Jun 19, 2026
79014c9
feat(frost): carry coordinator-equivocation proofs into the bundle (7…
mswilkison Jun 19, 2026
3f091da
feat(frost): carry coordinator-equivocation proofs into the bundle (7…
mswilkison Jun 19, 2026
64a727c
test(frost): fault-injection coverage for the ROAST blame bridge (7.3…
mswilkison Jun 19, 2026
33fee4b
test(frost): fault-injection coverage for the ROAST blame bridge (7.3…
mswilkison Jun 19, 2026
96ae5a3
feat(frost): wire interactive share-verification blame into the bundl…
mswilkison Jun 19, 2026
0f6e5f9
feat(frost): wire interactive share-verification blame into the bundl…
mswilkison Jun 19, 2026
40f7d36
feat(frost): carry the chosen signing subset in the signed package (7…
mswilkison Jun 19, 2026
80cf249
feat(frost): carry the chosen signing subset in the signed package (7…
mswilkison Jun 19, 2026
c7524ad
feat(frost): finalize interactive signing over the first t responsive…
mswilkison Jun 19, 2026
2d915a7
fix(frost): retain included non-signers' divergent shares as equivoca…
mswilkison Jun 19, 2026
9a2d113
feat(frost): finalize interactive signing over the first t responsive…
mswilkison Jun 19, 2026
0671d99
feat(frost): conclude the oversized signing done check by signature q…
mswilkison Jun 19, 2026
e179e1d
test(frost): multi-node interactive signing e2e over the real pkg/net…
mswilkison Jun 19, 2026
33bae67
feat(frost): register the cgo engine as the interactive signing provi…
mswilkison Jun 19, 2026
a533c78
test(frost): make the interactive-provider tests order-independent (f…
mswilkison Jun 19, 2026
79ea845
feat(frost): conclude the signing done check on the t-subset (7.3 t-o…
mswilkison Jun 19, 2026
eb35661
test(frost): multi-node interactive signing e2e over the real pkg/net…
mswilkison Jun 19, 2026
054f51b
feat(frost): register the cgo engine as the interactive signing provi…
mswilkison Jun 20, 2026
67b9530
test(frost): real-cgo interactive signing e2e via a DKG-persisted key…
mswilkison Jun 20, 2026
fc84a7c
test(frost): isolate signer state for the real-cgo interactive e2e (f…
mswilkison Jun 20, 2026
23ec717
test(frost): skip the real-cgo e2e on any unavailable FFI symbol, not…
mswilkison Jun 20, 2026
9934a63
test(frost): validate one signer's real-crypto interactive contributi…
mswilkison Jun 20, 2026
76f686a
test(frost): state precisely what the real-cgo interactive test does …
mswilkison Jun 20, 2026
d9f9042
test(frost): make the real-cgo interactive test repeatable in-process…
mswilkison Jun 20, 2026
f4953b8
test(frost): real-cgo interactive signing — single-signer real-crypto…
mswilkison Jun 20, 2026
04c0459
test(frost): real-cgo multi-seat interactive 2-of-3 aggregate in one …
mswilkison Jun 20, 2026
a13e150
test(frost): skip the multi-seat e2e on a pre-fix lib + pin the attem…
mswilkison Jun 20, 2026
a9aed42
feat(frost): no-coarse-fallback mode for coarse-path retirement (defa…
mswilkison Jun 20, 2026
9816ccf
test(frost): real-cgo multi-seat interactive 2-of-3 aggregate in one …
mswilkison Jun 20, 2026
57fa35a
fix(frost): enforce no-coarse-fallback at the single coarse-invocatio…
mswilkison Jun 20, 2026
5fae0df
fix(frost): close outer native fallbacks + classify the refusal terminal
mswilkison Jun 20, 2026
e719210
fix(frost): fail closed at the legacy + native backends under the no-…
mswilkison Jun 21, 2026
d1589fa
feat(frost): no-coarse-fallback mode for coarse-path retirement (defa…
mswilkison Jun 21, 2026
04f9958
test(frost): real-crypto multi-node e2e — runners over real pkg/net +…
mswilkison Jun 21, 2026
556997d
ci(frost): pre-merge cgo gate that builds the pinned lib + runs real-…
mswilkison Jun 21, 2026
f625b73
feat(frost): interactive-signing observability counters (handoff §6.3)
mswilkison Jun 21, 2026
8c08d23
feat(frost): expose the interactive-signing + roast-retry counters at…
mswilkison Jun 21, 2026
8747c82
feat(frost): real-crypto multi-node e2e + pre-merge cgo CI gate (hand…
mswilkison Jun 21, 2026
b439903
feat(frost): interactive-signing observability counters (handoff §6.3…
mswilkison Jun 21, 2026
6447344
feat(frost): fail closed on an incompatible libfrost_tbtc FFI contrac…
mswilkison Jun 22, 2026
347d5ea
fix(frost): ABI incompatibility must not fall back to legacy signing
mswilkison Jun 22, 2026
a463dab
ci(frost): run the ABI fail-closed test in the cgo gate
mswilkison Jun 22, 2026
f64afe7
fix(frost): reject ABI version payloads missing required fields
mswilkison Jun 22, 2026
402911a
feat(frost): fail closed on an incompatible libfrost_tbtc FFI contrac…
mswilkison Jun 22, 2026
532453b
Merge remote-tracking branch 'origin/main' into pr-3866-conflict-reso…
mswilkison Jun 22, 2026
97d32d3
Retain ROAST self-snapshot mutation evidence
mswilkison Jun 22, 2026
0878f58
Retain ROAST self-snapshot mutation evidence (#4106)
mswilkison Jun 22, 2026
1bd88af
test(frost): real-crypto multi-process libp2p e2e — shape-B + distrib…
mswilkison Jun 23, 2026
674afbe
fix(frost): propagate native skip from multiproc tests
mswilkison Jun 26, 2026
6c567c2
fix(frost): synchronize multiproc e2e startup
mswilkison Jun 26, 2026
4530b29
fix(frost): harden the cgo native-signer FFI boundary
mswilkison Jun 26, 2026
35a42c3
fix(frost/roast): evaluate attempt feasibility against permanent excl…
mswilkison Jun 26, 2026
a459612
fix(tbtc): gate native BuildTaprootTx on the transaction being all-Ta…
mswilkison Jun 26, 2026
c04bc77
refactor(retry): move duplicated participant-selection into a shared …
mswilkison Jun 26, 2026
136ebd0
feat(frost/roast): attribute lost-sync triggers; document permissione…
mswilkison Jun 26, 2026
18b7a09
fix(tbtc): monitor the ECDSA and FROST sortition pools independently
mswilkison Jun 27, 2026
550b621
fix(electrum): refresh fulcrum integration endpoint
mswilkison Jun 27, 2026
e96b14f
test(frost): real-crypto multi-process libp2p e2e — shape-B + distrib…
mswilkison Jun 27, 2026
7037b81
docs(frost/roast): correct the ErrAttemptInfeasible contract for tran…
mswilkison Jun 27, 2026
5fb41ba
fix(cmd): wire the FROST sortition pool monitoring opt-out into CLI f…
mswilkison Jun 27, 2026
e3eef0b
fix(ethereum): route GetWallet's wallet-ID fallback by scheme, not er…
mswilkison Jun 27, 2026
1f857b2
Merge branch 'feat/frost-schnorr-migration-scaffold' into fix/frost-f…
mswilkison Jun 27, 2026
7fe456c
Merge branch 'feat/frost-schnorr-migration-scaffold' into fix/native-…
mswilkison Jun 27, 2026
d902f73
Merge branch 'feat/frost-schnorr-migration-scaffold' into fix/dedup-r…
mswilkison Jun 27, 2026
7123166
Merge branch 'feat/frost-schnorr-migration-scaffold' into fix/roast-l…
mswilkison Jun 27, 2026
c741008
fix(frost): harden the cgo native-signer FFI boundary (#4115)
mswilkison Jun 27, 2026
d47cde3
fix(frost/roast): evaluate attempt feasibility against permanent excl…
mswilkison Jun 27, 2026
1d4e2fb
fix(tbtc): gate native BuildTaprootTx on the transaction being all-Ta…
mswilkison Jun 27, 2026
d97b8fb
refactor(retry): move duplicated participant-selection into a shared …
mswilkison Jun 27, 2026
f823ad1
feat(frost/roast): attribute lost-sync triggers; document permissione…
mswilkison Jun 27, 2026
8f85add
fix(tbtc): monitor the ECDSA and FROST sortition pools independently …
mswilkison Jun 27, 2026
71ce32b
fix(ethereum): route GetWallet's wallet-ID fallback by scheme, not er…
mswilkison Jun 27, 2026
1c434a6
ci: use writable git config for yarn installs
mswilkison Jul 1, 2026
c8541aa
hardening(frost): zeroize DKG FFI secret buffers (parity with Sign path)
mswilkison Jul 1, 2026
2096160
ci(frost): compile + test the frost_roast_retry activation path in CI
mswilkison Jul 1, 2026
cd6c483
test(frost): skip the fail-closed registration test when libfrost_tbt…
mswilkison Jul 2, 2026
275b508
hardening(frost): zeroize DKG FFI secret buffers (parity with Sign pa…
mswilkison Jul 2, 2026
8b97d7f
ci(frost): compile + test the frost_roast_retry activation path in CI…
mswilkison Jul 2, 2026
310f85c
test(pr3866): in-process coordinator↔chain FROST DKG end-to-end
mswilkison Jul 2, 2026
6312a9a
test(pr3866): fix P1 skip + P2 recovery race per review
mswilkison Jul 2, 2026
24bb1b5
test(pr3866): in-process coordinator↔chain FROST DKG end-to-end (#4132)
mswilkison Jul 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ token-tracker/
**/gen/**/*.go
!**/gen/gen.go
!**/gen/cmd/cmd.go
!pkg/chain/ethereum/frost/gen/abi/*.go
!pkg/chain/ethereum/frost/gen/validatorabi/*.go
!pkg/chain/ethereum/tbtc/gen/abi/*.go
!pkg/chain/ethereum/tbtc/gen/contract/*.go
!pkg/chain/ethereum/tbtc/gen/cmd/*.go

# Legacy V1 contracts bindings.
# We won't generate new bindings in the docker build process, but use the existing ones.
Expand Down
6 changes: 5 additions & 1 deletion .github/actions/install-yarn-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,18 @@ runs:
export YARN_ENABLE_HARDENED_MODE=0
corepack enable
yarn --version
SAFE_GIT_HOME="${RUNNER_TEMP:-/tmp}/git-clean-home"
SAFE_GIT_CONFIG="${SAFE_GIT_HOME}/.gitconfig"
mkdir -p "$SAFE_GIT_HOME"
touch "$SAFE_GIT_CONFIG"
unset_args=()
while IFS='=' read -r key _; do
case "$key" in
GIT_CONFIG_*) unset_args+=("-u" "$key") ;;
esac
done < <(env)
env "${unset_args[@]}" \
GIT_CONFIG_GLOBAL="$SAFE_GIT_CONFIG" \
GIT_CONFIG_NOSYSTEM=1 \
GIT_CONFIG_SYSTEM=/dev/null \
GIT_CONFIG_COUNT=0 \
yarn install --immutable
10 changes: 6 additions & 4 deletions .github/actions/setup-git-for-yarn/action.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: Setup Git for Yarn (git dependencies)
description: >
Configure Git so Yarn can clone dependencies (e.g. thesis/eslint-config) on
GitHub-hosted runners. Sets GIT_CONFIG_GLOBAL and GIT_CONFIG_NOSYSTEM to avoid
broken system config ("invalid key core.autocrlf" / unable to write config).
GitHub-hosted runners. Sets GIT_CONFIG_GLOBAL to a writable temporary file and
GIT_CONFIG_NOSYSTEM to avoid broken system config ("invalid key core.autocrlf"
/ unable to write config).
runs:
using: composite
steps:
Expand All @@ -14,9 +15,11 @@ runs:
WRAPPER_DIR="${RUNNER_TEMP:-/tmp}/git-clean-bin"
SAFE_HOME="${SAFE_TMP}/git-clean-home"
SAFE_XDG_CONFIG_HOME="${SAFE_TMP}/git-clean-xdg-config"
SAFE_GLOBAL_CONFIG="${SAFE_HOME}/.gitconfig"
REAL_GIT="$(command -v git)"

mkdir -p "$WRAPPER_DIR" "$SAFE_HOME" "$SAFE_XDG_CONFIG_HOME"
touch "$SAFE_GLOBAL_CONFIG"
printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
Expand All @@ -28,9 +31,8 @@ runs:
'done < <(env)' \
"export HOME=\"${SAFE_HOME}\"" \
"export XDG_CONFIG_HOME=\"${SAFE_XDG_CONFIG_HOME}\"" \
'export GIT_CONFIG_GLOBAL=/dev/null' \
"export GIT_CONFIG_GLOBAL=\"${SAFE_GLOBAL_CONFIG}\"" \
'export GIT_CONFIG_NOSYSTEM=1' \
'export GIT_CONFIG_SYSTEM=/dev/null' \
'export GIT_CONFIG_COUNT=0' \
"if ! pwd >/dev/null 2>&1; then cd \"${SAFE_TMP}\"; fi" \
"exec \"${REAL_GIT}\" \"\$@\"" \
Expand Down
49 changes: 49 additions & 0 deletions .github/workflows/client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,55 @@ jobs:
install-go: false
checks: "-SA1019"

# Compiles and unit-tests the interactive FROST + ROAST retry coordinator path,
# which lives behind the `frost_roast_retry` (and `frost_native`) build tags. The
# default untagged build the other jobs run compiles only the `!frost_roast_retry`
# no-op stubs, so without this job the entire ROAST retry state machine (liveness +
# evidence/blame) and the ~30 `frost_native` unit tests never compile or run in CI.
#
# This is the mock-FFI path: it exercises the Go coordinator flow with cgo DISABLED,
# so it needs neither libfrost_tbtc (the Rust signer lib) nor Docker. The real-crypto
# cgo variant of these tags is gated separately by frost-cgo-integration.yml.
client-frost-roast-retry:
needs: client-detect-changes
if: |
github.event_name == 'push'
|| needs.client-detect-changes.outputs.path-filter == 'true'
runs-on: ubuntu-latest
env:
CGO_ENABLED: "0"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: "go.mod"

- name: Build the ROAST retry coordinator path (mock FFI, no cgo)
run: |
# `frost_roast_retry` alone compiles the coordinator registry / evidence /
# blame flow against mock producers; adding `frost_native` also compiles the
# native-engine <-> retry integration files (mock FFI engine, still no lib).
go build -tags "frost_roast_retry" ./...
go build -tags "frost_native frost_roast_retry" ./...

- name: Unit-test the tagged path (mock FFI, no cgo)
run: |
# These three tag sets cover every non-cgo tagged test file in pkg/frost and
# pkg/tbtc:
# frost_native -> frost_native (and && !frost_roast_retry)
# frost_roast_retry -> frost_roast_retry (and && !frost_native)
# frost_native frost_roast_retry -> the intersection integration tests
# The `frost_native frost_tbtc_signer cgo` real-crypto tests are NOT run here;
# they are covered by frost-cgo-integration.yml.
for tags in \
"frost_native" \
"frost_roast_retry" \
"frost_native frost_roast_retry"; do
echo "::group::go test -tags \"$tags\""
go test -tags "$tags" -count=1 -timeout 25m ./pkg/frost/... ./pkg/tbtc/...
echo "::endgroup::"
done

client-integration-test:
needs: [client-detect-changes, electrum-integration-detect-changes, client-build-test-publish]
if: |
Expand Down
138 changes: 138 additions & 0 deletions .github/workflows/frost-cgo-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: FROST cgo integration

# Pre-merge validation gate for the interactive FROST cgo path (RFC-21 Phase 7.3).
#
# The rest of CI builds NONE of the `frost_native frost_tbtc_signer cgo` tags, so the
# real-crypto interactive tests (which link libfrost_tbtc, built from the Rust signer
# crate) are otherwise validated only locally and can silently rot. This job builds the
# lib from a PINNED signer source (ci/frost-signer-pin.env) and runs the cgo-tagged tests
# against it with skips FORBIDDEN (KEEP_CORE_FROST_REQUIRE_CGO=true), so a stale/missing/
# unloadable lib fails the job instead of quietly dropping coverage.
#
# The tag set also includes `frost_roast_retry`, so the ROAST retry coordinator flow is
# compiled and tested against real crypto here (the mock-FFI variant runs in client.yml),
# and the job smoke-builds the full activation artifact via `make build-frost`. The
# non-cgo tagged build/test coverage lives in the client.yml `client-frost-roast-retry`
# job; together they cover the tag matrix that the default untagged CI never touches.
#
# The Go interactive code and the signer crate currently live on separate branches, so
# this checks the pinned mirror commit out into a side path and builds from there. After
# the branches merge, replace the cross-branch checkout with an in-tree cargo build and
# keep the gate.

on:
pull_request:
paths:
- "pkg/frost/**"
- "pkg/tbtc/**"
- "pkg/net/**"
- "go.mod"
- "go.sum"
- "Makefile"
- "ci/frost-signer-pin.env"
- ".github/workflows/frost-cgo-integration.yml"
workflow_dispatch: {}

jobs:
frost-cgo-integration:
runs-on: ubuntu-latest
steps:
- name: Check out the Go branch
uses: actions/checkout@v4

- name: Read the pinned signer source ref
id: pin
run: |
set -euo pipefail
# shellcheck disable=SC1091
source ci/frost-signer-pin.env
if [ -z "${FROST_SIGNER_MIRROR_REF:-}" ]; then
echo "FROST_SIGNER_MIRROR_REF is not set in ci/frost-signer-pin.env"
exit 1
fi
echo "ref=${FROST_SIGNER_MIRROR_REF}" >> "$GITHUB_OUTPUT"
echo "Pinned tbtc-signer source: ${FROST_SIGNER_MIRROR_REF}"

- name: Check out the pinned signer source
uses: actions/checkout@v4
with:
ref: ${{ steps.pin.outputs.ref }}
path: _signer-mirror

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"

- name: Build libfrost_tbtc from the pinned source
env:
CARGO_TARGET_DIR: ${{ github.workspace }}/_frost-target
run: |
set -euo pipefail
test -f _signer-mirror/pkg/tbtc/signer/Cargo.toml || {
echo "signer crate not found at the pinned ref (_signer-mirror/pkg/tbtc/signer)"; exit 1; }
cargo build --manifest-path _signer-mirror/pkg/tbtc/signer/Cargo.toml
lib="${CARGO_TARGET_DIR}/debug/libfrost_tbtc.so"
test -f "$lib" || { echo "libfrost_tbtc.so not found at $lib"; exit 1; }
echo "FROST_LIB_DIR=${CARGO_TARGET_DIR}/debug" >> "$GITHUB_ENV"

- name: Verify the engine ABI symbols are exported
run: |
set -euo pipefail
lib="${FROST_LIB_DIR}/libfrost_tbtc.so"
# A representative slice of the symbols the cgo bridge resolves via
# dlsym(RTLD_DEFAULT). A miss here means the pinned lib is stale vs. the bridge;
# fail with a clear message (the require-cgo run below would also catch it).
missing=0
for sym in \
frost_tbtc_run_dkg \
frost_tbtc_derive_interactive_attempt_context \
frost_tbtc_interactive_session_open \
frost_tbtc_interactive_session_abort \
frost_tbtc_new_signing_package \
frost_tbtc_interactive_aggregate \
frost_tbtc_verify_signature_share \
frost_tbtc_version \
frost_tbtc_abi_version; do
if ! nm -D --defined-only "$lib" | grep -q " ${sym}$"; then
echo "missing exported symbol: ${sym}"
missing=1
fi
done
test "$missing" -eq 0 || { echo "pinned libfrost_tbtc is missing required symbols"; exit 1; }

- name: Run the cgo-tagged real-crypto tests (skips forbidden)
env:
CGO_ENABLED: "1"
KEEP_CORE_FROST_REQUIRE_CGO: "true"
run: |
set -euo pipefail
# --no-as-needed keeps the DT_NEEDED on libfrost_tbtc even though the bridge
# references its symbols only via dlsym (no direct references), so the loader
# makes them resolvable at runtime; rpath lets the test binary find the .so.
export CGO_LDFLAGS="-L${FROST_LIB_DIR} -Wl,--no-as-needed -lfrost_tbtc -Wl,-rpath,${FROST_LIB_DIR}"
# Run the WHOLE tagged pkg/frost/signing suite against the linked lib, not a
# narrow -run subset. `frost_roast_retry` is added to the tag set so the ROAST
# retry coordinator flow (liveness + evidence/blame) is compiled and tested
# against real crypto here too, not only in the mock-FFI job (client.yml).
# With KEEP_CORE_FROST_REQUIRE_CGO=true a lib-unavailable would-be skip becomes
# a hard failure, so a stale/missing symbol fails the gate instead of silently
# dropping coverage. This gate is the only CI that builds the cgo tag set.
go test -tags "frost_native frost_tbtc_signer frost_roast_retry" -count=1 \
-timeout 20m \
./pkg/frost/signing/

- name: Smoke-build the FROST activation artifact (make build-frost)
env:
CGO_ENABLED: "1"
run: |
set -euo pipefail
# Proves the release/activation binary - the keep-client built with
# `frost_native frost_tbtc_signer frost_roast_retry` and linked against
# libfrost_tbtc - actually compiles and links. The default `make build` the
# release/Docker path runs ships the `!frost_roast_retry` no-op stubs; this is
# the target that produces the ROAST-retry-enabled artifact once the readiness
# manifest flips. Reuses the same lib built above (frost_lib_dir=FROST_LIB_DIR).
make build-frost frost_lib_dir="${FROST_LIB_DIR}"
test -x ./keep-client || { echo "keep-client activation binary was not produced"; exit 1; }
./keep-client --version
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ COPY ./pkg/chain/ethereum/common/gen $APP_DIR/pkg/chain/ethereum/common/gen
COPY ./pkg/chain/ethereum/ecdsa/gen $APP_DIR/pkg/chain/ethereum/ecdsa/gen
COPY ./pkg/chain/ethereum/tbtc/gen $APP_DIR/pkg/chain/ethereum/tbtc/gen
COPY ./pkg/chain/ethereum/threshold/gen $APP_DIR/pkg/chain/ethereum/threshold/gen
COPY ./pkg/frost/roast/gen $APP_DIR/pkg/frost/roast/gen
COPY ./pkg/net/gen $APP_DIR/pkg/net/gen
COPY ./pkg/tbtc/gen $APP_DIR/pkg/tbtc/gen
COPY ./pkg/tecdsa/dkg/gen $APP_DIR/pkg/tecdsa/dkg/gen
Expand Down
39 changes: 38 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ else
$(foreach module,$(modules),$(call get_npm_package,$(module),$(environment)))
endif

# NOTE: a new *.proto package must also be added to the gen-directory COPY
# allowlist in the Dockerfile: the image strips committed **/gen/**/*.go
# (.dockerignore) and regenerates protobufs in-image, and make generate only
# sees gen directories copied before it runs.
proto_files := $(shell find ./pkg -name '*.proto')
proto_targets := $(proto_files:.proto=.pb.go)

Expand Down Expand Up @@ -125,6 +129,39 @@ build:
$(info Building Go code)
$(call go_build_cmd,.,$(app_name))

# FROST activation build.
#
# Produces the keep-client binary with the interactive FROST + ROAST retry
# coordinator path compiled in (build tags `frost_native frost_tbtc_signer
# frost_roast_retry`). The default `build` target above compiles the
# `!frost_roast_retry` no-op stubs, so the released image ships with the ROAST
# retry coordinator disabled; this target is the artifact that actually enables
# it once the readiness manifest flips (see
# docs/development/frost-roast-retry-rollout.adoc).
#
# Unlike `build` this is a cgo build that links libfrost_tbtc (the Rust signer
# lib built from the tbtc-signer crate). Point `frost_lib_dir` at the directory
# holding the built `libfrost_tbtc.{so,dylib}`. The CGO_LDFLAGS mirror the
# frost-cgo-integration CI workflow: `--no-as-needed` keeps the DT_NEEDED entry
# even though the cgo bridge resolves the frost_tbtc_* symbols via dlsym (no
# direct references), and the rpath lets the binary find the lib at runtime.
# These are GNU-ld flags; the target is meant for the Linux CI/release toolchain.
frost_build_tags := frost_native frost_tbtc_signer frost_roast_retry

ifndef frost_lib_dir
override frost_lib_dir = $(CURDIR)/_frost-target/debug
endif

build-frost:
$(info Building Go code with the FROST activation tags [$(frost_build_tags)])
CGO_ENABLED=1 \
CGO_LDFLAGS="-L$(frost_lib_dir) -Wl,--no-as-needed -lfrost_tbtc -Wl,-rpath,$(frost_lib_dir)" \
go build \
-tags "$(frost_build_tags)" \
-ldflags "-X github.com/keep-network/keep-core/build.Version=$(version) -X github.com/keep-network/keep-core/build.Revision=$(revision) -checklinkname=0" \
-o $(app_name) \
.

platforms := linux/amd64 \
darwin/amd64

Expand All @@ -146,4 +183,4 @@ cmd-help: build
@echo '$$ $(app_name) start --help' > docs/resources/client-start-help
./$(app_name) start --help >> docs/resources/client-start-help

.PHONY: all development sepolia download_artifacts generate gen_proto build cmd-help release build_multi
.PHONY: all development sepolia download_artifacts generate gen_proto build build-frost cmd-help release build_multi
18 changes: 18 additions & 0 deletions ci/frost-signer-pin.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Pinned tbtc-signer (libfrost_tbtc) source for the frost-cgo-integration CI gate.
#
# The Go cgo bridge (pkg/frost/signing, build tags `frost_native frost_tbtc_signer`)
# resolves frost_tbtc_* symbols at runtime from libfrost_tbtc, which is built from the
# Rust signer crate. The Go interactive code and that crate currently live on SEPARATE
# branches of this repo (the Go "scaffold" branch vs. the "mirror" branch that holds
# pkg/tbtc/signer), so the gate checks out THIS exact mirror commit, builds the lib, and
# runs the cgo-tagged Go tests against it with skips FORBIDDEN.
#
# Why an explicit pin (not the mirror branch tip): the bridge skips on a stale lib that
# is missing a newer symbol. If CI tracked the moving tip, an engine/bridge drift could
# silently turn the real-crypto tests into skips (lost coverage) or break the gate for
# code nobody reviewed together. Bump this SHA deliberately, in the same PR that requires
# a newer engine ABI, so the change is reviewed as one unit.
#
# After the scaffold and mirror branches merge into one, replace the cross-branch
# checkout with an in-tree cargo build and retire this pin (keep the gate).
FROST_SIGNER_MIRROR_REF=6e3718ba00455c7a89499592ef57648c6e9b2c69
32 changes: 32 additions & 0 deletions cmd/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,36 @@ func initTbtcFlags(cmd *cobra.Command, cfg *config.Config) {
tbtc.DefaultKeyGenerationConcurrency,
"tECDSA key generation concurrency.",
)

cmd.Flags().StringVar(
&cfg.Tbtc.FrostSigningBackend,
"tbtc.frostSigningBackend",
"",
"FROST signing backend name (legacy, native, ffi). "+
"`native` allows transitional legacy fallback; `ffi` requires native execution. "+
"Empty value selects legacy.",
)

cmd.Flags().BoolVar(
&cfg.Tbtc.DisableLegacyECDSA,
"tbtc.disableLegacyECDSA",
false,
"Disable legacy ECDSA wallet DKG and pre-params generation for FROST-only deployments.",
)

cmd.Flags().BoolVar(
&cfg.Tbtc.DisableLegacySortitionPoolMonitoring,
"tbtc.disableLegacySortitionPoolMonitoring",
false,
"Disable legacy ECDSA sortition pool monitoring for FROST-only deployments.",
)

cmd.Flags().BoolVar(
&cfg.Tbtc.DisableFrostSortitionPoolMonitoring,
"tbtc.disableFrostSortitionPoolMonitoring",
false,
"Disable FROST sortition pool monitoring for operators that manage FROST pool membership out of band.",
)
}

// Initialize flags for Maintainer configuration.
Expand Down Expand Up @@ -395,5 +425,7 @@ func initDeveloperFlags(command *cobra.Command) {
initContractAddressFlag(chainEthereum.RandomBeaconContractName)
initContractAddressFlag(chainEthereum.TokenStakingContractName)
initContractAddressFlag(chainEthereum.WalletRegistryContractName)
initContractAddressFlag(chainEthereum.FrostWalletRegistryContractName)
initContractAddressFlag(chainEthereum.FrostDkgValidatorContractName)
initContractAddressFlag(chainEthereum.WalletProposalValidatorContractName)
}
Loading
Loading