BIP445: FROST Signing Protocol for BIP340 Signatures - #2070
Conversation
|
I'll fix the typos check soon |
|
I can see that GitHub's file changes view shows only one file at a time due to the large number of changes. This is because the reference implementation includes dependencies and auxiliary materials:
|
murchandamus
left a comment
There was a problem hiding this comment.
This is just a first glance, but I noticed a few issues:
murchandamus
left a comment
There was a problem hiding this comment.
Thanks for the quick turn-around. It’s on my todo list to give this a more thorough look, but it might take a bit. If you can motivate some other reviewers meanwhile, that would also be welcome.
I've shared it with most of the Bitcoin cryptographers I know and will post it on Twitter and the Bitcoin dev groups I'm part of. Hopefully that will bring in more reviewers! |
DarkWindman
left a comment
There was a problem hiding this comment.
Hi! Quite a remarkable job! We found a few minor issues, and correcting them would improve the overall specification of the BIP.
Christewart
left a comment
There was a problem hiding this comment.
As I mentioned on X i'm working on this, so you will likely see more comments in the future. Another nice-to-have would be a table of contents (example) as most other BIPs have this. Perhaps this is a limitation of the .md document vs .mediawiki. Not sure.
Yes, it's a |
Click there. ;)
|
Thank you! TIL :-) |
DarkWindman
left a comment
There was a problem hiding this comment.
A few additional minor issues and questions.
|
@DarkWindman thanks a lot for the review! I've addressed most of your review comments in a88f033. |
There was a problem hiding this comment.
From an editorial standpoint, it looks pretty good and like all the required sections are present. I have read the proposal only partially, and do not have the expertise to fully understand all aspects, so I cannot comment on the technical soundness and whether the Specification is complete and sufficient.
|
Let’s call this BIP 445. Please add an entry for your proposal in the README table, in the preamble update the BIP header to 445 and Assigned header to 2026-01-30, and update your documents file name as well as the auxiliary file directory. |
dc8729a to
289286c
Compare
|
I completed a full pass on the text. Nothing substantial and sorry again that my comments arrive that late in the process. edit: Forgot to mention a "global" nit: The text uses "signer" and "participant" interchangeable. Sticking to one term would make things a tiny bit clearer (but this may be an annoying change to make at this stage). |
|
Tysm for the detailed review.
This was fixed in the development repo recently. "Participants" refers to anyone involved in key generation, and "signers" to those participating in the current signing session. Will pull in the latest changes once the other review comments are resolved. |
|
This has made a good progress, and also the following blockers remain: Security Parameter Restriction (Blocking)
Terminology Sync
Versioning
Pending Review Threads
Once these are addressed, the PR will be ready for merge. CI is fine. |
murchandamus
left a comment
There was a problem hiding this comment.
The comment by @vitrixLab is confusing to me. It seems to me that your Changelog section shows 0.8.0 as the latest version.
Since you are using a version in your Changelog, please also add the corresponding Version header.
|
@murchandamus right, the changelog is at 0.8.0. I'll add On the other points from @vitrixLab:
Those are the two main things open on my end. I expect both to be done around the middle of next week. |
|
Okay, thanks for the update. |
BIP-445 / PR #2070 — Technical Review
I reviewed BIP-445 against the pinned PR state and the companion ChillDKG work, with particular attention to the BIP340 adaptation, signing-context validation, DKG interoperability boundary, and the current adaptive-security literature. 1. BIP340/FROST interfaceThe PR description clearly establishes the intended role of BIP-445: adapting the FROST signing protocol to Bitcoin's BIP340 X-only public-key setting and standardizing the FROST3 variant. Key generation is deliberately outside the scope of BIP-445, with ChillDKG and trusted-dealer generation serving as companion mechanisms. This separation appears intentional and is technically reasonable. 2. Signing-context integrity and validation
The existing
Importantly, the specification distinguishes functional compatibility validation from guaranteeing the security of the underlying key-generation protocol. That distinction should be preserved in the final wording/documentation. 3. ChillDKG interoperability boundaryThe ChillDKG work explicitly identifies BIP-445 as its intended signing counterpart and identifies I therefore recommend making the DKG-output → signing-context contract sufficiently explicit that independent implementations can determine the exact compatibility requirements without relying on implementation-specific assumptions. 4. Adaptive-security considerationsRecent CRYPTO 2025 work reports adaptive-security concerns relevant to threshold Schnorr/FROST constructions, including analysis involving stronger computational assumptions. I am not asserting that BIP-445 currently contains an exploitable vulnerability, nor that a particular parameter restriction automatically applies to BIP-445. The narrower review request is:
This would make the security claim auditable rather than leaving the applicability relationship implicit. 5. Message semanticsThe BIP-445 session-value computation incorporates
completely unambiguous. I am not asserting a particular Requested clarificationsBefore finalization, I recommend confirming four points:
Overall assessmentI do not see evidence from this review supporting a claim of an existing exploitable vulnerability in BIP-445. The principal issue is specification-level clarity and security-model explicitness, particularly at the BIP-445 ↔ ChillDKG interface. These points are intended as clarification/strengthening requests rather than a claim that the underlying FROST/BIP340 construction is unsound. |
Reproducibility / assessment record This supplements the technical review above with the exact evidence trail. I preserved the upstream
The same commit is mirrored at:
A separate assessment branch was created from that baseline without modifying the implementation branch:
Initial assessment checkpoint:
No BIP-445 implementation or specification changes were made as part of the review. |
This is tracked in the ChillDKG dev repo: BlockstreamResearch/bip-frost-dkg#157
This is bullshit. The message is a mandatory argument and thus always present. |
|
I’m not as close to the material as @siv2r or @real-or-random, so please correct me, if I’m getting a wrong sense here, but the contributions from @vitrixLab read like low-quality slop to me. @vitrixLab: If authors want a document to be processed by an LLM, they can point their own agents at it. Most of the value of LLM input is generated in combination with the human assessment and refinement in the loop, which seems to be lacking here. If you are not familiar with this topic and simply pointing an LLM at this document, you’re not helping, you’re emitting noise. Ultimately, the user is responsible for the content and quality of the comments. Please either step up the quality of your contributions or cease posting in this repository. |
|
Does the protocol protect against exfiltration attacks? If not, why not? The protocol is already interactive, and adding anti-exfil as an optional extention will likely limit uptake. In particular, malicious signing devices will simply not implement the extension. Edit: with builtin anti-exfil, this protocol might very well become de facto even for n=1 singlesig wallets. |
…pubshares optional, cap n at 128
The other change is the redesign from siv2r/bip-frost-signing#43 (v0.9.0). |
I've opened the issue siv2r/bip-frost-signing#60 to discuss what the bip should do regarding this. |

