Solanon

A privacy-preserving ANON token mixer on Solana, implemented in Anchor and verified with Succinct SP1.

Overview

Solanon is a zero-knowledge privacy solution that allows users to deposit and withdraw ANON tokens while maintaining anonymity. It uses a combination of cryptographic primitives to ensure that deposits and withdrawals cannot be linked.

Merkle Tree Structure

Poseidon-hashed Incremental Merkle tree with depth 20 and a 33-root history buffer, supporting up to 2²⁰ deposits.

Zero-Knowledge Proofs

Uses Succinct SP1-generated Groth16 proofs for unlinking deposit and withdrawal addresses in a single on-chain instruction.

Fixed Denomination

Configurable deposit amount (e.g., 1 ANON) ensures transactional uniformity, enhancing the anonymity set.

How It Works

Root. . .Depth 202²⁰ Deposits33-Root History Buffer

1
Deposit

Users deposit a fixed amount (e.g., 1 ANON) and submit a commitment that is added to the Merkle tree.

2
Generate Proof

A zero-knowledge proof is generated off-chain using SP1, proving knowledge of a deposit without revealing which one.

3
Withdraw

The proof is verified on-chain, confirming Merkle tree inclusion and nullifier uniqueness before processing the withdrawal.

Technical Details

Implementation

Rust + Anchor framework
Poseidon-hashed Incremental Merkle tree (depth 20)
33-root history buffer to ensure root validity

Smart Contract Functions

initialize(deposit_amount)
deposit(commitment)
withdraw(proof, public_inputs)

Security Considerations

On-Chain Verification

All cryptographic operations are performed on-chain, ensuring complete verification of proofs.

Nullifier System

Prevents double-spending by ensuring each deposit can only be withdrawn once.

Root History

33-root history buffer maintains record of previous valid roots for withdrawal verification.

Poseidon Hash

Optimized for zero-knowledge proof efficiency with strong cryptographic guarantees.

Ready to experience financial privacy?

Built with Rust, powered by Solana, secured by succinct zero-knowledge proofs.