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.
#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.
#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.
| Path | Signs | Can reach |
|---|---|---|
| Delegated key | Inside 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 credential | Prompts 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. |
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.
#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.
#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.
#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.
