Appearance
Addresses & networks
All mainnet facts below were verified live on 2026-07-09 (RPC + Blockscout verified source + official docs) — see CHAIN_FACTS.md in the repository for the full audit trail. Re-verify before relying on them; the chain is days old and moving fast.
Networks
| Mainnet | Testnet | |
|---|---|---|
| Chain ID | 4663 (0x1237) | 46630 |
| RPC | https://rpc.mainnet.chain.robinhood.com | https://rpc.testnet.chain.robinhood.com |
| Explorer | robinhoodchain.blockscout.com | explorer.testnet.chain.robinhood.com |
| Faucet | — | faucet.testnet.chain.robinhood.com |
| Gas token | ETH | ETH |
Public RPCs are rate-limited; use a dedicated provider (e.g. Alchemy) for watcher duty.
Sentinel deployments
Testnet (46630)
Deployed 2026-07-09 (v2 — post-audit-fix: monitored set + NOT_MONITORED synthesis, tightened masks, renounceOwnership disabled). Deployer/updater 0xdb696F3BEEb24518e0e5e7eDD40DaCd96De5a62e (demo key; v1 trust model's single operator).
| Contract | Address |
|---|---|
| SentinelRegistry (v2, current) | 0xF9CB022A064cB26F8C5D555937eA319e81BA2F31 |
| SentinelRegistry (v1, deprecated — pre-fix, no monitored set) | 0x65986Be31F34db8AB88f6751B9B779718E2E5e54 |
Live drill at deployment: TOKEN_PAUSED froze the consuming Gapline oracle and cleared cleanly; statusOf of an unregistered address returned NOT_MONITORED (0x20); an updater attempting to write that bit reverted InvalidTokenFlags.
Mainnet (4663)
Not deployed. Mainnet deployment follows an audit and a testnet soak — see the trust model.
What Sentinel watches (mainnet)
The issuer's admin surface:
| Contract | Address | Why it matters |
|---|---|---|
| AccessControlsRegistry + shared beacon | 0xe10b6f6B275de231345c20D14Ab812db62151b00 | One contract is both the compliance registry (blocklist, roles, registry-wide pause) and the upgrade beacon — a single upgradeTo() changes every stock token at once |
Stock implementation (known-good) | 0xb35490d6f9163DE4F80d88dc75c3516eb64C5aE2 | The shared implementation behind every stock token's BeaconProxy; drift from this address raises IMPLEMENTATION_UPGRADED |
| USDG (6 decimals) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | The chain's native stablecoin — the loan-token side of stock-token markets |
Stock tokens (mainnet)
25 tokens, ERC-20, 18 decimals, all BeaconProxies behind the registry above. The full table lives in CHAIN_FACTS.md and watcher/src/config.ts; the most liquid:
| Symbol | Token | Canonical Chainlink proxy (RDD 2026-07-09) |
|---|---|---|
| TSLA | 0x322F0929c4625eD5bAd873c95208D54E1c003b2d | 0x4A1166a659A55625345e9515b32adECea5547C38 |
| NVDA | 0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC | 0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15 |
| SPY | 0x117cc2133c37B721F49dE2A7a74833232B3B4C0C | 0x319724394D3A0e3669269846abE664Cd621f9f6A |
| MSFT | 0xe93237C50D904957Cf27E7B1133b510C669c2e74 | 0x45C3C877C15E6BA2EBB19eA114Ea508d14C1Af2E |
| AMD | 0x86923f96303D656E4aa86D9d42D1e57ad2023fdC | 0x943A29E7ae51A4798823ca9eEd2ed533B2A22C72 |
Feed caveat
Feeds are 8-decimal AggregatorV3Interface instances with descriptions like RHTSLA / USD, updating 24/5 following market hours. Two addresses answer identically per symbol (proxy + underlying aggregator); resolve via aggregator() before relying on round IDs. Feed prices already include the ERC-8056 corporate-action multiplier — never apply uiMultiplier() on top.
Related infrastructure (mainnet)
| Contract | Address |
|---|---|
| Morpho (Blue) singleton | 0x9D53d5E3bd5E8d4Cbfa6DB1ca238AEA02E651010 — not at the canonical 0xBBBB… CREATE2 address |
| AdaptiveCurveIrm | 0x2BD3d5965B26B51814AC95127B2b80dD6CcC0fa1 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
| 1inch AggregationRouterV6 | 0x111111125421cA6dc452d289314280a0f8842A65 |
The Chainlink L2 Sequencer Uptime Feed address for Robinhood Chain has not been published yet; until it is, the watcher measures block-production lag directly (SEQUENCER_DOWN at >120s).