Contract addresses
Every tokenized stock address this site tracks, in plain HTML you can copy, script against or search. Each one is re-checked against its issuer's own test every time this page rebuilds.
Chains
| Network | Chain ID | RPC URL | Gas | Explorer |
|---|---|---|---|---|
| Robinhood Chain | 4663 | https://rpc.mainnet.chain.robinhood.com | ETH | Blockscout → |
Listings
| Symbol | Issuer | Chain | Contract address | Supply | |
|---|---|---|---|---|---|
| NVDA | Robinhood | Robinhood Chain | 0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC | 17,200.51 | explorer → |
| SPCX | Robinhood | Robinhood Chain | 0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa | 14,380.54 | explorer → |
| TSLA | Robinhood | Robinhood Chain | 0x322F0929c4625eD5bAd873c95208D54E1c003b2d | 4,297.88 | explorer → |
| AAPL | Robinhood | Robinhood Chain | 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 | 3,304.18 | explorer → |
| SNDK | Robinhood | Robinhood Chain | 0xB90A19fF0Af67f7779afF50A882A9CfF42446400 | 644.10 | explorer → |
| GOOGL | Robinhood | Robinhood Chain | 0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3 | 3,058.86 | explorer → |
| AMD | Robinhood | Robinhood Chain | 0x86923f96303D656E4aa86D9d42D1e57ad2023fdC | 1,695.18 | explorer → |
| SPY | Robinhood | Robinhood Chain | 0x117cc2133c37B721F49dE2A7a74833232B3B4C0C | 1,065.73 | explorer → |
| AMZN | Robinhood | Robinhood Chain | 0x12f190a9F9d7D37a250758b26824B97CE941bF54 | 3,215.08 | explorer → |
| SGOV | Robinhood | Robinhood Chain | 0x92FD66527192E3e61d4DDd13322Aa222DE86F9B5 | 7,452.37 | explorer → |
| MSFT | Robinhood | Robinhood Chain | 0xe93237C50D904957Cf27E7B1133b510C669c2e74 | 1,938.80 | explorer → |
| MU | Robinhood | Robinhood Chain | 0xfF080c8ce2E5feadaCa0Da81314Ae59D232d4afD | 1,052.70 | explorer → |
| PLTR | Robinhood | Robinhood Chain | 0x894E1EC2D74FFE5AEF8Dc8A9e84686acCB964F2A | 5,028.82 | explorer → |
| META | Robinhood | Robinhood Chain | 0xc0D6457C16Cc70d6790Dd43521C899C87ce02f35 | 973.63 | explorer → |
| COIN | Robinhood | Robinhood Chain | 0x6330D8C3178a418788dF01a47479c0ce7CCF450b | 3,471.92 | explorer → |
| USO | Robinhood | Robinhood Chain | 0xa30FA36Db767ad9eD3f7a60fC79526fB4d56D344 | 3,706.68 | explorer → |
| QQQ | Robinhood | Robinhood Chain | 0xD5f3879160bc7c32ebb4dC785F8a4F505888de68 | 741.87 | explorer → |
| SLV | Robinhood | Robinhood Chain | 0x411eFb0E7f985935DAec3D4C3ebaEa0d0AD7D89f | 8,950.27 | explorer → |
| INTC | Robinhood | Robinhood Chain | 0xc72b96e0E48ecd4DC75E1e45396e26300BC39681 | 4,431.42 | explorer → |
| ORCL | Robinhood | Robinhood Chain | 0xb0992820E760d836549ba69BC7598b4af75dEE03 | 3,644.96 | explorer → |
| CRCL | Robinhood | Robinhood Chain | 0xdF0992E440dD0be65BD8439b609d6D4366bf1CB5 | 6,918.64 | explorer → |
| CRWV | Robinhood | Robinhood Chain | 0x5f10A1C971B69e47e059e1dC91901B59b3fB49C3 | 5,300.11 | explorer → |
| USAR | Robinhood | Robinhood Chain | 0xd917B029C761D264c6A312BBbcDA868658eF86a6 | 27,210.64 | explorer → |
| BE | Robinhood | Robinhood Chain | 0x822CC93fFD030293E9842c30BBD678F530701867 | 1,781.12 | explorer → |
| BABA | Robinhood | Robinhood Chain | 0xad25Ac6C84D497db898fa1E8387bf6Af3532a1c4 | 1,843.07 | explorer → |
| QCOM | Robinhood | Robinhood Chain | 0x0f17206447090e464C277571124dD2688E48AEA9 | 91.11 | explorer → |
| MSTR | Robinhood | Robinhood Chain | 0xec262a75e413fAfD0dF80480274532C79D42da09 | 112.55 | explorer → |
Check before you integrate
A token with a matching name or ticker but a different address is not the same product. Each issuer publishes
its own test. Robinhood tokens are EIP-1967 beacon proxies over 0xe10b6f6B275de231345c20D14Ab812db62151b00, last checked 2026-07-21.
Check the issuer's test, not the ticker.
The ERC-8056 interface
Robinhood use the Scaled UI Amount extension: a standard ERC-20 plus one contract-level multiplier. These are the functions that matter beyond the ERC-20 basics. Other issuers do not implement this — check the issuer before you assume it is there.
interface IStockToken is IERC20 {
// ERC-8056 Scaled UI Amount
function uiMultiplier() external view returns (uint256); // 1e18 == 1.0
function balanceOfUI(address) external view returns (uint256); // may revert on overflow
function totalSupplyUI() external view returns (uint256); // may revert on overflow
// Corporate actions, announced before they take effect
function newUIMultiplier() external view returns (uint256);
function effectiveAt() external view returns (uint256); // unix seconds
// Operational state
function paused() external view returns (bool);
function tokenPaused() external view returns (bool);
function oraclePaused() external view returns (bool);
function terms() external view returns (string memory);
function uid() external view returns (bytes32);
event UIMultiplierUpdated(uint256 oldMultiplier, uint256 newMultiplier, uint256 effectiveAt);
event TransferWithScaledUI(address indexed from, address indexed to, uint256 value, uint256 uiValue);
} Event topics
| Event | topic0 |
|---|---|
| UIMultiplierUpdated | 0x2205df4534432b2f60654a3fdb48737ffdaf3e9edb1a498bd985bc026b15b055 |
| TransferWithScaledUI | 0x37e7f0db430edc9dd31bc66f25f8449353aa0818f503b906747dd8f286cd3802 |
Reading share-equivalent balances safely
balanceOfUI and totalSupplyUI revert rather than returning a misleading zero when
the scaled amount would overflow. That is deliberate in ERC-8056, so treat a revert as "compute it
yourself", not as an error:
import { createPublicClient, http, parseAbi } from 'viem'
const abi = parseAbi([
'function balanceOf(address) view returns (uint256)',
'function balanceOfUI(address) view returns (uint256)',
'function uiMultiplier() view returns (uint256)',
])
const client = createPublicClient({
transport: http('https://rpc.mainnet.chain.robinhood.com'),
})
async function shareBalance(token, wallet) {
try {
return await client.readContract({
address: token, abi, functionName: 'balanceOfUI', args: [wallet],
})
} catch {
const [raw, mult] = await Promise.all([
client.readContract({ address: token, abi, functionName: 'balanceOf', args: [wallet] }),
client.readContract({ address: token, abi, functionName: 'uiMultiplier' }),
])
return (raw * mult) / 10n ** 18n
}
} A note on event history
Robinhood Chain produces a block roughly every 0.12 seconds, so it passes a million blocks every day and a half, and
eth_getLogs on the public RPC returns 429 for practically any range. If you need event
history, read it from the explorer API (
https://robinhoodchain.blockscout.com/api/v2/addresses/{address}/logs), which returns decoded logs and paginates,
or use a keyed RPC provider.
Free JSON API
Everything on this page is available as static JSON, no key required. Licensed CC BY 4.0 — attribution with a link back is all we ask.
GET https://stocksonchain.io/api/tokens.json # every stock, with all its listings GET https://stocksonchain.io/api/tokens/nvda.json # one stock GET https://stocksonchain.io/api/events.json # corporate actions, scheduled and past
Embeddable widgets → · How this data is collected →
Developer FAQ
What are the RPC URLs and chain IDs?
Every chain is listed in the table above with its public RPC and chain ID. Note that eth_getLogs is heavily rate-limited on most public endpoints — read event history from the explorer API, or use a keyed provider.
How do I read a share-equivalent balance?
Only some issuers have one. Where they do, call balanceOfUI(address). It can revert by design when an extreme multiplier would overflow, so always wrap it and fall back to balanceOf(address) * uiMultiplier() / 1e18 computed in a big-integer type.
Is there an on-chain registry of stock tokens?
Not a public one, and issuers render their own token tables client-side, so the addresses are not machine-readable there. This list is maintained by hand and every entry is re-checked on each refresh, plus a daily job that scans each chain for listings we are missing. Take it as JSON from /api/tokens.json.
How do I know an address is genuine?
It depends on the issuer, because each publishes its own test. Robinhood publishes a shared beacon at 0xe10b6f6B275de231345c20D14Ab812db62151b00, and a genuine token is an EIP-1967 proxy over it. Any contract can claim a ticker. Run the issuer's test, which is exactly what our verification script does.