Categorygithub.com/olegfomenko/back-maxwell-rangeproof
modulepackage
0.0.0-20230601011112-b76f9296b605
Repository: https://github.com/olegfomenko/back-maxwell-rangeproof.git
Documentation: pkg.go.dev

# README

Back-Maxwell range proof for Pedersen Commitments on Go

License: MIT

Example implementation of Back-Maxwell Rangeproof on Go for creating the Pedersen commitment with corresponding proof that committed value lies in [0..2^n-1] range.
The implementation uses Ethereum bn128 G1 curve to produce commitments and proofs.

Use only for educational reasons.

DO NOT USE IN PRODUCTION.

Signing scheme Signing scheme

Usage

Explore main_test.go TestPedersenCommitment with example of usage.

Note, that there are the following values defined in global space to be changed on your choice:

var G *bn256.G1
var H *bn256.G1

// Hash function that should return the value in Curve.N field
var Hash func(...[]byte) *big.Int = defaultHash

Signature (Proof of ownership)

Explore main_test.go TestSignatureForCommitments with example of signing the Pederssn commitment.

It uses the scheme from Simple Schnorr Signature with Pedersen Commitment as Key article.

Signing scheme

For the decentralized systems hash message expected to be the hash of transaction outputs.

Schnorr Signature

Explore main_test.go TestSchnorrSignatureAggregation with an example of Schnorr signature. It can be useful to sign the resulting C=C1-C2 commitment in transactions.

It uses the scheme from Schnorr Signature article.

# Functions

No description provided by the author
CreatePedersenCommitment - creates Pedersen commitment for given val, and generates proof that given val lies in [0..2^n-1].
PedersenCommitment creates *bn256.G1 with pedersen commitment aH + rG.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
VerifyPedersenCommitment - verifies proof that C commitment commits the value in [0..2^n-1].
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author
Hash function that should return the value in Curve.N field.

# Structs

No description provided by the author
No description provided by the author
No description provided by the author