-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Semaphore Integration] Issue 4: Finalize Semaphore Verifier Contract Implementation #2
Comments
I am applying to this issue via OnlyDust platform. My background and how it can be leveraged software engineering background, backend & smart contract dev who have contributed to similar projects(https://app.onlydust.com/u/Josh-121) looking to make first contribution on this project How I plan on tackling this issue |
I have experience with contract verifiers, it would be a pleasure to contribute to this issue. I'm from Dojo Coding |
hi, im from dojo coding, I can migrate this , I don't know about soroban language , but I can learn , thanks |
I'm Dprof-in-tech, a fullstack blockchain dev and i wuldlove to work on this issue. The ODHack is an opportunity for me to learn while solving real world issues and i would love to contribute to this project. Thank you |
Could I try solving this? |
Let me try this one! |
May I handle this issue? |
hey sir I'd like to handle this task. |
Hello @evgongora Pls I would love the opportunity to work and learn doing this issue and contribute to the repository |
Hi, I'm Koxy, a blockchain developer with Rust and Solidity experience. Here's my proposed approach for implementing the Semaphore verifier: My Implementation Strategy is:
I can start immediately and will maintain regular communication throughout the development process. |
pls, i would love to tackle this issue. |
Hey, I am Konstantin, also a blockchain developer with experience in Rust and Solidity. I am just starting with Stellar ecosystem and want to try this one if it's available. |
I'd be happy to do this. |
@kfastov Assigned! Let me know if you have any questions. |
Hi, @evgongora ! 1) Compatibility Issue:The main challenge is that Stellar (with protocol version 22) only supports operations on the BLS12-381 curve. This is different from BN254 (or alt_bn_128), which is commonly used in EVM chains and is the curve on which the Semaphore protocol operates. While it’s technically possible to adapt the protocol to a new curve, this would mean that it won't be strictly Semaphore protocol anymore, but a fork of it, and proofs would no longer be interoperable across chains. As a result, part of the purpose behind such an adaptation would be lost. 2) Adapting the Semaphore Protocol (if we still choose this route):As mentioned, the Semaphore protocol relies on the BN254 curve, so adapting it to BLS12-381 would require several significant changes:
Do you think it's practical to continue with BLS12-381 route? |
Hey @kfastov! This is great insight since we're still researching on how to make it possible thank you for your investigation so far, we would like this to be in a doc, I will be creating an issue a referencing it here would you mind helping us with it? :) You can show both routes with possible approaches. |
@evgongora Of course, I'll add the investigation results to the doc, and I am ready to help with both routes |
Here it is, apply when available ZencypherSolutions/semaphore-stellar-docs#14 |
The Semaphore verifier contract for Soroban requires zk-SNARK proof verification using BLS12-381 pairing-based cryptography. With the introduction of CAP-0059, Soroban now provides native host functions for efficient operations on BLS12-381, enabling seamless integration of zk-SNARK verification logic.
bls12_381_multi_pairing_check
: Performs pairing checks between G1 and G2 points to verify zk-SNARK proofs efficiently.bls12_381_g1_add
: Adds G1 points, which is used in aggregating cryptographic data during proof validation.bls12_381_g1_mul
: Multiplies a G1 point by a scalar to compute necessary cryptographic transformations.bls12_381_hash_to_g1
: Hashes user inputs or commitments to G1 points, enabling secure proof verification.References:
https://github.com/stellar/stellar-protocol/blob/master/core/cap-0059.md
https://github.com/semaphore-protocol/semaphore/blob/main/packages/contracts/contracts/base/SemaphoreVerifier.sol
https://github.com/semaphore-protocol/semaphore/blob/main/packages/contracts/contracts/interfaces/ISemaphoreVerifier.sol
The text was updated successfully, but these errors were encountered: