# 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: ```bash > curl -L https://nixos.org/nix/install | sh ``` ### Compiling the project for the first time ```bash > nix-shell > cargo build ``` ### Direnv We recommend the following tools: - [nix](https://nixos.org/download.html) - [direnv](https://direnv.net/docs/installation.html) 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.