Hyperproofs, the first vector commitment (VC) scheme that is efficiently maintainable and aggregatable. This repo contains the implementation of Hyperproofs in go.
This repo depends on:
- Install golang, python
$ sudo apt-get install git python curl python3-pip libgmp-dev libflint-dev $ sudo add-apt-repository ppa:longsleep/golang-backports $ sudo apt-get install golang golang-go golang-doc golang-golang-x-tools $ pip3 install -U pip pandas matplotlib
- Install
mcl
$ git clone https://github.com/herumi/mcl $ cd mcl/ $ git checkout caf27db2 #herumi/mcl v1.86.0 $ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release $ cmake --build build $ sudo cmake --build build --target install $ sudo ldconfig
- See v1.0.0 for the USENIX 2022 version
- Run
time bash scripts/hyper-go.sh
to setup PRK, VRK, UPK, etc. - Run
time bash scripts/hyper-bench.sh
to replicate the benchmarks reported in the paper.- Does not benchmark OpenAll and Commit by default. Uncomment the corresponding lines in the shell script to run the benchmarks.
- Copy
pedersen-30-single.csv
andposeidon-30-single.csv
from bellman-bignat to hyperproofs-go/plots. Then, runcd plots; time python3 gen-plots.py
to generate the plots.
Hyperproofs: Aggregating and Maintaining Proofs in Vector Commitments
Shravan Srinivasan, Alexander Chepurnoy, Charalampos Papamanthou, Alin Tomescu, and Yupeng Zhang
ePrint, 2021