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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published