You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: bip-0445.md
+9-11Lines changed: 9 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -178,7 +178,7 @@ Aborts are identifiable for an honest party if the following conditions hold in
178
178
- Nonce aggregation is performed honestly (e.g., because the honest signer performs nonce aggregation on its own or because the coordinator is trusted).
179
179
- The partial signatures received from all signers are verified using the algorithm *PartialSigVerify*.
180
180
181
-
If these conditions hold and an honest party (signer or coordinator) runs an algorithm that fails due to invalid protocol contributions from malicious signers, then the algorithm run by the honest party will output the participant identifier of exactly one malicious signer.
181
+
If these conditions hold and an honest party (signer or coordinator) runs an algorithm that fails due to invalid protocol contributions from malicious signers, then the algorithm run by the honest party will output the index (within the input list) of exactly one malicious signer.
182
182
Additionally, if the honest parties agree on the contributions sent by all signers in the signing session, all the honest parties who run the aborting algorithm will identify the same malicious signer.
183
183
184
184
#### Further Remarks
@@ -439,15 +439,14 @@ Algorithm *NonceGen(secshare, pubshare, thresh_pk, m, extra_in)*:
- The list of partial signatures *psig<sub>1..u</sub>*: *u* 32-byte arrays, each an output of *Sign*
568
-
- The list of participant identifiers *id<sub>1..u</sub>*: *u* distinct integers, each with *0 ≤ id<sub>i</sub> ≤ n-1*
569
568
- The *session_ctx*: a [Session Context](#session-context) data structure
570
569
- Let *(Q, _, tacc, _, _, _, R, e) = GetSessionValues(session_ctx)*; fail if that fails
571
570
- For *i = 1 .. u*:
572
-
- Let *s<sub>i</sub> = scalar_from_bytes_nonzero_checked(psig<sub>i</sub>)*; fail if that fails and blame signer *id<sub>i</sub>* for invalid partial signature.
571
+
- Let *s<sub>i</sub> = scalar_from_bytes_nonzero_checked(psig<sub>i</sub>)*; fail if that fails and blame signer at index *i* for invalid partial signature.
573
572
- Let *g = Scalar(1)* if *has_even_y(Q)*, otherwise let *g = Scalar(-1)*
574
573
- Let *s = s<sub>1</sub> + ... + s<sub>u</sub> + e · g · tacc  (mod ord)*
- Fail if *my_pubshare* is not present in *pubshare<sub>1..u</sub>*
641
640
- Let *secnonce = scalar_to_bytes(k<sub>1</sub>) || scalar_to_bytes(k<sub>2</sub>)*
642
-
- Let *aggnonce = NonceAgg((pubnonce, aggothernonce), (my_id, COORDINATOR_ID))*[^coordinator-id-sentinel]; fail if that fails and blame coordinator for invalid *aggothernonce*.
641
+
- Let *aggnonce = NonceAgg((pubnonce, aggothernonce))*; fail if that fails and blame coordinator for invalid *aggothernonce*.
643
642
- Let *session_ctx = (signers_ctx, aggnonce, v, tweak<sub>1..v</sub>, is_xonly_t<sub>1..v</sub>, m)*
[^coordinator-id-sentinel]: *COORDINATOR_ID* is a sentinel value (not an actual participant identifier) used to track the source of *aggothernonce* for error attribution. If *NonceAgg* fails, the coordinator is blamed for providing an invalid *aggothernonce*. In the reference implementation, *COORDINATOR_ID* is represented as *None*.
647
-
648
645
### Tweaking Definition
649
646
650
647
Two modes of tweaking the threshold public key are supported. They correspond to the following algorithms:
@@ -785,6 +782,7 @@ This document proposes a standard for the FROST threshold signature scheme that
785
782
786
783
## Changelog
787
784
785
+
-*0.4.1* (2026-03-03): Assign blame to signer index (of the input list) instead of their identifier value
788
786
-*0.4.0* (2026-01-30): Number 445 was assigned to this BIP.
789
787
-*0.3.6* (2026-01-28): Add MIT license file for reference code and other auxiliary files.
790
788
-*0.3.5* (2026-01-25): Update secp256k1lab to latest version, remove stub file, and fix formatting in the BIP text.
0 commit comments