The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Tidex6 — private payments on Solana listing page.
I grant access, not permission.
The Rust-native privacy framework for Solana.
tidex6 is a Rust-native, open-source framework that lets Solana developers add full transaction privacy to their Anchor programs through a small SDK surface. Transactions are private by default — sender, receiver, and amount are hidden. Privacy comes in two layers: a Groth16 shielded pool hides the link between sender and receiver, and a Token-2022 Confidential Transfers layer (wUSDC / wUSDT hidden-amount pools, live on mainnet and devnet) hides the amount itself. Users can optionally share a viewing key with someone they trust (an accountant, an auditor, a family member) to selectively disclose history, on their own terms.
Status: full MVP product stack live on Solana mainnet. The privacy-core verifier program at CSDD31Zmm3pRMHAMB8c3TBqsj9mbmH2rXBzV7jrsJhcd is OtterSec-verified and immutable (upgrade authority renounced). The full feature stack — deposit, ZK withdraw (Groth16 WithdrawCircuit<20> verified via alt_bn128 syscalls), per-nullifier double-spend PDA, recipient-binding front-run protection, unlinkable withdraw via reference relayer at relayer.tidex6.com, opaque hex notes + post-quantum ML-KEM-768 encrypted memos in a dedicated on-chain account, stealth payments (the recipient is never handed the note — they scan the chain with their own ML-KEM secret) and per-deposit revoke, client-side proof generation in the browser via WebAssembly (tidex6-prover-wasm, ~1.7 s per proof, secret never leaves the user's tab), user-facing tidex6 CLI, tidex6-client SDK, web app at tidex6.com, the flagship examples/private-payroll three-binary demo, and a third-party CPI integration example (tidex6-tip-jar, ~30 lines of Rust to add privacy to any Anchor program — deployed and OtterSec-verified on mainnet at 5WohQRRzC31SkFMSWgEqJC9p2KvNhGkQbzUSsNUi9b9x in April 2026, demo deployment since closed) — all validated end-to-end on mainnet. MVP shipped for the Colosseum Frontier hackathon (2026-05-11); development continues — since then the hidden-amount pools (Token-2022 Confidential Transfers, wUSDC AYTRKmF8VBdqRWGZr9c6Mx582SRm2tbUEwMesFMhcPcU and wUSDT QGPYpwyMnWhJUPGieXyJU5jhAkKsKuU7iGN53VCWPz2), a configurable per-operation fee paid on top by the sender and collected privately as a stealth note (ADR-016), and the live public trusted-setup ceremony at ceremony.tidex6.com (ADR-017) have shipped.
DEVELOPMENT ONLY. Pre-audit, single-contributor trusted setup, hackathon-grade trust assumptions. Verifier
upgrade-authorityhas been renounced withsolana program set-upgrade-authority --final— the program is immutable. Do not use to secure real funds. A public multi-party trusted-setup ceremony is live at ceremony.tidex6.com (publicly verifiable transcript, see CEREMONY.md); the on-chain VK is replaced only when the ceremony finalizes and a fresh immutable verifier ships. Seedocs/release/security.md.
Everything in this repository builds with cargo build --release after a plain
git clone, and the on-chain programs build reproducibly in Docker via
solana-verify build. Three crates are deliberately outside the workspace and
build on their own terms:
| crate | how to build it | why it is separate |
|---|---|---|
crates/tidex6-prover-wasm | wasm-pack build | targets wasm32-unknown-unknown and pulls browser-only crates |
crates/tidex6-ct-lab | cargo build --manifest-path crates/tidex6-ct-lab/Cargo.toml | pinned to newer spl-token-2022 / solana-* than the workspace |
crates/tidex6-mcp | cargo build --manifest-path crates/tidex6-mcp/Cargo.toml | needs a checkout of our internal core (forge) next to this repo, so it cannot build for anyone else |
The last one is worth stating plainly rather than leaving to be discovered: the
hosted MCP server depends on a private crate outside this repository. While it
was a workspace member, cargo build failed in a clean clone for everybody who
does not have that checkout — which is everybody but us — and for the same reason
a program verifier could not build the repository on its own machine. It is now
its own workspace. Nothing else here depends on it: the payment protocol, the
programs, the SDK, the CLI and the local MCP server (crates/tidex6-mcp-local)
are all self-contained.
The pools in production move USDC and USDT with the amount hidden on chain. Two ways in, neither of which needs this repository built from source:
In a browser — tidex6.com, any Solana wallet. The proof is generated inside your tab; the secret never leaves it.
From an AI agent or the command line — the local MCP server signs with a key that stays on your machine, under limits enforced in code:
Tools: send, payments, collect, audit, whoami. Full description in
crates/tidex6-mcp-local/README.md.
The tidex6 CLI below talks to the v0.1 fixed-denomination SOL pool, which
predates the stablecoin pools and remains available — it carries no issuer
freeze_authority, which is the reason to keep it. Amounts there are visible on
chain; only the link between sender and recipient is hidden. For hidden amounts
use the stablecoin path above.
Integrate a shielded pool into your own Rust app in a handful
of lines using the tidex6-client builder API:
examples/private-payroll is the
full story of Lena sending monthly support to her parents, with
her accountant Kai producing a tax report from a shared scan
file. Three binaries — sender, receiver, accountant —
hit live mainnet.
The script splits one terminal into three tmux panes and runs the whole flow side by side — deposit → rebuild → prove → withdraw → report — in under a minute.
alt_bn128 syscalls in under 200,000 compute units per proof.light-poseidon) and onchain (solana-poseidon) components.relayer.tidex6.com signs and submits withdraw transactions so the user's wallet never appears on-chain as the payer. The proof commits to the specific relayer (public input) so front-runners cannot redirect the fee. The in-circuit relayer_fee policy for the reference service is zero; anyone may run their own relayer with any fee. Separately, deposits carry a configurable per-operation fee (ADR-016): the sender pays it on top (it may be zero), it is shown before signing, and it is collected privately — as a stealth note to the operator inside the same shielded pool.tidex6-prover-wasm compiles the Rust prover to WebAssembly. The browser parses the deposit note locally, derives commitment and nullifier_hash via in-WASM Poseidon, and runs Groth16 entirely on the user's machine in ~1.7 s on M-series CPUs. The user's secret and nullifier never reach our server, the relayer, or anyone else — formally provable by inspecting WebAssembly.Module.imports(...) of the deployed .wasm artefact, which contains zero fetch / XMLHttpRequest / WebSocket symbols. Sandbox is the proof.tidex6_verifier::deposit and inherit the full privacy stack. The reference example tidex6-tip-jar shows the pattern in ~30 lines of Rust (built and OtterSec-verified against the historical v1 verifier — re-point it at the current verifier before reuse); payroll, royalty splitters, subscription protocols, and dark-pool DEX hooks follow the same pattern.Full technical detail: docs/release/PROJECT_BRIEF.md.
Onchain (Anchor 1.1.2 program):
anchor-lang = "=1.1.2"groth16-solana = "0.2" — Groth16 verifier via alt_bn128 syscallssolana-poseidon = "4" — native Poseidon syscallOffchain (client and prover):
arkworks 0.5.x — ark-bn254, ark-groth16, ark-crypto-primitives, ark-r1cs-std, ark-relations, ark-ff, ark-ec, ark-serialize, ark-ed-on-bn254light-poseidon = "0.4" — circom-compatible Poseidon, byte-for-byte equivalent to the onchain syscallml-kem = "0.2", chacha20poly1305 = "0.10" — post-quantum ML-KEM-768 memo encryptionanchor-client = "1.0", solana-sdk = "4.0"Closed by default. Open by user choice. The protocol enforces nothing about who uses it — it builds rails where honest behaviour is the shortest path. Users who choose to prove their legitimacy do so to someone they picked, through a key they hold. There is no backdoor, no key escrow, no recovery service. The architecture has a strong opinion about how the tool can be used; it has no opinion about who uses it.
Full manifesto: docs/release/THE_LEGEND.md.
Public documentation lives in docs/release/:
Russian translations of all of the above are available in docs/release/ru/.
Dual licensed under either MIT or Apache-2.0 at your option.
No token, no SaaS tier. The Groth16 verifier is a permissionless, immutable primitive anyone can integrate; the hidden-amount pools are operated deployments with a configurable (possibly zero) per-operation fee.
Issues and pull requests on GitHub.
tidex6.rs — I grant access, not permission.