@@ -148,9 +148,13 @@ public key output from `secp256k1_musig_pubkey_combine`.
148
148
## Atomic Swaps
149
149
150
150
The signing API supports the production of "adaptor signatures", modified partial signatures
151
- which have an auxiliary secret encrypted to them. A partial signature is revealed to a party
152
- who learns the secret; conversely, a party with the corresponding secret will learn the
153
- secret.
151
+ which are offset by an auxiliary secret known to one party. That is,
152
+ 1. One party generates a (secret) adaptor ` t ` with corresponding (public) adaptor ` T = t*G ` .
153
+ 2. When combining nonces, each party adds ` T ` to the total nonce used in the signature.
154
+ 3. The party who knows ` t ` must "adapt" their partial signature with ` t ` to complete the
155
+ signature.
156
+ 4. Any party who sees both the final signature and the original partial signatures
157
+ can compute ` t ` .
154
158
155
159
Using these adaptor signatures, two 2-of-2 MuSig signing protocols can be executed in
156
160
parallel such that one party's partial signatures are made atomic. That is, when the other
@@ -182,8 +186,8 @@ coins) and "Session B" which benefits Bob (e.g. which sends him coins).
182
186
with this adaptor signature and Alice's partial signature, to produce a complete
183
187
signature for blockchain B.
184
188
6. Alice reads this signature from blockchain B. She calls `secp256k1_musig_extract_secret_adaptor`,
185
- passing the complete signature along with her and Bob's partial signatures. This function
186
- outputs `t`, which until this point was only known to Bob.
189
+ passing the complete signature along with her and Bob's partial signatures from Session B.
190
+ This function outputs `t`, which until this point was only known to Bob.
187
191
7. In Session A, Alice is now able to replicate Bob's action, calling
188
192
`secp256k1_musig_partial_sig_adapt` with her own partial signature and `t`, ultimately
189
193
producing a complete signature on blockchain A.
0 commit comments