Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes and improvements for the threshold writeup #11

Open
wants to merge 58 commits into
base: 2019-01-threshold
Choose a base branch
from

Commits on Dec 14, 2018

  1. Add 64-bit integer utilities

    gmaxwell authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    efc61dc View commit details
    Browse the repository at this point in the history
  2. Pedersen commitments, borromean ring signatures, and ZK range proofs.

    This commit adds three new cryptosystems to libsecp256k1:
    
    Pedersen commitments are a system for making blinded commitments
     to a value.  Functionally they work like:
      commit_b,v = H(blind_b || value_v),
     except they are additively homorphic, e.g.
      C(b1, v1) - C(b2, v2) = C(b1 - b2, v1 - v2) and
      C(b1, v1) - C(b1, v1) = 0, etc.
     The commitments themselves are EC points, serialized as 33 bytes.
     In addition to the commit function this implementation includes
     utility functions for verifying that a set of commitments sums
     to zero, and for picking blinding factors that sum to zero.
     If the blinding factors are uniformly random, pedersen commitments
     have information theoretic privacy.
    
    Borromean ring signatures are a novel efficient ring signature
     construction for AND/OR admissions policies (the code here implements
     an AND of ORs, each of any size).  This construction requires
     32 bytes of signature per pubkey used plus 32 bytes of constant
     overhead. With these you can construct signatures like "Given pubkeys
     A B C D E F G, the signer knows the discrete logs
     satisifying (A || B) & (C || D || E) & (F || G)".
    
    ZK range proofs allow someone to prove a pedersen commitment is in
     a particular range (e.g. [0..2^64)) without revealing the specific
     value.  The construction here is based on the above borromean
     ring signature and uses a radix-4 encoding and other optimizations
     to maximize efficiency.  It also supports encoding proofs with a
     non-private base-10 exponent and minimum-value to allow trading
     off secrecy for size and speed (or just avoiding wasting space
     keeping data private that was already public due to external
     constraints).
    
    A proof for a 32-bit mantissa takes 2564 bytes, but 2048 bytes of
     this can be used to communicate a private message to a receiver
     who shares a secret random seed with the prover.
    gmaxwell authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    ae1e576 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6d28767 View commit details
    Browse the repository at this point in the history
  4. [RANGEPROOF BREAK] Use quadratic residue for tie break and modularity…

    … cleanup
    
    Switch to secp256k1_pedersen_commitment by Andrew Poelstra.
    Switch to quadratic residue based disambiguation by Pieter Wuille.
    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    cf40b1b View commit details
    Browse the repository at this point in the history
  5. rangeproof: expose sidechannel message field in the signing API

    Including a fix by Jonas Nick.
    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    d46fc3c View commit details
    Browse the repository at this point in the history
  6. Constant-time generator module

    sipa authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    f4620de View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    21bfb3c View commit details
    Browse the repository at this point in the history
  8. rangeproof: several API changes

    * add summing function for blinded generators
    * drop `excess` and `gen` from `verify_tally`
    * add extra_commit to rangeproof sign and verify
    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    a2bc660 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    c174f0c View commit details
    Browse the repository at this point in the history
  10. add surjection proof module

    Includes fix and tests by Jonas Nick.
    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    0c17f79 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    e609591 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    7878a29 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    1e2d5c1 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    417bb06 View commit details
    Browse the repository at this point in the history
  15. rangeproof: add API tests

    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    0d81702 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    7f17515 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    9b8a9d9 View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    37c57de View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    b51886e View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    526c654 View commit details
    Browse the repository at this point in the history
  21. Fix generator makefile

    Include test_impl.h
    instagibbs authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    b0e9aa8 View commit details
    Browse the repository at this point in the history
  22. Configuration menu
    Copy the full SHA
    ec1ef04 View commit details
    Browse the repository at this point in the history
  23. generator: add API tests

    apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    a707865 View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    52a9f8f View commit details
    Browse the repository at this point in the history
  25. Add whitelisting benchmark

    jonasnick authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    b1f31bc View commit details
    Browse the repository at this point in the history
  26. Configuration menu
    Copy the full SHA
    0c77ae9 View commit details
    Browse the repository at this point in the history
  27. Configuration menu
    Copy the full SHA
    a3a1800 View commit details
    Browse the repository at this point in the history
  28. Configuration menu
    Copy the full SHA
    9b2cf17 View commit details
    Browse the repository at this point in the history
  29. Configuration menu
    Copy the full SHA
    fb75faa View commit details
    Browse the repository at this point in the history
  30. fix spelling in documentation

    instagibbs authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    fb1ba32 View commit details
    Browse the repository at this point in the history
  31. Expose generator in shared library

    Was failing linking to `*.so` library
    FrankC01 authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    e065d7d View commit details
    Browse the repository at this point in the history
  32. Configuration menu
    Copy the full SHA
    44fe43d View commit details
    Browse the repository at this point in the history
  33. Configuration menu
    Copy the full SHA
    ae14e8a View commit details
    Browse the repository at this point in the history
  34. Configuration menu
    Copy the full SHA
    32d7526 View commit details
    Browse the repository at this point in the history
  35. Configuration menu
    Copy the full SHA
    60c173b View commit details
    Browse the repository at this point in the history
  36. Configuration menu
    Copy the full SHA
    2ccf885 View commit details
    Browse the repository at this point in the history
  37. Configuration menu
    Copy the full SHA
    85fd42f View commit details
    Browse the repository at this point in the history
  38. Configuration menu
    Copy the full SHA
    71c5fe0 View commit details
    Browse the repository at this point in the history
  39. Add explanation about how BIP32 unhardened derivation can be used to …

    …simplify whitelisting
    jonasnick authored and apoelstra committed Dec 14, 2018
    Configuration menu
    Copy the full SHA
    53ad841 View commit details
    Browse the repository at this point in the history

