[NRG Proposal] Semaphore in Noir #7498
Replies: 1 comment
-
Thank you for submitting the proposal! The selected proposal is now announced: https://x.com/PrivacyScaling/status/1900014440910614653 Albeit falling short, the selection was no easy choice at all. I would love to personally thank your team for investing the time and effort in preparing the proposal. As a gesture of appreciation, here is an exclusive early application form to the NoirHack building program that will go live publicly in a few weeks time: https://tally.so/r/3NRdaW In the meantime, don't hesitate to jump on the Noir Discord to hang out with the bigger Noir community and the PSE Discord to follow Semaphore's development progress. Hope to see you around. Let's make noir gud together 🫡 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This is a proposal to build a Semaphore implementation in Noir along with associated Javascript and Solidity bindings. The implementation will be compatible with the Semaphore v4 npm packages and circom circuits.
This proposal includes:
Team members
Chance Hudson - former PSE engineer
Bhargav Annem - undergraduate at Caltech, former PSE grantee
Timeline
Weeks 1-2: Noir circuit with tests, Javascript bindings for calling/testing the noir circuit
Weeks 3-4: Javascript wrapper package, solidity verifier (both with tests against existing npm package)
Week 5: Demo application
Start date: flexible based on approval.
Detailed description
This section contains detailed descriptions of what is to be built and what will be changed in the Semaphore library.
Noir implementation
The Semaphore Noir implementation will live in it's own repository. We'll use the zk-kit.noir merkle tree implementation, and a jubjub key implementation based on jat9292/noir-elgamal. This is a small wrapper around the noir standard libraries.
A rough sample can be seen here.
This implementation will be tested against @semaphore-protocol/identity for compatibility.
Solidity implementation
The Solidity implementation will include a change to
@semaphore-protocol/contracts
. Specifically we'll modify SemaphoreProof to separate the public signals and the proof data. We'll make variants such asSemaphoreProofGroth16
,SemaphoreProofUltraplonk
, etc. with verification and validation functions inSemaphore.sol
.This implementation will include tests to generate and verify proofs from the Noir implementation above.
Javascript wrapper
We'll include a Javascript wrapper for generating Noir proofs with a similar api to @semaphore-protocol/proof. The delivered package should be suitable for integration into the semaphore-protocol monorepo.
Web demo
We'll include a web demo that generates a semaphore group, adds members, and generates membership proofs in browser. We'll deploy a Semaphore contract to the Sepolia testnet and allow the web demo to modify this contract arbitrarily.
Beta Was this translation helpful? Give feedback.
All reactions