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

Add Bulletproof rewind functionality #1

Conversation

hansieodendaal
Copy link

This is closely modelled on Grin's solution, but using two private keys:

  • Interfaces:
    • create a rewindable ZK proof with up to 23 bytes additional embedded proof
      data
    • extract the value and 23 bytes proof data only
    • extract the value, blinding factor and 23 bytes proof data
  • Required:
    • two rewind nonces, based on two public rewind keys and the value
      commitment
    • two blinding nonces, based on the two private rewind keys and the value
      commitment
  • Use:
    • the two rewind nonces are used to extract the value and 23 bytes embedded
      proof data
    • the two rewind nonces and two blinding nonces are used to extract the
      value, blinding factor and 23 bytes embedded proof data

Please see related issue dalek-cryptography#335

Thanks!

hdevalence and others added 20 commits January 17, 2020 17:05
Accept Transcript as `BorrowMut<>` instead of `&mut` in order to allow bundling R1CS verifier with an owned transcript in a single structure and thus avoiding self-referencing and pinning.
…nstraints_len` (dalek-cryptography#322)

* Add Metrics struct

Add Metrics struct to count the different kinds of constraints, which comes in
handy when developing and benchmarking larger circuits.

This deprecates and removes the `multipliers_len()` method.

* Add documentation for the new Metrics struct

Co-authored-by: Oleg Andreev <[email protected]>

Co-authored-by: Oleg Andreev <[email protected]>
It allows for the challenge phase to accept closures that take some more
context, e.g. moving non-Clone values in the challenge closure.

This works in stable since Rust 1.35; cfr.
rust-lang/rust#28796.

This closes issue dalek-cryptography#244.
…y#325)

While debugging complex circuits, the actual R1CSError value does not
become apparent while debugging.
It might be difficult for newcomers to Bulletproofs to distinguish
between the error condition of having written a faulty gadget, versus
not having allocated enough multipliers.
…ryptography#326)

* Make `Prover::eval` pub.

Development of complex constraint systems often goes wrong, and this patch
allows to evaluate (for the prover) the actual value of a LinearCombination.

* doc line added

Co-authored-by: Oleg Andreev <[email protected]>
Upgraded to curve25519-dalek version 3
We don't use any nightly features any more.
This requires a major version bump because the rand crate is part of the
public API.
This is closely modelled on Grin's solution, but using two private keys:
- Interfaces:
  - create a rewindable ZK proof with up to 23 bytes additional embedded proof
    data
  - extract the value and 23 bytes proof data only
  - extract the value, blinding factor and 23 bytes proof data
- Required:
  - two rewind nonces, based on two public rewind keys and the value
    commitment
  - two blinding nonces, based on the two private rewind keys and the value
    commitment
- Use:
  - the two rewind nonces are used to extract the value and 23 bytes embedded
    proof data
  - the two rewind nonces and two blinding nonces are used to extract the
    value, blinding factor and 23 bytes embedded proof data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants