How does MuSig work in real Bitcoin scenarios? Questions on communication and steps
Signature Generation
- Let
L = h(P1 || ... || Pn). Each participant computes the digest:ai = h(L || Pi). - Compute the aggregated public key:
X̃ = Σ (ai * Pi)fori = 1, ..., n.X̃is made public. - Each participant randomly selects
riand computes:Ri = ri * G. Each participant sends their commitment:ti = h(Ri)to all other participants. - After receiving the other
n-1commitments, each participant sends their pointRi. - After receiving the other
n-1pointsRi, each participant verifies:ti = h(Ri)for alli ∈ {1, ..., n}. - Calculate the aggregated point:
Rsum = R1 + ... + Rn. - Each participant computes the challenge:
c = h(Rsum || X̃ || M). - Each participant calculates their partial signature:
si = ri + c * di * ai mod N.Finally, compute the aggregated signature:ssum = s1 + ... + sn mod N. - The signature is the pair
(Rsum, ssum).
Signature Verification
Check if:
ssum * G = Rsum + c * X̃.
Questions:
- Sharing ti, Ri, and si: How do participants send their commitments (
ti), share theirRivalues, and exchange partial signatures (si)? What does this process look like in practice? Is there a standard, asynchronous, and user-friendly way to manage this in software? Or do participants need to manually compute theirsi, sum them, and share the results back and forth? - Verification Process: Who verifies the final signature
(Rsum, ssum)? When and how does this verification happen in real-world Bitcoin use cases? Is the verification done via P2SH scripts? And regarding the initiation of the verification process—does a participant (e.g., one of the multisig signers) who has collected all theRsumandssumvalues create the transaction from the P2SH address? Or am I misunderstanding this flow? - What Happens Without Commitments? What could an adversary do if the commitments (
ti) were not part of the protocol? What kind of attacks could occur, and how would they exploit the lack of commitments?
[link] [comments]