Who is this for?
Anyone interested in a real-world implementation of stealth addresses and privacy-preserving payments. This page covers Fluid Key’s unique approach, UX, and technical lessons.
Background: For a general introduction to stealth addresses, see the Unwallet User Guide or Stealth Address Technical Guide.
Fluid Key User Experience
- Claim your unique Fluid Key ID for free in the Fluid Key app.
- Share your Fluid Key ID with anyone who wants to send you funds.
- The sender can search for your Fluid Key ID on Etherscan and find a resolver address to send funds to.
- Each time the page is refreshed, a new resolver address is generated from your Fluid Key.
You never need to manage addresses manually—Fluid Key handles it for you!
Example: Sending and Spending
- Sent $0.10 USDC to two different stealth addresses on Base.
- You can spend all funds from multiple stealth addresses in a single transaction.
- Gas fees can be deducted from the asset itself (e.g., USDC), allowing you to withdraw your entire balance efficiently.
Fluid Key for Developers
- Fluid Key has open-sourced their SDK.
- You can build your own Fluid Key proof-of-concept using their tutorial video.
How Does Fluid Key Work?
1. What are Stealth Addresses in Fluid Key?
- Stealth addresses are actually Safe smart accounts controlled by randomly generated EOAs (Externally Owned Accounts) created using the Fluid Key SDK.
- Only the user owns the spending key required to move funds from the Safe.
2. How are Stealth Addresses Generated?
- Safe smart account addresses are deterministically derived from random EOAs and deployment parameters.
- Anyone can generate the Safe address, but only the user controls the spending key.
3. Moving Funds from Multiple Stealth Addresses
- Safe allows transactions to be signed off-chain and executed by a bundler.
- The bundler charges a fee in the sending asset (e.g., USDC).
- Users can move all their funds from multiple stealth addresses with one click.
Privacy: Unlinkability vs. Untraceability in Fluid Key
- Unlinkability: Each transaction uses a unique stealth address, so external observers cannot link transactions to the same user.
- Untraceability: Not fully provided by Fluid Key alone. Transaction paths can be traced, but the identity of the intermediary remains hidden.
Example
- Merchant 1 sends $100 to User X’s stealth address.
- User X later spends funds with Merchant 2.
- Observers can trace the flow, but cannot link User X as the intermediary.
Achieving Full Privacy with Privacy Pools
- Deposit funds into a privacy pool to break the link between sender and future transactions.
- The pool splits funds and sends them to multiple stealth addresses.
- Spending from these addresses appears as random transactions, ensuring both unlinkability and untraceability.
UX Challenges
- Managing many stealth addresses (each a smart contract account) means handling many EOAs.
- Most DeFi apps only connect to one wallet at a time, making it hard to combine balances across stealth accounts for transactions.
Fluid Key is open source and actively improving privacy and UX for on-chain users!