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.
See an on-chain transaction example

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!