Private Ethereum Accounts & Onchain Privacy
Platus is a private account layer for Ethereum. It uses encrypted notes and zero-knowledge proofs to validate private payments, while passkeys make account access feel like signing in to an app rather than managing a seed phrase.
What Platus does
- Shielded balances: tokens are represented as cryptographic notes in an on-chain Merkle tree. The chain sees commitments; note value, asset, and recipient data remain encrypted.
- ZK-proved transactions: each 2-in / 2-out Action proves a spend is valid without exposing private inputs or outputs.
- Private, composable execution: shielded value can drive on-chain calls through per-application EIP-7702 AppAccounts, then return to the private pool.
- Passkey-secured access: WebAuthn passkeys derive account material locally, avoiding a seed-phrase-first user experience.
- Post-quantum note encryption: note delivery combines BabyJubJub ECDH with ML-KEM-768 so confidentiality does not rely on a classical primitive alone.
How Platus compares
Platus follows the path of Ethereum privacy but with less friction and more freedom. Compared with Tornado Cash, Railgun, and Privacy Pools, what matters is simple: cost, time, and what your funds can do once they're shielded.
| What you care about | Platus | Tornado Cash | Railgun | Privacy Pools |
|---|---|---|---|---|
| On-chain gas, per private tx | ~350k/action in a 16-action batch | ~480k per deposit / withdraw | ~1.50M per private transact, ~762k to shield | deposit ~390k, private withdraw ~620k |
| Proof generation time | 0.57 s | 1.77 s | 0.50 s – 3.11 s by circuit shape | 0.82 s |
| First-use download | ~20 MB (one Action circuit + compressed CRS BN254 elliptic-curve points) | ~11.5 MB (proving key + circuit) | ~894 MB (proving keys across 91 circuit shapes) | ~20 MB (proving key + circuit) |
| Distinct circuits you download & trust | 1 | 1 (but one pool per fixed denomination) | 91 separate circuits, each its own key | 1 |
| Protocol fee | 0.1% on deposits only | None at the protocol | Shield (0.25%) + Unshield (0.25%) = 0.5% | 0% or 0.5% |
| Can use DeFi? | Yes with app accounts | No | Yes | No |
| Fresh stealth address every tx | Yes | No | No | No |
| Amounts | Any value | Fixed (0.1 / 1 / 10 / 100 ETH) | Any value | Any value |
| Post-quantum note encryption | Yes, BabyJubJub ECDH + ML-KEM-768 | No | No | No |
| Proof system / trusted setup | Noir + UltraHonk, universal parameters, no per-circuit ceremony | Groth16, per-circuit ceremony | Groth16, per-circuit ceremony ×91 | Groth16, per-circuit ceremony |
Start with the system model
- System overview: components, trust boundaries, and the end-to-end flow.
- Transaction lifecycle: what happens from a user intent to settled state.
- Security model: the guarantees Platus targets and the assumptions behind them.
Explore the cryptography
- Stealth addresses: how one account can receive through unlinkable addresses.
- Post-quantum note encryption: how recipients and senders recover encrypted notes.
- Notes and commitments: the private state model behind the shielded pool.
Explore the implementation
- App accounts: the EIP-7702 execution layer for private on-chain actions.
- Orchestrator: the protocol's on-chain entry point.
- Action circuit: the constraints enforced for each private action.
For product context and research updates, visit the Platus website and blog.