This PR adds a BIP for the FROST (Flexible Round-Optimized Schnorr Threshold) signing protocol. The development repository is at https://github.com/siv2r/bip-frost-signing.
There already exists RFC 9591, which standardizes the two-round FROST signing protocol, but it is incompatible with Bitcoin's BIP340 X-only public keys. This BIP bridges that gap by providing a BIP340-compatible variant of FROST.
This BIP standardizes the FROST3 variant (Section 2.3 of the ROAST paper). This variant shares significant similarities with the MuSig2 signing protocol (BIP327). Accordingly, this BIP follows the core design principles of BIP327, and many sections have been directly adapted from it.
FROST key generation is out of scope for this BIP. There are sister BIPs such as ChillDKG and Trusted Dealer Generation that specify key generation mechanisms. This BIP must be used in conjunction with either of those for the full workflow from key generation to signature creation. Careful consideration has been taken to ensure the terminology in this BIP matches that of ChillDKG.
There are multiple (experimental) implementations of this specification:
FROST-BIP340TODO: verify if this impl is compatible with our test vectorssecp256kfun (implements ChillDKG with FROST signing)TODO: verify if this impl is compatible with our test vectorsDisclosure: AI has been used to rephrase paragraphs for clarity, refactor certain sections of the reference code, and review pull requests made to the development repository.
Feedback is appreciated! Please comment on this pull request or open an issue at https://github.com/siv2r/bip-frost-signing for any feedback. Thank you!
cc @jonasnick @real-or-random @jesseposner