Commit 335ce60
feat(tbtc/signer): mirror FROST/ROAST Rust signer from tBTC monorepo
Lands the Rust signer at pkg/tbtc/signer/ alongside the existing Go DKG
coordinator. Mirrors the signer slice of tlabs-xyz/tbtc:feat/frost-schnorr-migration
(PR #10) at frozen tag frost-extraction-source-v1.
Per extraction plan v38 §3.1, the signer co-locates with keep-core
because: (a) HSM enforcement is external to signer code (standard
PKCS#11/KMIP client), doesn't force a separate audit lifecycle;
(b) coordinator coupling dominates (B-2 DKG coordinator already lives
in this repo via PR #3866); (c) TEE adoption later is reversible
without forcing a repo split.
Layout
- pkg/tbtc/signer/ — Rust crate with own Cargo.toml
- pkg/tbtc/signer/docs/ — signer + ROAST + TEE specs
- pkg/tbtc/signer/docs/formal/models/ — ROAST + TEE TLA+ models
- pkg/tbtc/signer/scripts/formal/ — ROAST vector + TLA runner
- pkg/tbtc/signer/test/vectors/ — roast-attempt-context-v1.json
Files (49 total)
- 47 mirror status (Rust source, signer docs, ROAST docs, TLA models,
test vector, etc.)
- 2 allowlisted-divergence:
- pkg/tbtc/signer/scripts/formal/check_roast_attempt_context_vectors.mjs
(path normalization to signer-repo paths)
- pkg/tbtc/signer/scripts/formal/run_tla_models.sh (MODELS_PATH env
var refactor; default pkg/tbtc/signer/docs/formal/models/)
Provenance
- Source repository: tlabs-xyz/tbtc
- Source branch: feat/frost-schnorr-migration
- Source tag (frozen): frost-extraction-source-v1
- Source commit (H): 52389bd5cccb5daeef195671feb7ca46be6e2f37
- Source manifest: extraction/frost-extraction-source-manifest.json
(manifestSha256: f7295fb738104501eb6c0c2447a42122ceb5f684c7a7c5dfb50ecb0bde3a0ea0)
- Source PR(s): #425 (tbtc-signer error codes) + the full FROST migration
series; complete list per source manifest's commit range over
tools/tbtc-signer/ and signer-adjacent docs/scripts.
Build wiring (follow-up)
This PR lands the signer source code, docs, vectors, and scripts. Rust
toolchain CI integration (cargo build/test/clippy/fmt as a separate CI
job alongside the existing Go jobs) is a follow-up — Go workspace
ignores non-Go subdirectories automatically; the cargo crate at
pkg/tbtc/signer/Cargo.toml is independently buildable.
Known TBD (resolved pre-merge)
- 2 allowlisted-divergence files have expectedTargetSha256 = <TBD> in
the source manifest. Path normalization transformations need to be
applied to make the scripts run in pkg/tbtc/signer/ context; this PR
ships the source verbatim, follow-up commits on this branch apply
the transformations before merge.
- Dual signoff required on each allowlisted-divergence entry per plan
v38 §4.2 (extraction lead + canonical repo maintainer).
Verification (pre-merge per plan v38 §7.2)
- 47 mirror files: sha256 equality between
git show frost-extraction-source-v1:<sourcePath> and this PR's content
at pkg/tbtc/signer/<targetPath>.
- 2 allowlisted-divergence files: sha256 == expectedTargetSha256
(recorded post-transformation in source manifest).
- PR-scoped rogue-file check: git diff --name-only main...HEAD only
contains files in manifest's fileMap with targetKey "signer".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 980587b commit 335ce60
49 files changed
Lines changed: 26462 additions & 0 deletions
File tree
- pkg/tbtc/signer
- benches
- docs
- formal/models
- include
- scripts
- formal
- src
- bin
- tests
- test/vectors
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments