MCPcopy Index your code
hub / github.com/EspressoSystems/hyperplonk

github.com/EspressoSystems/hyperplonk @v0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.0 ↗ · + Follow
266 symbols 481 edges 47 files 119 documented · 45% updated 22d agov0.1.0 · 2023-01-26★ 34216 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Hyperplonk library

A linear-time FFT-free SNARK proof system (https://eprint.iacr.org/2022/1355.pdf).

Disclaimer

DISCLAIMER: This software is provided "as is" and its security has not been externally audited. Use at your own risk.

Development environment setup

Install RUST

We recommend using nix for installing the correct version of rust and additional libraries:

> curl -L https://nixos.org/nix/install | sh

Compiling the project for the first time

> nix-shell
> cargo build

Direnv

We recommend the following tools:

Run direnv allow at the repo root. You should see dependencies (including Rust) being installed (the first time might take a while). Upon modification on flake.nix, run direnv reload to reflect new dependencies or environment setups.

Tests

> cargo test --release --all

Generate and read the documentation

Standard

> cargo doc --open

Code formatting

To format your code run

> cargo fmt

Updating non-cargo dependencies

Run nix flake update if you would like to pin other version edit flake.nix beforehand. Commit the lock file when happy.

To update only a single input specify it as an argument, for example

nix flake update github:oxalica/rust-overlay

Benchmarks

To obtain benchmarks, run the script file scripts/run_benchmarks.sh. We refer to Table 5 and Table 6 in https://eprint.iacr.org/2022/1355.pdf for an example benchmark.

Extension points exported contracts — how you extend this code

PolynomialCommitmentScheme (Interface)
This trait defines APIs for polynomial commitment schemes. Note that for our usage of PCS, we do not require the hiding [2 …
subroutines/src/pcs/mod.rs
HyperPlonkSNARK (Interface)
A trait for HyperPlonk SNARKs. A HyperPlonk is derived from ZeroChecks and PermutationChecks. [1 implementers]
hyperplonk/src/lib.rs
StructuredReferenceString (Interface)
API definitions for structured reference string [2 implementers]
subroutines/src/pcs/mod.rs
PermutationCheck (Interface)
A PermutationCheck w.r.t. `(fs, gs, perms)` proves that (g1, ..., gk) is a permutation of (f1, ..., fk) under permutatio [1 …
subroutines/src/poly_iop/perm_check/mod.rs
SumCheck (Interface)
Trait for doing sum check protocols. [1 implementers]
subroutines/src/poly_iop/sum_check/mod.rs
SumCheckProver (Interface)
Trait for sum check protocol prover side APIs. [1 implementers]
subroutines/src/poly_iop/sum_check/mod.rs

Core symbols most depended-on inside this repo

append_message
called by 19
transcript/src/lib.rs
evaluate
called by 18
arithmetic/src/virtual_polynomial.rs
add_mle_list
called by 13
arithmetic/src/virtual_polynomial.rs
insert_poly_and_points
called by 12
hyperplonk/src/utils.rs
append_serializable_element
called by 11
transcript/src/lib.rs
get_and_append_challenge
called by 9
transcript/src/lib.rs
get_and_append_challenge_vectors
called by 6
transcript/src/lib.rs
get_index
called by 5
arithmetic/src/util.rs

Shape

Function 119
Method 95
Class 38
Interface 9
Enum 5

Languages

Rust100%

Modules by API surface

arithmetic/src/virtual_polynomial.rs21 symbols
arithmetic/src/multilinear_polynomial.rs16 symbols
subroutines/src/poly_iop/sum_check/mod.rs15 symbols
subroutines/src/pcs/multilinear_kzg/mod.rs14 symbols
subroutines/src/pcs/univariate_kzg/mod.rs13 symbols
subroutines/src/poly_iop/prod_check/mod.rs11 symbols
hyperplonk/src/mock.rs11 symbols
subroutines/src/poly_iop/perm_check/mod.rs10 symbols
subroutines/src/pcs/multilinear_kzg/srs.rs10 symbols
hyperplonk/src/utils.rs10 symbols
subroutines/src/poly_iop/zero_check/mod.rs9 symbols
hyperplonk/src/structs.rs9 symbols

For agents

$ claude mcp add hyperplonk \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact