Semacaulk

Semacaulk is a custom prover and verifier of set membership proofs which uses an on-chain polynomial commitment to enable cheap insertions, and techniques which make verification no more expensive than verifying a Groth16 proof.

For more information, please refer to this document. More documentation will be written and released soon.

Quick start

  1. Install Rust using these instructions.

  2. Install Foundry using these instructions.

  3. Clone this repository.

git clone https://github.com/geometryresearch/semacaulk.git && \
cd semacaulk
  1. Build the contracts
./build_contracts.sh
  1. Run tests
cargo test

Documentation

We use mdbook v0.4.25 for documentation.

Install mdbook using these instructions.

To build the Semacaulk documentation, run this in the Semacaulk project root:

mdbook serve ./docs

Demo

The Powers of Tau output from Hermez Network (11.ptau) is already in the repository. To run a demo of Semacaulk with a maximum capacity of 2 ^ 11 = 2048, first build the demo executable:

cargo build --release

Run the demo:

./target/release/demo 11 11.ptau

To run a demo with a different maximum capacity, download a larger .ptau file and specify the log 2 of the desired maximum capacity:

./target/release/demo 16 12.ptau

A future release will integrate implement the functionality of export-ptau-points into the setup executable, so a separate step will not be needed.

Documentation

We use mdbook v0.4.25 for documentation To build the documentation, navigate to the docs directory and run:

mdbook serve
Description
No description provided
Readme 5.7 MiB
Languages
Rust 97.5%
Solidity 2.3%
Makefile 0.1%
Shell 0.1%