Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/distributed-lab/noir-plume
Implementation of the PLUME protocol in Noir.
https://github.com/distributed-lab/noir-plume
noir plume signature zkp
Last synced: 20 days ago
JSON representation
Implementation of the PLUME protocol in Noir.
- Host: GitHub
- URL: https://github.com/distributed-lab/noir-plume
- Owner: distributed-lab
- License: mit
- Created: 2024-07-04T11:16:44.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-10-29T13:27:38.000Z (3 months ago)
- Last Synced: 2024-11-13T18:09:54.968Z (3 months ago)
- Topics: noir, plume, signature, zkp
- Language: Noir
- Homepage:
- Size: 138 KB
- Stars: 7
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-noir - PLUME - Noir implementation of the https://blog.aayushg.com/nullifier/ library for zk-signatures (Libraries / Cryptography)
README
# PLUME in Noir
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Noir CI 🌌](https://github.com/distributed-lab/noir-plume/actions/workflows/noir.yml/badge.svg)](https://github.com/distributed-lab/noir-plume/actions/workflows/noir.yml)
> Signature nullification cryptography.
Read about PLUME [here](https://blog.aayushg.com/nullifier/).
## How to use?
### Add dependency to your project's `Nargo.toml`
```toml
[dependencies]
plume = { git = "https://github.com/distributed-lab/noir-plume", tag = "v2.0.0", directory = "crates/plume"}
```### Employ in your `Noir` code as following
```rust
use plume::plume_v1;...
plume_v1(msg, c, s, pk, nullifier);
```Or in case you prefer [second version](https://www.notion.so/mantanetwork/PLUME-Discussion-6f4b7e7cf63e4e33976f6e697bf349ff):
```rust
use plume::plume_v2;...
plume_v2(msg, c, s, pk, nullifier);
```### Examples
Check out how to generate proofs with PLUME in either `crates/use_v1` or `crates/use_v2`.
Sample data generation in our `SageMath` [implementation](./etc).## Benchmarks
We have provided information regarding different computational statistics such as constraints amount and time for various activities, see [Benchmark.md](./BENCHMARK.md)
## Need something else?
In order to bring `PLUME` to `Noir`, we needed to implement
[secp256k1_XMD:SHA-256_SSWU_RO_](https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html) hash-to-curve algorithm, thus now it is available in `Noir` ecosystem!Tested using [this data](https://www.ietf.org/archive/id/draft-irtf-cfrg-hash-to-curve-13.html#appendix-J.8.1).