Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/olegfomenko/back-maxwell-rangeproof
Back-Maxwell range proof
https://github.com/olegfomenko/back-maxwell-rangeproof
Last synced: 9 days ago
JSON representation
Back-Maxwell range proof
- Host: GitHub
- URL: https://github.com/olegfomenko/back-maxwell-rangeproof
- Owner: olegfomenko
- License: mit
- Created: 2023-05-25T15:40:13.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-06-01T01:11:14.000Z (over 1 year ago)
- Last Synced: 2024-03-13T22:42:02.682Z (8 months ago)
- Language: Go
- Homepage:
- Size: 1.15 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Back-Maxwell range proof for Pedersen Commitments on Go
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
Example implementation of [Back-Maxwell Rangeproof](https://blockstream.com/bitcoin17-final41.pdf) 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.__
## Usage
Explore [main_test.go](./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:
```go
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](./main_test.go) `TestSignatureForCommitments` with example of signing the Pederssn commitment.It uses the scheme from [Simple Schnorr Signature with Pedersen Commitment as Key](https://eprint.iacr.org/2020/061.pdf) article.
For the decentralized systems hash message expected to be the hash of transaction outputs.
## Schnorr Signature
Explore [main_test.go](./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](https://mareknarozniak.com/2021/05/25/schnorr-signature/) article.