Skip to content

hyperproofs/hyperproofs-go

Repository files navigation

Hyperproofs

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:

  • go-mcl for elliptic curve operations.
  • kzg-go for KZG commitments.
  • gipa-go for proof aggregation.

Instructions

Software requirements

  • 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

Hyperproofs

  1. See v1.0.0 for the USENIX 2022 version
  2. Run time bash scripts/hyper-go.sh to setup PRK, VRK, UPK, etc.
  3. 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.
  4. Copy pedersen-30-single.csv and poseidon-30-single.csv from bellman-bignat to hyperproofs-go/plots. Then, run cd plots; time python3 gen-plots.py to generate the plots.

Reference

Hyperproofs: Aggregating and Maintaining Proofs in Vector Commitments
Shravan Srinivasan, Alexander Chepurnoy, Charalampos Papamanthou, Alin Tomescu, and Yupeng Zhang
ePrint, 2021