Module schnorrkel::musig

source ·
👎Deprecated since 0.11.0: This module will be replaced in the future
Expand description

Implementation for Ristretto Schnorr signatures of “Simple Schnorr Multi-Signatures with Applications to Bitcoin” by Gregory Maxwell, Andrew Poelstra, Yannick Seurin, and Pieter Wuille https://eprint.iacr.org/2018/068

We observe the security arguments from the original 2-round version were found lacking in “On the Provable Security of Two-Round Multi-Signatures” by Manu Drijvers, Kasra Edalatnejad, Bryan Ford, and Gregory Neven https://eprint.iacr.org/2018/417 (slides) so we implement only the 3-round version.

Appendix A of the MuSig paper discusses Interactive Aggregate Signatures (IAS) in which cosigners’ messages differ. Appendix A.3 gives a secure scheme that correctly binds signers to their messages. See https://github.com/w3f/schnorrkel/issues/5#issuecomment-477912319

Structs

  • Aggregation helper for public keys kept in slices
  • CollectStageDeprecated
    Initial stage for cosignature collectors who do not themselves cosign.
  • CommitStageDeprecated
    Commitment stage for cosigner’s R values
  • CommitmentDeprecated
    Commitments to R_i values shared between cosigners during signing
  • CosignStageDeprecated
    Final cosigning stage collection
  • CosignatureDeprecated
    Cosignatures shared between cosigners during signing
  • MuSigDeprecated
    Schnorr multi-signature (MuSig) container generic over its session types
  • RevealDeprecated
    Revealed R_i values shared between cosigners during signing
  • RevealStageDeprecated
    Reveal stage for cosigner’s R values

Traits

  • Any data structure used for aggregating public keys.
  • Initial cosigning stages during which transcript modification remains possible but not advisable.

Functions