Commits on Dec 22, 2018

  1. Add trivial ecmult_multi algorithm. It is selected when no scratch sp…

    …ace is given and just multiplies and adds the points.
    jonasnick committed Dec 22, 2018
    Configuration menu
    Copy the full SHA
    ed59fbe View commit details
    Browse the repository at this point in the history

Commits on Jan 3, 2019

  1. Configuration menu
    Copy the full SHA
    8c444ee View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    12b0e5d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2b2429d View commit details
    Browse the repository at this point in the history
  4. Merge pull request BlockstreamResearch#39 from instagibbs/more_builds

    Enable more builds with rest of experimental flags
    apoelstra authored Jan 3, 2019
    Configuration menu
    Copy the full SHA
    6532fa0 View commit details
    Browse the repository at this point in the history
  5. Merge pull request BlockstreamResearch#40 from instagibbs/size_t

    use proper types for rangeproof min/max in unit test case
    apoelstra authored Jan 3, 2019
    Configuration menu
    Copy the full SHA
    43dd1f4 View commit details
    Browse the repository at this point in the history

Commits on Jan 29, 2019

  1. add chacha20 function

    apoelstra authored and jonasnick committed Jan 29, 2019
    Configuration menu
    Copy the full SHA
    8260800 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f0e4bb9 View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2019

  1. Configuration menu
    Copy the full SHA
    77d5b4a View commit details
    Browse the repository at this point in the history
  2. Add 3-of-3 MuSig example

    jonasnick committed Feb 6, 2019
    Configuration menu
    Copy the full SHA
    2fc700a View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2019

  1. Configuration menu
    Copy the full SHA
    d5e22a5 View commit details
    Browse the repository at this point in the history

Commits on Feb 20, 2019

  1. Configuration menu
    Copy the full SHA
    49a5680 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    dada396 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2019

  1. Configuration menu
    Copy the full SHA
    0a734ca View commit details
    Browse the repository at this point in the history

Commits on Apr 2, 2019

  1. Configuration menu
    Copy the full SHA
    7950fd1 View commit details
    Browse the repository at this point in the history
  2. Adjust threshold writeup to match implemented scheme. The main differ…

    …ence
    
    is that now the set of participating signers must be known at session_initialize
    time.
    jonasnick committed Apr 2, 2019
    Configuration menu
    Copy the full SHA
    d1ed884 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6d17453 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b733f8a View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    8727abc View commit details
    Browse the repository at this point in the history