1- # lox-zkp : a(n updated) toolkit for Schnorr proofs used by Lox
1+ # sigma-rs : a(n updated) toolkit for Σ-protocols
22
33### Background
44
5- This crate was originally created as part of [ ` dalek-cyptography ` ] ( https://github.com/dalek-cryptography ) and then
6- was forked to [ ` zkcrypto ` ] ( https://github.com/zkcrypto ) and updated to include forks of
7- ` dalek-cryptography ` dependencies that were compatible with ` zkcrypto ` 's
8- [ ` zkp ` ] ( https://github.com/zkcrypto/zkp )
9- crate. These forks have since fallen out of sync with the upstream
10- ` dalek-cryptography ` crates which has led to incompatabilities when relying on
11- up-to-date dependencies in projects that rely on both ` zkp ` and
12- ` dalek-cryptography ` crates, such as [ Lox] ( https://gitlab.torproject.org/tpo/anti-censorship/lox ) . This crate was created for 3 reasons:
13- 1 . To bring the ` zkp ` crate up to date with ` dalek-cryptography ` dependencies
14- 2 . To resolve a bug in the zkp crate
15- 3 . To enabling publishing additional lox crates to crates.io with a working zkp
16- dependency.
17-
18- This crate has a toolkit for Schnorr-style zero-knowledge proofs,
19- instantiated using the ristretto255 group.
5+ This crate was originally created as part of [ ` dalek-cyptography ` ] ( https://github.com/dalek-cryptography ) .
6+ It has been forked:
7+ 1 . To bring the ` zkp ` crate up to date with ` dalek-cryptography ` dependencies.
8+ 2 . To resolve bugs and incorporate changes to the fiat-shamir transform.
9+ 3 . To make this effort compatible with the Σ-protocol standardization effort.
2010
11+ This crate has a toolkit for Schnorr-style zero-knowledge proofs over generic [ ` Group ` ] ( https://github.com/zkcrypto/group ) s
2112It provides two levels of API:
2213
2314* a higher-level, declarative API based around the ` define_proof ` macro,
@@ -31,7 +22,7 @@ It provides two levels of API:
3122 (A, G, H), // Public variables unique to each proof
3223 (B) : // Public variables common between proofs
3324 A = (x * B), // Statements to prove
34- G = (x * H)
25+ G = (x * H)
3526 }
3627 ```
3728 This expands into a module containing an implementation of proving,
@@ -46,40 +37,7 @@ It provides two levels of API:
4637 lower-level API.
4738 The lower-level API is contained in the ` toolbox ` module.
4839
49- # Examples
50-
51- Examples of how to use the API can be found in the library's ` tests `
52- directory.
53-
54- Currently, the examples include:
55-
56- * Specification of an "anonymous credential presentation with 10 hidden
57- attributes" proof from CMZ'13. Depending on the backend selection, the
58- generated implementation is between 20 to 40 times faster than the benchmark
59- numbers reported in that paper.
60-
61- * A transcript-based signature and VRF construction with an auto-generated
62- implementation. This includes an example of using the online interactive
63- composition [ described in the Merlin blog post] [ merlin_blog ] to provide chained
64- signatures with a counterparty.
65-
66- * An example of using the lower-level constraint system API.
67-
68-
69- # Use and features
70-
71- To enable the ` define_proof ` macro, import the crate like so:
72- ```
73- #[macro_use]
74- extern crate zkp;
75- ```
76-
77- #### Transcript debugging
78-
79- The ` debug-transcript ` feature is for development and testing, and
80- prints a log of the data fed into the proof transcript.
81-
82- #### Autogenerated benchmarks
40+ #### Auto-generated benchmarks
8341
8442The ` define_proof ` macro builds benchmarks for the generated proof
8543statements, but because these are generated in the client crate (where
@@ -101,4 +59,3 @@ code, for now there are no stability guarantees on the proofs, so they
10159should not yet be deployed.
10260
10361[ bellman ] : https://github.com/zkcrypto/bellman
104- [ merlin_blog ] : https://medium.com/@hdevalence/merlin-flexible-composable-transcripts-for-zero-knowledge-proofs-28d9fda22d9a
0 commit comments