diff --git a/README.md b/README.md index 5371829..7d0344e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,70 @@ -# Hyperplonk -A linear-time FFT-free SNARK proof system \ No newline at end of file +# 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.