Account Setup
Connect a Wallet
Start by connecting an Ethereum wallet. Veil supports any wallet available through the app — MetaMask, Coinbase Wallet, Rainbow, WalletConnect, Ledger, and others.Signing In
After connecting your wallet, sign in to derive your Veil keypair. There are three ways to sign in:Sign a Message (EOA wallets)
Sign a message with your Ethereum wallet. This signature does not move any funds and does not require a transaction — it allows the protocol to derive your unique encryption keys on the client side.
Passkey
Use a passkey (biometrics, security key, or platform authenticator) to derive your Veil keypair. The passkey flow uses the WebAuthn PRF extension to produce a deterministic key bound to the Veil origin and your connected wallet. Each wallet supports one Veil passkey. The same passkey produces the same Veil key on any device where the passkey is synced (iCloud Keychain, Google Password Manager, 1Password, etc.).Import a Private Key
If you already have a Veil private key — or generated one externally — you can import it directly. This works for any wallet type, including smart accounts.Whichever method you choose, you can inspect and back up your derived Veil key in the Key Management section of your wallet.
Register
You are required to complete a register transaction. This one-time onchain action publishes your public deposit key to the protocol. The public deposit key is derived from your Ethereum wallet and enables other users to send you shielded transfers without revealing your private information. By storing your public deposit key onchain, the protocol can securely recognise your account for private deposits and transfers.
Any Ethereum address, verified or not, can register to receive private transfers within the pool.
Depositing into the Pool
When you deposit, your public onchain funds are transferred into the private pool, where they are shielded from public view. The deposit updates your shielded balance, which is only accessible through your wallet’s encryption keys. The minimum (e.g. 0.01 ETH for the ETH pool) applies to the amount that ends up shielded after the 0.3% fee.
Private Transfers
When you initiate a transfer, the transaction is relayed. This ensures that the sender, receiver, and transfer amount are never exposed onchain. Instead of sending funds directly to a public address, the protocol uses each recipient’s public deposit key to encrypt the transfer details. Only the intended recipient can decrypt and access the funds. The actual movement of assets within the pool remains confidential, and external observers cannot link senders, recipients, or amounts.
Withdraw Funds from Pool
To withdraw funds from the Pool, initiate a withdrawal from your shielded balance to any external Ethereum address, including a brand new or unused wallet. The withdrawal is relayed through the protocol. The withdrawal cannot be linked back to the original deposit or prior transfers, preserving your privacy throughout the entire process. This approach allows users to securely move assets out of the privacy pool without exposing their transaction history or compromising anonymity.You can withdraw any amount up to your available shielded balance. There are no fixed denominations.

