How UNLISTED works
UNLISTED is a static web app. It has no backend, no database and no accounts. Everything below happens in your browser or on Robinhood Chain.
Overview
You connect a normal wallet and sign one message. From that signature your browser derives up to 20 vault accounts. Vaults hold USDG, ETH for gas and Robinhood stock tokens. Trades are signed by the vault key and sent to Uniswap v3. Your main wallet is only used to sign the unlock message and, if you choose, to fund a vault.
Vault derivation
The unlock message is fixed text, so the same wallet always produces the same signature. The key schedule is:
sig = personal_sign(MESSAGE) // by your main wallet
root = keccak256("unlisted/v1/root" || r || s)
vault[i] = keccak256(root || uint256(i)) // i = 0, 1, 2 ...
Only r and s are used, so wallets that report v differently still land on the same vaults. The first time an address unlocks, UNLISTED asks for the signature twice and refuses to continue if they differ. Wallets that sign non deterministically would otherwise create vaults you could never recover.
Keys live in memory for the session. Locking, closing the tab or 15 minutes of inactivity wipes them. The only thing stored on your device is the number of vaults you use and their labels.
Token verification
Robinhood deploys every stock token as an EIP 1967 beacon proxy pointing at one beacon contract. UNLISTED reads the beacon storage slot of each token and only lists it when it matches Robinhood's beacon. A token called "Tesla • Robinhood Token" that was deployed by someone else fails this check and never appears in the app.
The token list is discovered from the explorer and verified on chain. You can also paste a token address; it goes through the same check.
Trading
- All trades are priced in USDG. ETH is only used for gas.
- Quotes come from Uniswap's QuoterV2 across the 0.01%, 0.05%, 0.3% and 1% fee tiers, directly and through WETH. The best output wins.
- Every swap carries a minimum output based on your slippage setting and a 10 minute deadline.
- The approval is set to the exact trade amount, never unlimited.
- The UNLISTED fee of 0.25% is taken from the output inside the same transaction using SwapRouter02
sweepTokenWithFee. It is shown before you confirm. - If the issuer pauses a token, UNLISTED blocks the trade before it is sent.
Funding privately
A vault is only as private as the money that enters it. In order of privacy:
- Withdraw USDG and a little ETH from an exchange straight to the vault address.
- Send from a wallet that has no public connection to you.
- Send from your main wallet. This works, but anyone can see the transfer and link the two.
The same applies when you withdraw. Sending from a vault to your main wallet connects them. Moving between your own vaults does too.
Data and third parties
| Robinhood Chain RPC | Balances, quotes and transaction broadcast. Sees your IP address and the vault addresses you query. |
| Blockscout | Token discovery, holdings and history. Sees your IP address and the vault addresses you query. |
| jsDelivr | Serves the ethers library. |
| Google Fonts | Serves the typefaces. Self host the fonts to remove this request. |
Use a VPN if you do not want these providers to see your IP next to your vault addresses. UNLISTED itself logs nothing because there is nothing to log to.
Contracts
Robinhood Chain, chain ID 4663.
| Uniswap v3 SwapRouter02 | 0xcaf681a66d020601342297493863e78c959e5cb2 |
| Uniswap v3 QuoterV2 | 0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7 |
| Uniswap v3 Factory | 0x1f7d7550b1b028f7571e69a784071f0205fd2efa |
| USDG (Global Dollar) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
| Robinhood stock token beacon | 0xe10b6f6B275de231345c20D14Ab812db62151b00 |
| Example: TSLA | 0x322F0929c4625eD5bAd873c95208D54E1c003b2d |
Check any of them on Blockscout.
Recovery
Open UNLISTED on any device, connect the same wallet and sign. Your vaults come back. If you used more vaults than the app shows, add them again; they will have the same addresses.
For independence from this site, export each vault key from the app and import it into a regular wallet. With the key schedule above, a developer can also rebuild the keys from your signature with a few lines of code.
Risks
- Stock tokens are issued by Robinhood. The issuer can pause transfers and block addresses. UNLISTED cannot override this.
- Stock tokens are not available to US persons and may be restricted where you live. You are responsible for following those rules.
- Uniswap liquidity for some tickers is thin. Watch the price impact before you confirm.
- Anyone with your unlock signature or an exported key controls your vaults.
- The software is provided as is. Start with small amounts.