Skip to main content

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. Sign in with EOA Sign in with EOA Your keys are generated deterministically from the wallet signature, so you can access your shielded balance from any device using the same Ethereum account.

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.).
A passkey-derived keypair is different from a signature-derived keypair for the same wallet. Pick one method and stick with it, or back up your private key so you can switch via import.

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.
You only need to register once per address. After that, your wallet is ready to receive shielded funds from other verified users.
Register transaction Register transaction
Any Ethereum address, verified or not, can register to receive private transfers within the pool.

Depositing into the Pool

After depositing, your funds can be privately transferred or withdrawn at any time.
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. Depositing into Veil Pool Depositing into Veil Pool

Private Transfers

The Veil Pool supports private transfers between registered users.
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. Private transfer

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.
Withdraw funds