{"id":22799922,"url":"https://github.com/tangle-network/anon","last_synced_at":"2025-07-14T18:10:53.577Z","repository":{"id":37178535,"uuid":"205210416","full_name":"tangle-network/anon","owner":"tangle-network","description":"A mixer for Substrate using multiple zero-knowledge backends.","archived":false,"fork":false,"pushed_at":"2023-01-20T23:13:45.000Z","size":364698,"stargazers_count":35,"open_issues_count":27,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-19T19:09:56.441Z","etag":null,"topics":["blockchain","cryptography","ring-signatures","ristretto","substrate","zero-knowledge"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tangle-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-29T16:55:32.000Z","updated_at":"2024-09-18T04:35:26.000Z","dependencies_parsed_at":"2023-02-12T06:31:43.756Z","dependency_job_id":null,"html_url":"https://github.com/tangle-network/anon","commit_stats":null,"previous_names":["tangle-network/anon","webb-tools/anon"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/tangle-network/anon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Fanon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Fanon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Fanon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Fanon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tangle-network","download_url":"https://codeload.github.com/tangle-network/anon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Fanon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265327802,"owners_count":23747783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","cryptography","ring-signatures","ristretto","substrate","zero-knowledge"],"created_at":"2024-12-12T07:10:25.799Z","updated_at":"2025-07-14T18:10:53.267Z","avatar_url":"https://github.com/tangle-network.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003eWebb Anon\u003c/h1\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003e🕸️  The Webb Anon Node 🕵️‍♂️\u003c/strong\u003e\n    \u003cbr /\u003e\n    \u003csub\u003e ⚠️ Under Heavy Development ⚠️ \u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n✨ Substrate based Mixer w/ Relayable transactions using bulletproofs \u0026 arkworks compatible zk-(S)NARKs ✨.\n\n**For an updated architecture of this project, check out [darkwebb-substrate](https://github.com/webb-tools/darkwebb-substrate)**.\n\n## Overview 📜\n\nAt the highest-level, this is a cryptocurrency mixing pallet that uses both trusted and non-trusted 👤 setup [zero-knowledge proofs](https://en.wikipedia.org/wiki/Zero-knowledge_proof) to facilitate mixing operations. It uses the bulletproofs library built from [dalek-cryptography](https://github.com/dalek-cryptography) to handle non-trusted zkNARKs and [arkworks](https://arkworks.rs) libraries to handle trusted-setup Groth16 proofs. The repo contains pallets that allow for creation of merkle trees with elements in Curve25519, Bn254, and BLS381's scalar field and a mixer that utilises these merkle trees to build an on-chain application or protocol.\n\n### Pallet documentation 💎\nTo generate the docs for the entire repo, run:\n```\ncargo doc --open\n```\nTo generate the docs for individual pallets and present it, run:\n```\ncd pallets/pallet-\u003cname\u003e\ncargo doc --open\n```\nThese commands will both generate the rustdocs site and open it in your default browser. The compiled docs will be located at `/target/doc/`\n\n### Dependencies 🧱\n\nThe library utilises a variety of zero-knowledge primitives, gadgets, circuits, etc. that are all implemented using bulletproofs R1CS api with Curve25519. You can find more about the components below and descriptions following thereafter:\n\n- 🔐 [Bulletproof zero-knowledge gadgets](https://github.com/webb-tools/bulletproof-gadgets)\n- 🔐 [Arkworks zero-knowledge gadgets](https://github.com/webb-tools/arkworks-gadgets)\n- 🧑‍✈️ [Transaction Relayer](https://github.com/webb-tools/relayer)\n- 🧰 [Mixer CLI](https://github.com/webb-tools/cli)\n- 🖥️ [Mixer dApp](https://github.com/webb-tools/webb-dapp)\n- 🔋 [Webb.js SDK](https://github.com/webb-tools/webb.js)\n\n### Architecture 🏗️\n\nThe architecture for the project is as follows: \n\nWe have pallets in this repo and a Substrate chain for running this runtime logic. We developed zero-knowledge gadgets that expose a prover and a verifier for interacting with this runtime. Specifically, we embed the gadget's verifiers on-chain so that proofs can be verified on-chain to eliminate any trust involved in mixing currencies. Users are responsible with generating proofs, using the tools in the gadget repo, off-chain and broadcasting these proofs to the network using a signed extrinsic or a live relayer.\n\nRelayers are used to relay transactions on behalf of users. This is necessary because extrinsics normally charge a fee for submission and so we enable a \"fee-less\" experience by allowing users to offload extrinsic submission to a third-party relayer who can submit transactions on behalf of users who wish to remain more anonymous. Note that there should still be more work put into the fee-mechanism to ensure that relayers are incentivised to run such a service in production.\n\n### Tools 🛠️\n\nThe flow for integrating these tools into your Substrate project are fairly straightforward. You will add the pallets of interest to your Substrate project and follow the runtime implementations necessary to get your node to compile. From there, you will have integrated a mixer to your Substrate project.\n\nIt is possible by extending your dApp with our types in our Typescript API to have this functionality in a front-end application for users to interact with. It is also possible to run a transaction relayer to submit withdrawal transactions from the mixers on behalf of users. Please refer to the documentation in these respective projects when facing issues and asking questions.\n\n## Build 👷\n\nInstall Rust 🦀:\n\n```bash\ncurl https://sh.rustup.rs -sSf | sh\n```\n\nInitialize your Wasm Build environment:\n\n```bash\n./scripts/init.sh\n```\n\nBuild Wasm and native code:\n\n```bash\n./scripts/build.sh\n```\n\n## Test 🦀\nTesting zero-knowledge functionality should all be handled in `--release` mode. This is due to optimisations on cryptographic operations that ensure your tests complete in a timely manner.\n\n```bash\n./scripts/test.sh\n```\n\n## Run 🚀\n\n### Single node development chain\n\nSimply Run:\n\n```bash\n./scripts/start.sh\n```\n\nOr, you could, first by purge any existing developer chain state:\n\n```bash\n./target/release/webb-node purge-chain --dev\n```\n\nand then, start a development chain with:\n\n```bash\n./target/release/webb-node --dev\n```\n\n## Using Docker 🐳\n\nWe have a 3 pipelines right now, one for the main/master branch and this should be the stable release, and one is `edge` from the `develop` branch:\n\n1. Pull the Docker Image\n\n```bash\n$ docker pull ghcr.io/webb-tools/anon:edge # change edge to latest for the master branch\n```\n\n2. Run the node using docker\n\n```bash\n$ docker run --rm -it --network host ghcr.io/webb-tools/anon:edge webb-node --dev\n```\nThis will run the node in dev mode, **without** saving any state, that is easy for testing and development.\n\n## Safety ⚡\n\nThis crate uses `#![deny(unsafe_code)]` to ensure everything implemented in\n100% Safe Rust.\n\n## Contributing 🧑‍🤝‍🧑\n\nWant to join us? take a look at some of these issues:\n\n- [Issues labeled \"good first issue\"][good-first-issue]\n- [Issues labeled \"help wanted\"][help-wanted]\n\n[good-first-issue]: https://github.com/webb-tools/anon/labels/good%20first%20issue\n[help-wanted]: https://github.com/webb-tools/anon/labels/help%20wanted\n\n## License\n\n\u003csup\u003e\nLicensed under \u003ca href=\"LICENSE\"\u003eApache 2.0\u003c/a\u003e.\n\u003c/sup\u003e\n\n\u003cbr/\u003e\n\n\u003csub\u003e\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in this crate by you, as defined in the `Apache 2.0` license, shall\nbe licensed as above, without any additional terms or conditions.\n\u003c/sub\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangle-network%2Fanon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftangle-network%2Fanon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangle-network%2Fanon/lists"}