Categorygithub.com/hyperproofs/hyperproofs-go
modulepackage
0.0.0-20230926225939-64c8fa5131d2
Repository: https://github.com/hyperproofs/hyperproofs-go.git
Documentation: pkg.go.dev

# README

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

# Packages

All the functionalities when only pruned proof and pruned UPK tree is available.

# Functions

No description provided by the author
Merkle proof aggregation of N leaves: During verification the public inputs are: 1.
No description provided by the author
Stateless setting(macro benchmarking): (different from the above microbenchmarking settings) Merkle proof aggregation of N leaves: During verification the public inputs are: 1.
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

No description provided by the author