How does Kusama Shield work?
Kusama Shield is a Zero Knowledge powered multi-asset shielded pool, allowing anyone to deposit any supported token into the shielded pool and withdraw without a link inbetween, providing unlinkable transactions.
The project runs as autonomous EVM-compatible smart contracts on Kusama and Polkadot AssetHub, powered by RISC-V PVM.
Shielded Send
The Send tab lets you pay any invoice privately. Your funds pass through the V7 shielded pool, breaking the on-chain link between sender and recipient:
Your Wallet ── deposit ──▶ Shield Pool (V7) ── ZK proof ──▶ withdraw ──▶ Recipient
Two modes:
- DOT → DOT: Send DOT/PAS directly to any address with full unlinkability
- DOT → ANY: Deposit DOT, receive BTC/ETH/SOL or any of 70+ currencies at the destination
See Shielded Send for full details.
V7 Shielded Pool
The V7 pool is the current version deployed on Paseo testnet and Polkadot mainnet:
| Feature | Description |
|---|---|
| 8 Public Signals | Stronger privacy guarantees |
| Linkability Fix | No deposits[] mapping — deposits and withdrawals are unlinkable |
| Known-Roots Window | 16 recent roots accepted, preventing griefing |
| Proxy Withdrawals | Route through proxy contract for extra unlinkability |
See V7 Shielded Pool for the full specification.
Smart contract architecture:
Kusama Shield consists of 3 main contracts that interact with each other. For a more detailed view read the Zero Knowledge Circuit section here on the documentation page.
View source: https://codeberg.org/KusamaShield/Solidity_helpers
How anonymous is the system?
Kusama Shield provides unlinkable transactions. The privacy score can be measured by the K-anonymity score — displayed in the Privacy Dashboard. The more users that deposit and withdraw at the same time, the higher the anonymity. The goal is to get lost in the crowd.
How does it compare to Monero?
Monero relies on decoy transactions. To calculate the anonymity score of your Monero transaction we need to look at a block explorer, and calculate
\( k = \frac{\text{Total number of decoys in the block}}{\text{Total number of transactions in the block}} \)