update readme

This commit is contained in:
psippl 2022-02-26 18:55:04 +01:00
parent 99f6549c84
commit 60f671d4cd
1 changed files with 29 additions and 5 deletions

View File

@ -2,12 +2,36 @@
Rust support library for Semaphore
## Build static lib via ffi
## Example
Build e.g. for iOS simulator:
```rust
// generate identity
let id = Identity::new(b"hello");
`cargo build --release --target=aarch64-apple-ios-sim`
// generate merkle tree
const LEAF: Hash = Hash::from_bytes_be([0u8; 32]);
Generate header file:
let mut tree = PoseidonTree::new(21, LEAF);
let (_, leaf) = id.commitment().to_bytes_be();
tree.set(0, leaf.into());
`cbindgen ./src/lib.rs -c cbindgen.toml | grep -v \#include | uniq > libsemaphore.h`
let root: BigInt = tree.root().into();
dbg!(root);
let merkle_proof = tree.proof(0).expect("proof should exist");
let root = tree.root().into();
// change signal and external_nullifier here
let signal = "hello".as_bytes();
let external_nullifier = "123".as_bytes();
let nullifier_hash = generate_nullifier_hash(&id, external_nullifier);
let config = SnarkFileConfig {
zkey: "./snarkfiles/semaphore.zkey".to_string(),
wasm: "./snarkfiles/semaphore.wasm".to_string(),
};
let proof = generate_proof(&config, &id, &merkle_proof, external_nullifier, signal).unwrap();
let success = verify_proof(&config, &root, &nullifier_hash, signal, external_nullifier, &proof).unwrap();
```