|
|
@ -1,2 +1,70 @@ |
|
|
|
# Hyperplonk |
|
|
|
A linear-time FFT-free SNARK proof system |
|
|
|
# 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. |