Fork of https://github.com/0xPARC/pod2
* implement merkletree insert & insert-proof-verification * add merkletree circuit to verify insertion proof wip * fix merkletree's GraphViz generation for cases with empty siblings * implement tree insert-verif circuit siblings checks Note: I've implemented also an alternative version which instead of inputting a witness value 'divergence_level' it inputs a bitmask. Both approaches (divergence_level and divergence_bitmask) take the same amount of constraints (336 constraints for a tree of 32 levels, and for an hybrid approach it takes 331 constraints but the code gets a bit less readable). So I've kept with the current implementation (using divergence_level) which is more easy to follow. * [tree] modify the strategy for the insert-proof (out-circuit) * re-implement insert-proof verification circuit * add pending checks and polish * add tests for disabled(&enabled) cases that should fail * update typos.toml config * Add test with tampering * add check 5.3, to prevent tampering (at insertion proof circuit) * move old_leaf_hash computation outside the loop, simplify check 5.3 booleans * apply @ed255 review suggestions --------- Co-authored-by: Ahmad <root@ahmadafuni.com> |
||
|---|---|---|
| .github/workflows | ||
| book | ||
| examples | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| README.md | ||
| rust-analyzer.toml | ||
| rust-toolchain.toml | ||
| rustfmt.toml | ||
POD2
Usage
- Run tests:
cargo test --release - Rustfmt:
cargo fmt - Check typos:
typos -c .github/workflows/typos.toml
Book
The book contains the specification of POD2. A rendered version of the site can be found at: https://0xparc.github.io/pod2/
To run it locally:
- Requirements
- mdbook:
cargo install mdbook - mdbook-katex:
cargo install mdbook-katex
- mdbook:
- Go to the book directory:
cd book - Run the mdbook:
mdbook serve