Contribute now
Fresh entropy is mixed into the setup parameters in this tab and destroyed here — only the new parameters leave. $0 · no deposit · ~1 minute.
Any wallet, any network we support — Solana or EVM. One rule: the address must have at least one transaction. Brand-new empty wallets are rejected.
tidex6 Trusted Setup
Public ceremony for private payments on Solana. $0 · no deposit · ~1 minute. Your wallet is only your name on a public list. We want 20+ real wallets.
What is a trusted setup, and why does it need a ceremony?
The short version of the cryptography.
tidex6 proves things in zero knowledge with Groth16 — the same proof system used across the ZK ecosystem. Groth16 is fast and tiny to verify on-chain, but it needs a set of public parameters (a Common Reference String) that must be generated once, up front.
Generating those parameters produces a piece of secret randomness — the “toxic waste.” Whoever knows the toxic waste can forge fake proofs: mint value from nothing, or withdraw money that was never deposited. If it is destroyed, the parameters are perfectly safe. If it is kept, the whole system can be counterfeited.
So the only question that matters is: was the toxic waste really destroyed?
With 10–20 independent people, that is practically impossible. This is the “1-of-N” trust model.
That is the whole point of a public ceremony: it removes the “trust one party” assumption and replaces it with “trust that not everyone is dishonest.” The more independent contributors, the stronger it gets — which is exactly why we want you.
What already works
This is not a whitepaper. The protocol is live on mainnet today.
Don't take our word for it — it's all checkable on-chain. Open the pool program ↗, the verifier ↗, or run the full two-layer flow yourself from the app. Nothing here is a promise — it is running right now.
Where we are
The honest current state — not a wishlist.
- Wrap → deposit → withdraw to a fresh address → confidential payout → unwrap — verified live
- Client-side wrap + deposit + withdraw with memo & auditor — the secret and the amount never leave the tab (WASM)
- Multi-asset: hidden amounts for both USDC and USDT on mainnet
- Our own security review — before any money sat in the pool — found two gaps in the original withdraw circuit: the recipient was bound by a lossy modular reduction (a hostile relayer could redirect a payout to a colliding address), and the amount lived outside the commitment.
- The new circuit binds recipient and relayer by their full 256-bit keys and puts the amount inside the commitment with a 64-bit range check. Same prover, same curve — different parameters, hence a fresh ceremony.
- Public, multi-party generation of the production parameters — this page
- The six contributions to the v1 circuit are preserved in the public transcript (log, genesis, final state) but do not carry over: parameters are per-circuit by construction. If you contributed before, please contribute again — it takes the same minute.
- Deploy a fresh verifier carrying the ceremony parameters, migrate the pool to it, re-verify with OtterSec, and renounce its upgrade authority
- Regulator-auditable pools — a pool-level viewing key that audits without the power to freeze
- Proof of innocence / association sets — prove your funds are clean without revealing who you are
- Shared anonymity pool — one crowd across every integrating app
Verify — don't trust
The server's log is not the source of truth. The published chain is.
The full transcript is public: the genesis parameters and the current chain of contributions. Download both and re-check everything on your own machine — every contribution carries a cryptographic proof of knowledge, and the verifier confirms the whole chain links genesis → … → current with nothing dropped, reordered or tampered:
curl -O https://ceremony.tidex6.com/transcript/genesis.state
curl -O https://ceremony.tidex6.com/transcript/current.state
git clone https://github.com/koshak01/tidex6 && cd tidex6
cargo run --release -p tidex6-circuits --bin ceremony_verify -- ../genesis.state ../current.state
The tool prints an attestation for every contribution — the same hex shown in the list above. Find your wallet in the output and you have independently proven your randomness is part of the final parameters. log.json ↗
How the ceremony ends
Nobody — not even the very last contributor — can bias the result.