halo2-eth-membership circuit (#517)
* chore: enhance @anonklub/halo2-eth-membership halo2 circuit * chore: fmt * chore: dprint fmt * chore: some enhancements on the tests * fix: mock merkle tree function * fix: enhance tests
Warning
This project has been sunset and isn't being actively worked on anymore. The previously deployed services (query API, UI, discord bot) have been shut down. So the corresponding links (anonklub.xyz, docs.anonklub.xyz, query.anonklub.xyz) in docs/README(s) won't work.
AnonKlub focuses on building applications that allow for secure and anonymous proof of membership.
It does so by performing both ECDSA signatures and Merkle Tree inclusion verifications in a SNARK.
It enables privacy applications such as anonymous airdrops, anonymous NFT minting, anonymous chat groups…
| Content | Description | Status |
|---|---|---|
| discord-bot | Discord Verification Bot | ✔️ (circom/snarkjs support only) |
| nullifier | 📆 TO DO | |
| pkgs/cli | Rust CLI | ⏳ |
| pkgs/merkle-tree-wasm | Merkle tree Rust crate & corresponding wasm TS package | ✔️ |
| pkgs/merkle-tree-worker | Web worker wrapper of the @anonklub/merkle-tree-wasm wasm package | ✔️ |
| pkgs/spartan-ecdsa-wasm | Spartan/Sapir circuits & corresponding wasm TS package. | ✔️ |
| pkgs/spartan-ecdsa-worker | Web worker wrapper of the @anonklub/spartan wasm package | ✔️ |
| queries/crypto_ethereum | Google bigquery-public-data.crypto_ethereum queries examples |
✔️ |
| queries/dune_analytics | Dune Analytics queries examples | ✔️ |
| queries/the_graph | The Graph queries examples | ✔️ |
| query-api | Query API server | ✔️ |
| ui | User Interface (fetch anonymity sets, generate or verify membership proofs) | ✔️ |
Archive branches
circom/snarkjs(groth16) implementation:archive/circomspartan-ecdsa/sapirimplementation:archive/spartan-sapir
Develop
TLDR
git clone https://github.com/anonklub/anonklub.git
cd anonklub
cp .envrc{.example,}
# edit .envrc
source .envrc
pnpm i
pnpm start.ui
Requirements
Environment
See .envrc.example.
Copy it in an .envrc file and source it.
cp .envrc{.example,}
# edit .envrc
source .envrc
Scripts
Check available scripts with pnpm run.
Especially, to start the ui or the query-api: pnpm start.ui or pnpm start.query-api.
Don't bother running build tasks explicitly beforehand: turbo takes care of topological dependencies between tasks.
