@ -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. |