Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/crate-crypto/go-ipa

A Go implementation of cryptographic primitives for Verkle Trees
https://github.com/crate-crypto/go-ipa

ethereum inner-product-argument verkle

Last synced: about 1 month ago
JSON representation

A Go implementation of cryptographic primitives for Verkle Trees

Awesome Lists containing this project

README

        

# go-ipa

> go-ipa is a library of cryptographic primitives for Verkle Trees.

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/crate-crypto/go-ipa/blob/main/LICENSE)
[![Go Version](https://img.shields.io/badge/go-v1.18-green.svg)](https://golang.org/dl/)

## Table of Contents

- [go-ipa](#go-ipa)
- [Table of Contents](#table-of-contents)
- [Description](#description)
- [Usage in Verkle Tree client libraries](#usage-in-verkle-tree-client-libraries)
- [Test \& Benchmarks](#test--benchmarks)
- [Security](#security)
- [LICENSE](#license)

## Description

go-ipa implements the [Verkle Tree cryptography spec](https://github.com/crate-crypto/verkle-trie-ref) with extra optimizations.

The includes:
- Implementation of the Bandersnatch curve, and Banderwagon prime-order group.
- Pedersen Commitment for vector commitments using precomputed tables.
- Inner Product Argument prover and verifier implementations for polynomials in evaluation form.
- Multiproof prover and verifier implementations.

## Usage in Verkle Tree client libraries

It's extremely important that clients using this library for Verkle Tree implementations only use the following packages:
- `common` for general utility functions.
- `banderwagon` for the prime-order group.
- `ipa` for proof generation and verification.

**Do not** use the `bandersnatch` package directly nor use unsafe functions to get into `banderwagon` internals. Doing so can create a security vulnerability in your implementation.

## Test & Benchmarks

To run the tests and benchmarks, run the following commands:
```bash
$ go test ./...
```

To run the benchmarks:
```bash
go test ./... -bench=. -run=none -benchmem
```

## Security

If you find any security vulnerability, please don't open a GH issue and contact repo owners directly.

## LICENSE

[MIT](LICENSE-MIT) and [Apache 2.0](LICENSE-APACHE).