// Documentation
How it actually works.
No hand-waving. What the model does, what it structurally cannot do, and exactly where the line is drawn in code.
Overview
Corvane is a non-custodial wallet for Robinhood Chain with a chat box instead of a form. You say what you want in plain language; an AI agent works out what you meant, drafts the transaction, and hands it back for you to approve.
The agent is a translator, not a trustee. It holds no keys, has no signing authority, and cannot move a single unit of anything on its own. Everything below is an elaboration of that one sentence.
Getting started
- 01
Log in
Email or a social account. No browser extension to install, no seed phrase to write down.
- 02
A wallet is created for you
An embedded non-custodial wallet is generated on the spot. You do not choose or import it; it is yours from the moment it exists.
- 03
Fund it with testnet ETH
Robinhood Chain uses ETH for gas. On testnet you can pull some for free from the faucet. See the network section below.
- 04
Say something
Start with a read. Reads are instant and cost nothing: "what’s my balance?"
You do not need to understand any of the rest of this page to use Corvane. It is here because a wallet that asks you to trust it should show its work.
The wallet
Your keys. Your funds. When you log in, an embedded walletis generated for you. “Embedded” means it lives in the app rather than in a browser extension. It is non-custodial, which is the part that matters: Corvane holds no custody and cannot sign on your behalf, which is exactly why nobody else can either.
There is no seed phrase to write down and no extension to install. Signing authority sits with you, and it stays there.
- Only you can move your funds. Corvane has no signing path of its own.
- Only you can authorise a transaction, at the confirmation card, every time.
- Recipient addresses are shown in full, in monospace, before you approve.
- Confirmed transactions settle on chain and are final. That is a property of the network, not a Corvane setting.
A custodial account is one someone else keeps for you. This is a wallet that is yours.
- Custody
- Yours
- Seed phrase
- None to write down
- Extension
- Not required
- Corvane can sign
- No
The network
Robinhood Chain is a permissionless, EVM-compatible Ethereum L2 built on the Arbitrum stack, using ETH as its gas token. It settles crypto and tokenized equities on the same rails. That is why a single chat box can reach both.
Both chain IDs below were verified by querying eth_chainId against the live RPC endpoints, not copied out of a document.
| Testnet | Mainnet | |
|---|---|---|
| Chain ID | 46630 | 4663 |
| Gas token | ETH | ETH |
| RPC | https://rpc.testnet.chain.robinhood.com | https://rpc.mainnet.chain.robinhood.com |
| Explorer | https://explorer.testnet.chain.robinhood.com | https://robinhoodchain.blockscout.com |
| Faucet | faucet.testnet.chain.robinhood.com | None |
This deployment currently targets Robinhood Chain Testnet (chain 46630).
Assets
28 assets settle on the same chain: crypto (ETH, WETH, USDG), 20 tokenized equities, and 5 tokenized funds. The full list, with every contract address in full, is on the markets page.
USDG, not USDC
The stablecoin on Robinhood Chain is USDG (Global Dollar, issued by Paxos). USDC exists on the chain but is essentially unused. If you ask Corvane to send USDC, it will tell you so rather than quietly substitute something.
USDG also uses 6 decimals; every other listed asset uses 18. Corvane pins both in code, so the agent never has to infer them.
The allowlist
The asset list is an allowlist, not a catalogue. The agent resolves a symbol to a contract address fixed in code. It never discovers a token by searching. An asset that is not on the list is declined, not guessed at.
The reason is visible on chain today. Searching the explorer for USDG returns the real Global Dollar and also a second token also named “Global Dollar” with the same ticker at a different address, plus impostors called unstable degen and Upside Down Gorilla claiming the same symbol. The real NVDA has roughly 6,350 holders; a fake sits beside it with 155.
Tokenized stocks are not shares
A tokenized stock tracks a share’s price. It is not the share. It carries no ownership, no voting rights and no dividend entitlement. They are issued by Robinhood Assets (Jersey) Ltd, not by Corvane, and are not offered to US persons. Corvane cannot mint them; it can only read and move ones that already exist.
Talking to the agent
There is no command syntax to memorise. Say it however you would say it. What matters is the distinction below.
Reads: instant, free
These spend nothing, so they answer immediately with no confirmation step.
- "what’s my balance?"
- "show my transaction history"
- "what’s NVDA trading at?"
- "how much USDG do I have?"
Writes: always confirmed
These spend money, so every one of them stops at a confirmation card. Nothing signs until you tap Confirm.
- "send 50 USDG to 0x4A8f…"
- "swap 0.1 ETH to USDG"
- "buy 100 USDG of NVDA"
- "sell my TSLA"
Corvane asks instead of assuming
Any of these gets a question, not a guess: a missing amount, a half-typed address, an asset that isn’t on the allowlist. The agent is not permitted to invent a recipient.
The intent pipeline
This is the whole mechanism. Five steps, and the interesting part is what the model is not allowed to touch.
- 01
You type an instruction
Plain language. It goes to the model along with read-only context: your address, your balances, the allowlist.
- 02
The model returns an intent, not a transaction
It emits structured JSON: an action, an asset, an amount, a recipient. It never writes calldata, and it never composes the text you are about to be shown.
- 03
Code validates it, or refuses
Address checksum, asset against the pinned allowlist, amount against your balance. Anything that fails is rejected here, before it can be displayed, let alone signed.
- 04
You see a confirmation card
Rendered from that validated object: the full recipient address, the exact amount, the fee, and your balance afterwards.
- 05
You tap Confirm. Only then does it sign
Your wallet signs the call built from that same object. Cancel, and nothing was ever broadcast.
What the model emits
That is the entire surface. Everything downstream is derived in code from that object plus the pinned allowlist: the contract address, the decimals, the calldata, the gas.
Security
Corvane separates understanding from authority. The model reads your words and drafts a transaction. It never holds your keys, and it never touches the signer.
Address poisoning
An attacker sends dust from an address engineered to share the first and last few characters of one you have used before. In a truncated history, 0x4b6F…a1C3 looks like the address you know. Truncation is what makes the attack work.
So Corvane shows recipients in full, in monospace, at the moment of confirmation. You read the address, not a shape.
Prompt injection
Any AI that touches money will have people trying to talk it into things. Corvane assumes this will be attempted and does not rely on the model behaving. The mitigations are structural:
- The model cannot emit calldata. It emits a JSON intent, which is then validated in code.
- Assets resolve only to contract addresses pinned in code. A convincing story about a new token changes nothing.
- There is no server-side code path that signs a transaction. Execution is reachable only from the Confirm button in the UI.
- The card you read is generated from the same validated object that gets signed, so a manipulated model cannot show you one thing and sign another.
A model that misbehaves, hallucinates, or is successfully manipulated still cannot spend anything. The guarantee lives in code, not in a system prompt.
Fees & gas
Robinhood Chain uses ETH as its gas token. Every transaction needs a little ETH to broadcast, including a transfer of USDG or a stock token. The thing you are sending is not the thing that pays the fee.
The confirmation card shows the estimated network fee before you approve, along with what your balance will be afterwards. Reads cost nothing at all.
Scope
Corvane operates on Robinhood Chain, over a fixed asset allowlist, and never executes without your confirmation. Those boundaries are deliberate. In practice:
- Every spending action stops at a confirmation card and executes only when you tap Confirm.
- Symbols resolve to the pinned allowlist. An asset outside it is declined, not looked up.
- Robinhood Chain only. Corvane does not reach other networks.
- Tokenized stocks are issued by Robinhood Assets (Jersey) Ltd. Corvane reads and moves them; it does not mint them.
- Corvane drafts what you asked for. It does not give financial advice or recommend what to buy.
- Prices are set by the market, not by Corvane. The card shows an estimate, and the chain settles the trade.
- Once a transaction is confirmed, the network settles it and it is final.
Troubleshooting
The agent says it can't find my asset.+
That asset is not on the allowlist. Corvane resolves symbols to contract addresses pinned in code rather than searching for tokens by name, which is what keeps impostors out. The markets page has the full list of supported assets.
I have USDG but the transaction won't go through.+
Check your ETH balance. Gas on Robinhood Chain is paid in ETH, including on transfers of USDG and stock tokens. A small ETH balance covers fees.
The agent keeps asking me to clarify.+
Corvane asks instead of assuming. When the amount, the asset or the recipient is ambiguous, it puts the question back to you. Supply the missing piece, such as a full address rather than a name, and it will draft the transaction.
The address on the confirmation card looks wrong.+
Cancel. Nothing has been signed, and cancelling broadcasts nothing. The card exists so you can check the full recipient address before you approve. Take it at face value and try again.
My transaction is pending.+
Give it a moment, then look it up on the block explorer using the hash in your history. Once a transaction is broadcast, the network settles it on its own schedule.
I sent funds to the wrong address.+
Transactions on Robinhood Chain are final once confirmed, so the transfer stands. If the address belongs to someone you can reach, ask them to send it back. Before you approve, the confirmation card shows the recipient in full. That is the moment to check it.
Risks
The disclosures that matter, in one place.
- Digital assets carry risk, including total loss. Nothing here is financial advice.
- Corvane is non-custodial. Your keys are yours, and a confirmed transaction is final.
- Every spending action stops at a confirmation card showing the full recipient and the exact amount. Read it before you approve.
- Tokenized equities are issued by Robinhood Assets (Jersey) Ltd and represent price exposure, not share ownership. They are not offered to US persons.
- Corvane runs on Robinhood Chain testnet today.
- Impostor tokens exist on this chain. Corvane's allowlist covers the assets it supports; outside it, verify contract addresses yourself.
FAQ
Is my wallet custodial?+
No. It is non-custodial: the keys are yours, and Corvane cannot sign on your behalf, which is exactly why nobody else can either. Your wallet authorises every transaction.
What chains are supported?+
Robinhood Chain only. It is an EVM-compatible Ethereum L2 on the Arbitrum stack. This deployment targets Robinhood Chain Testnet (chain ID 46630). Mainnet is 4663.
How does the AI parse my instructions?+
Your message, plus read-only context like your balance and address, goes to the model, which returns a structured intent: an action, an asset, an amount, a recipient. That object is then validated in code. The model classifies and extracts. It does not execute.
Can the AI send money on its own?+
No. This is enforced in code, not merely requested in the prompt. Execution is only reachable from the Confirm button in the UI. There is no server-side path that signs a transaction, so a model that misbehaves or is manipulated still cannot spend anything.
What if I make a typo?+
If a detail is missing or ambiguous, the agent asks rather than guesses. And every spending action stops at a card showing the full address and the exact amount, so you see precisely what will be signed before it is.
Why do you show the whole address instead of shortening it?+
Because abbreviation is what address poisoning exploits. A lookalike address matches the first and last characters, the exact parts an abbreviation keeps. Showing the address in full removes the attack.
Do I need ETH for gas?+
Yes. Robinhood Chain uses ETH as its gas token, so even a USDG transfer needs a little ETH to broadcast.
Are tokenized stocks the same as owning shares?+
No. They track a share's price but confer no ownership, no voting rights and no dividends. They are issued by Robinhood Assets (Jersey) Ltd, not by Corvane, and are not offered to US persons.
Why can Corvane only use a fixed list of assets?+
Because a symbol is not an identity. Impostor tokens on this chain reuse real tickers and names at different contract addresses. Corvane resolves every symbol to an address pinned in code, so the asset you name is the asset you get.
Is Corvane live with real money?+
Not yet. The app targets Robinhood Chain testnet while development continues, so transactions today move testnet funds. Mainnet: coming soon.
Is Corvane affiliated with Robinhood?+
No. It is an independent project that connects to a public, permissionless network Robinhood happens to operate. It is not affiliated with, endorsed by, or sponsored by Robinhood Markets, Inc.
Glossary
- Non-custodial
- You hold the keys. Only you can move your funds, and only you can authorise a transaction.
- Embedded wallet
- A wallet created inside the app rather than a browser extension. Convenience of a login, custody of a wallet.
- Intent
- The structured JSON the model emits: an action, an asset, an amount, a recipient. Not a transaction, and not calldata.
- Calldata
- The encoded instruction actually sent to a contract. Corvane builds it in code from a validated intent; the model never writes it.
- Allowlist
- The fixed set of assets, each pinned to a contract address. Symbols resolve against that list rather than a search.
- Address poisoning
- An attack that plants a lookalike address matching the first and last characters of a real one, hoping a truncated display hides the difference.
- Prompt injection
- Getting an AI to follow instructions hidden in its input. Corvane assumes it will happen and removes the model's ability to act on it.
- Decimals
- How a token subdivides. USDG uses 6; every other listed asset uses 18. Corvane pins both in code, so the agent never has to infer them.
- Gas
- The fee to broadcast a transaction. On Robinhood Chain it is paid in ETH, whatever asset you are moving.
- Testnet
- A parallel network used for testing, with funds that carry no market value. Corvane targets it today.
