Skip to content

feat: add ark-frost-sample showcasing FROST external signer - #262

Draft
bonomat wants to merge 1 commit into
feat/external-signerfrom
feat/frost-sample
Draft

feat: add ark-frost-sample showcasing FROST external signer#262
bonomat wants to merge 1 commit into
feat/external-signerfrom
feat/frost-sample

Conversation

@bonomat

@bonomat bonomat commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

Sample CLI demonstrating the new ExternalSigner trait (stacked on feat/external-signer): an Ark wallet whose key is a FROST 2-of-3 threshold multisig (RFC 9591, via frost-secp256k1-tr).

Three actors — alice, bob and clair — run distributed key generation so no party ever holds the full secret key. The Arkade address is derived from the x-only group public key, so to the Ark server the wallet is indistinguishable from a single-key wallet. Signing ceremonies are coordinated by copy-pasting base64 blobs between terminals; the aggregated result is a plain BIP340 signature.

Supported flows

  • Receive via Lightning (invoice): Boltz reverse submarine swap; claiming the VHTLC requires one signing ceremony.
  • Send via Lightning (pay): Boltz submarine swap; signing ceremonies for the Ark tx + checkpoint tx.
  • balance, offchain-address, group-info, and sign-test (ceremony dry-run without a server).

The library supports all flows through the Signer trait; this walkthrough exercises the Lightning flows (settlement is impractical with a copy-paste ceremony due to server-timed batch rounds).

See ark-frost-sample/README.md for a full regtest walkthrough.

Notes

  • publish = false; key shares / pubkey packages / swap storage are gitignored.
  • Base branch is feat/external-signer — this PR only adds the sample crate (+ workspace member and justfile module).

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: eb5976ae-2a5f-485c-8f14-946b9419dea3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/frost-sample

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@bonomat
bonomat force-pushed the feat/frost-sample branch 2 times, most recently from 4163921 to f99639b Compare July 28, 2026 11:21
@bonomat
bonomat force-pushed the feat/external-signer branch from 2ac292d to 973b2e0 Compare July 28, 2026 11:23
@bonomat
bonomat force-pushed the feat/frost-sample branch from f99639b to 826acab Compare July 28, 2026 11:23
@bonomat
bonomat force-pushed the feat/external-signer branch from 973b2e0 to df67511 Compare July 28, 2026 11:24
@bonomat
bonomat force-pushed the feat/frost-sample branch 2 times, most recently from c799b6f to 85c09a7 Compare July 28, 2026 11:34
@bonomat
bonomat force-pushed the feat/external-signer branch from 286a462 to f01e4fe Compare July 28, 2026 11:44
Sample CLI where the wallet key is a FROST 2-of-3 threshold multisig
(RFC 9591 via frost-secp256k1-tr). Three actors run distributed key
generation and coordinate signing ceremonies by pasting base64 blobs
between terminals; the group key plugs into ark-client through the new
ExternalSigner trait.

Supported: Lightning receive/send via Boltz swaps, balance,
offchain-address. Settlement, boarding and chain swaps are out of scope
(they require musig2 with the server).
@bonomat
bonomat force-pushed the feat/frost-sample branch from 85c09a7 to 2d4758c Compare July 28, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant