V.1 beta•Privacy Protocol for $REDO on TON
ZK privacy protocol breaking the on-chain link between deposits and withdrawals. Groth16 proofs verified natively on TVM via BLS12-381 opcodes.
How it works:
1. Deposit 100 REDO → receive a secret
2. Withdraw anytime to any wallet
3. ZK proof ensures unlinkability
Smart contract :
EQBUH-7pbBjvVKXe7FjPnCSIJ2vvUedfJmjoWdKfLYMC_1KFMini-App : @ZkResistorBot
GitHub : tonresistor/zk-resistor
Group : @ResistanceForum
Privacy is Resistance
For test purposes only
Please open Telegram to view this post
VIEW IN TELEGRAM
ZKResistor is a factory for fixed-denomination privacy pool for TON and any jettons. Think of Tornado or Tonnel, but anyone can create a pool for any jettons.
You deposit a fixed amount, then later withdraw to a fresh address. A zero-knowledge proof breaks the on-chain link between depositor and recipient.
Under the hood: Groth16 zk-SNARKs over BLS12-381, verified on-chain inside the TVM. Merkle tree of depth 20 enabling 1M deposits per pool.
A trust setup still needs to be done.
Groth16 needs a per-circuit trusted setup. If the secret randomness of that setup ever leaks, someone could forge withdrawal proofs and drain pools.
The fix is a public multi-party ceremony.
Each participant injects randomness and destroys their own secret. As long as one participant stays honest, the setup is permanently secure and no one can forge proofs. Every contribution is public and verifiable.
Phase 1 is open. Contributing is Docker-based, run a script and add your randomness. It takes a few minutes.
One honest contribution from you makes this trustless for everyone.
ZKResistor Contracts :
https://github.com/TONresistor/zk-resistor-contracts
Live on a mainnet test deployment:
zk.resistance.dog (for tests only.)
How to contribute:
https://github.com/TONresistor/zk-resistor-ceremony?tab=contributing-ov-file
Please open Telegram to view this post
VIEW IN TELEGRAM
Phase 1 of the trusted setup closes on June 20, 2026, at 16:00 UTC.
The phase1 (PoT) has been open to anyone. To seal it, we cap it with a public randomness that nobody can predict or control, not even me.
That randomness is Drand round 6218006 (round at 16:00 UTC on 20 June) on the League of Entropy mainnet. Which stays unknown until the round publishes that day. We apply it as the final phase-1 contribution.
Once the randomness beacon from Drand is applied, phase 1 is sealed and no further contributions can be added to it and phase 2 opens right after
If you want your contribution in phase 1, add it before June 20, 16:00 UTC :
github.com/TONresistor/zk-resistor-ceremony
📢 @ResistanceTools | 💬 @zkproof
The phase1 (PoT) has been open to anyone. To seal it, we cap it with a public randomness that nobody can predict or control, not even me.
That randomness is Drand round 6218006 (round at 16:00 UTC on 20 June) on the League of Entropy mainnet. Which stays unknown until the round publishes that day. We apply it as the final phase-1 contribution.
Once the randomness beacon from Drand is applied, phase 1 is sealed and no further contributions can be added to it and phase 2 opens right after
If you want your contribution in phase 1, add it before June 20, 16:00 UTC :
github.com/TONresistor/zk-resistor-ceremony
Please open Telegram to view this post
VIEW IN TELEGRAM
Phase 1 of the ZKResistor trusted setup is closed.
23 contributors took part, then phase 1 was sealed with a public randomness beacon (Drand round
Phase 2 is now open:
The per-circuit keys for the insert and withdraw circuits, derived from phase 1. Same process, run a script in Docker and add your randomness, a few minutes.
As long as one contributor per phase is honest, no one can forge proofs.
Phase 2 closes 2026-07-07 16:00 UTC, sealed by Drand round
Contribute:
https://github.com/TONresistor/zk-resistor-ceremony
23 contributors took part, then phase 1 was sealed with a public randomness beacon (Drand round
6218006), unpredictable to everyone including us until it published. The full transcript is public and verifiable.Phase 2 is now open:
The per-circuit keys for the insert and withdraw circuits, derived from phase 1. Same process, run a script in Docker and add your randomness, a few minutes.
As long as one contributor per phase is honest, no one can forge proofs.
Phase 2 closes 2026-07-07 16:00 UTC, sealed by Drand round
6266966.Contribute:
https://github.com/TONresistor/zk-resistor-ceremony
The trusted setup is complete:
Phase 1: 23 contributors, Drand round
6218006.Phase 2: 12 contributors, Drand round
6266966.The complete ceremony transcript, artifacts and verification process are public.
The final Insert and Withdraw keys are integrated into the Tolk contracts.
ZKResistor lets anyone create fixed-denomination privacy pools for GRAM and Jettons.
- Groth16 proofs can be generated locally
- Full recipient address bound to the proof
- Withdraw through your wallet or a relayer
- No admin, upgrades, or recovery path
- 1,048,576 lifetime deposits per Pool
A relayer can broadcast a withdrawal, but cannot change its recipient or redirect the funds.
Your Secret Note is the only way to withdraw.
Save it securely. There is no recovery.
Contracts :
GitHub | TON verifier
TMA:
@zkresistorbot
Web App:
zk.resistance.dog
CLI (for self-hosted use):
https://github.com/TONresistor/zk-resistor-cli
Please open Telegram to view this post
VIEW IN TELEGRAM