ETH$3,420
Trading/wallets

Wallets & keys

Self-custodial wallets with no seed phrase, a delegated key that structurally cannot withdraw, up to 10 wallets per account, and private transfers between them.

hood.dev wallets are self-custodial, created in seconds, and there is no seed phrase to lose. Keys are generated and held inside Turnkey’s secure enclaves under a sub-organisation that belongs to you — we never hold your private key, cannot reconstruct it, and cannot move your funds off-platform. This page explains exactly why that last claim is structurally true rather than a promise.

#How custody works

Signing in creates a Turnkey sub-organisation for you and your first wallet inside it. Your credential is the root authority on that sub-org. Ours is not — the key our backend uses was deliberately demoted out of your sub-org’s root quorum at signup, which means it cannot add authenticators, cannot change signing policies, and cannot grant itself new permissions. Everything it is allowed to do was fixed at the moment your account was created, by policies only you can alter.

Where keys live
Turnkey secure enclaves. Never on our servers, never in your browser, never in a log.
Who is root
You. Our backend key is not in your root quorum.
Seed phrase
None to write down. Recovery is a second authenticator (below).
Exportable
Yes — any wallet, any time, see Export & import.
Session length
24 hours, then you re-authenticate.

#Signing in

  • Passkey (WebAuthn) — the primary method. Face/fingerprint on your device; nothing to remember and nothing phishable.
  • An existing wallet — MetaMask, Phantom and friends work as a credential. Note they are identity and funding sources, not trading wallets: external signing means a popup per trade, which is the UX this whole design exists to avoid.
  • Email code — both a login method in its own right and the recovery path for a lost passkey.
Add a second authenticator
A single passkey on a single device is a single point of failure — lose the device and there is no one who can recover the account for you, us included. That is the honest cost of real self-custody. Add an email credential or a second passkey once you are set up.

#Two keys, and why one of them cannot hurt you

Popup-free trading needs a key that can sign without prompting you. Handing such a key unrestricted power would defeat the point, so there are two signing paths and the platform picks between them by the destination of the transaction, not by who asked.

PathSignsCan reach
Delegated keyInside the enclave, no prompt — this is what makes a trade one click.Only what a Turnkey policy allowlists: chain 4663, the platform contracts (trade manager, launcher, WETH, routers) and your own wallets. It cannot send to an arbitrary address.
Your own credentialPrompts you (passkey / session), then we relay the signed transaction.Anything — because you are root in your own sub-org. Used for every external withdrawal and every per-token contract.
The security property that matters
The delegated key’s policy is an eth.tx.to allowlist. There is no entry on it that is an arbitrary destination, so that key cannot move your funds off the platform — not to us, not to an attacker who obtained it. Anything that does leave requires your own credential and prompts you. And because our key is not in your root quorum, we cannot widen that policy: only you can.

The practical rule, if you are reading transaction history and wondering why some actions prompt and others do not: the fixed platform singletons ride the delegated key, while dynamic addresses — the token contract itself when you edit metadata or burn, a per-token staking pool, a per-venue fee locker, an external withdrawal — ride your own credential, because a per-token address can never appear on a static allowlist.

#Running several wallets

Your first wallet is created at signup. You can add more — each a real Turnkey wallet with its own key, its own address and its own balance — up to a cap of 10 per account. Label them, archive the ones you are done with, and switch between them anywhere in the app.

Cap
10 wallets per account (Turnkey’s per-sub-org ceiling is 100; we stay well under it).
Keys
Independent. One wallet’s key is not derived from another’s.
Identity
Your first wallet carries your profile. Additional wallets are anonymous by default — they are not publicly tied to your name or to each other.
Switching
Per-wallet everywhere: balances, positions, orders, portfolio filters.
A new wallet needs one signature from you before it can receive transfers
This is the demotion in action. The signing policy written at signup allowlists your first wallet as a transfer destination — and our backend key cannot add to that policy, by design. So when you create a second wallet, the app hands you a small policy for your own credential to stamp. It takes one prompt and rides the session you already have. Until you do, the new wallet trades perfectly well; only transfers into it are gated.

#Moving ETH between your wallets

An ordinary internal transfer: native ETH, from one of your wallets to another, signed by the delegated key (your own wallets are on its allowlist — that is what the ceremony above adds) and settled on-chain in the same second. No fee beyond gas.

heads up
It is a normal on-chain transfer, which means it is publicly visible and publicly linkable. Anyone reading the chain can see that address A sent to address B. If the point of using several wallets is that they should not be connected to each other, an internal transfer defeats it — use a private transfer instead.

#Private transfer

A private transfer does the same job as the internal transfer above, without leaving the link. The funds leave the chain, pass through an independent exchange step, and come back as ETH in the destination — so the chain never records a payment from A to B at all. It takes minutes rather than seconds and costs more than an ordinary send, which is the price of the round trip.

It is no longer only a wallet-to-wallet move: the same rail also sends out to any address and receives in from anyone, and it has a page of its own where you can queue several at once. The quick path between two of your wallets still lives inside the Transfer flow. Full detail — costs, minimums, how a job progresses, and what it does and does not hide — on Private transfers.

#Export & import

You can export the private key of any wallet at any time, and you can import a key you already have. Both run through Turnkey’s own iframe, which means the key material moves between the enclave and your screen without passing through our servers or our JavaScript — we could not intercept it if we wanted to.

  • Export proves the wallet is genuinely yours. A hood.dev wallet is an ordinary EVM key: take it anywhere, use it with any tool.
  • Import registers an existing key as one of your wallets, so a wallet you already fund can trade through the terminal with the same one-click UX.
  • Exporting does not disable anything. The wallet keeps working here afterwards.
heads up
An exported key is a bearer secret. Once it exists outside the enclave, its safety is entirely on you — and if it leaks, no policy on our side protects that wallet, because policies cage our delegated key, not an attacker holding your key outright.

#Withdrawals

Sending to an address that is not one of your own wallets is a withdrawal, and it is always authorised personally — your credential signs, and the backend broadcasts only after recovering the signer and confirming it is one of your wallets. Native ETH and ERC-20 balances both work, and cross-chain destinations reach almost any chain, Bitcoin and Solana included. Details on Funding.

Why a withdrawal prompts you and a trade does not
Exactly the property described above: the delegated key’s allowlist contains no arbitrary destinations, so it is structurally incapable of signing a withdrawal. The prompt is not a formality — it is the one path by which value can leave, and it requires the key only you hold.
chain 4663·on-chain values read 2026-07-29·Blockscout