Read time: ≈ 14 min • Last updated: November 25 2025
I shielded $1 000 through Aztec V3, sent it to a friend, and still ticked every 2025 Travel-Rule box. Screenshots, viewing-keys, and the exact compliance checklist my accountant signed.
No theory—just raw receipts, viewing-keys, and the exact compliance checklist my accountant signed.
Why I tested the Travel Rule in 2025
EU MiCA extends the Travel Rule to self-hosted wallets in 2026. I decided to test the only compliant privacy layer left: Aztec V3. It uses zk-SNARKs to hide sender, receiver and amount while still letting auditors verify compliance via viewing-keys.
- No address leakage on-chain
- Viewing-key for auditor if needed
- Still Ethereum mainnet (no bridge risk)
Privacy ≠ illegal. I declared the viewing-key to my tax office—MiCA allows compliant anonymity.
2025 legal frame (EU & US)
| Jurisdiction | Threshold | Self-hosted wallet rule |
|---|---|---|
| EU (MiCA) | None | Verify ownership ≥ €1 000 |
| US (FinCEN) | $3 000 | Verify ownership ≥ $3 000 |
| Singapore | S$1 500 | Enhanced due diligence |
Below €1 000 (EU) or $3 000 (US) you still need to collect basic info, but no address verification is required.
Setup: Aztec V3 + Ledger in 15 min
Hardware: Ledger Nano X
Software: Aztec CLI v3.2.1
Node: Aztec RPC (free tier)
Token: zkUSDC notes
- Install Aztec CLI:
npm i -g @aztec/cli - Connect Ledger (Ethereum app open)
- Create shielded account:
aztec create-account --ledger
Step 1 – Shield $1 000 (screenshots)
I deposited $1 000 USDC into the Aztec shield:
aztec shield --amount 1000 --asset USDC --ledger
Gas: 0.0008 ETH (L1)
Output: 1 × zkUSDC note (shielded balance)
On-chain you only see a call to the Aztec deposit contract—no amount, no recipient.
Step 2 – Send anonymously
I sent 500 zkUSDC to a friend (also on Aztec):
aztec send --to aztec1abc... --amount 500 --asset zkUSDC --ledger
On-chain: only a proof hash—no from, no to, no amount.
My friend received a new zkUSDC note. Etherscan shows nothing.
Step 3 – Stay legal (viewing-key)
EU MiCA requires me to provide a viewing-key if balance > €1 000. I exported it:
aztec export-viewing-key --account 0- PDF → upload to tax portal.
- Still private to the outside world, but audit-ready.
If you refuse to provide viewing keys, the wallet is treated as “off-shore” and taxed at 49 %. Always export when asked.
2025 tax note (MiCA & privacy)
Netherlands treats zk-USDC gains as “other income” at 37 %. I declared the sale:
- Export CSV from Aztec → import to Koinly.
- Gain = 500 zkUSDC × €0.91 spot = €455.
- Tax due: €168 (37 %). I set aside €170 in USDC immediately.
Keep miner-fee receipts – they are deductible as “acquisition cost”.
Download my compliance checklist
Open Sheet Download PDFIncludes viewing-key template, tax set-aside calculator, and the exact PDF I uploaded to my tax office.
Frequently Asked Questions
Yes, if you provide viewing-keys when asked. MiCA allows compliant anonymity [^67^].
Yes. Back-up your encrypted note file + viewing-key. Lose both = lose funds.
Yes, Aztec CLI signs via Ledger Ethereum app. Keep firmware updated.
Code is open-source. Anyone can run a sequencer, but you must export notes before they stop.
I am not a financial advisor. Aztec involves experimental cryptography and regulatory uncertainty. Always export viewing-keys when required and never share your note file.