Git Product home page Git Product logo

back-maxwell-rangeproof's Introduction

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.

back-maxwell-rangeproof's People

Contributors

olegfomenko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.