Robinhood Chain
developerThe Arbitrum-stack L2 HISS builds on: chain IDs, Stock Token semantics, feeds, finality, and what HISS does not do.
What Robinhood Chain is
Robinhood Chain is a permissionless, Ethereum-compatible L2 built on the Arbitrum stack (Arbitrum Nitro). Gas is paid in ETH, and transaction data is posted to Ethereum as blob data — a full node needs an L1 beacon endpoint to read blobs. Sequencing is first-come-first-served: priority gas auctions do not exist, so there is no priority reordering of transactions. One inclusion rule to know: the official docs state that any transaction associated with a sanctioned address will be excluded from inclusion — sequencer-level sanctions screening exists, so HISS makes no censorship-resistance claims about the chain.
Why HISS builds on it
- Canonical tokenized equities — 27 tokens (2 core, 20 stocks, 5 ETFs) with contract addresses published on the official contracts page, mirrored and verified in the asset registry.
- Chainlink price feeds on the same chain — AggregatorV3 feed proxies for the Stock Tokens, with published decimals and heartbeats. See Oracle health for the pinned list.
- First-class account abstraction — ERC-4337 EntryPoints deployed at the canonical addresses, plus EIP-7702 support.
Networks, RPC, and explorers
This table renders live from the chain config in @hiss/core:
| Network | Chain ID | Gas | Public RPC | Explorer |
|---|---|---|---|---|
| Robinhood Chain | 4663 | ETH | https://rpc.mainnet.chain.robinhood.com | https://robinhoodchain.blockscout.com |
| Robinhood Chain Testnet | 46630 | ETH | https://rpc.testnet.chain.robinhood.com | https://explorer.testnet.chain.robinhood.com |
Stock Token basics
Each Stock Token is a standard ERC-20 with 18 decimals (the USDG stablecoin is the exception at 6), issued by Robinhood Assets (Jersey) Ltd as tokenized derivatives — not direct share ownership, and not offered to persons in the U.S., U.K., Canada, Switzerland, and other restricted jurisdictions. On top of ERC-20 the tokens expose an ERC-8056 surface:
uiMultiplier()— an 18-decimal fixed-point corporate-action multiplier (1e18 = 1.0 at launch). Underlying shares = raw token amount × multiplier ÷ 1e18.balanceOfUI(account)/totalSupplyUI()— balances and supply in share-equivalent (UI) units.newUIMultiplier()/effectiveAt()— when a corporate action schedules a multiplier change ahead of time, the pending value and its effective time are readable on-chain.oraclePaused()— set while a corporate action is being processed. Advisory only, not enforced on-chain; staleness stays the primary pricing guard.
Canonical asset identity
The token address is the identity; the ticker is display metadata. The standing proof: the official docs list the ticker CUSO for an asset whose on-chain symbol() is USO. HISS keys everything by address and rejects any ticker/address pair that does not match the canonical registry.
Price feed policy, in one paragraph
Chainlink USD feeds on Robinhood Chain use 8 decimals, an 86,400-second heartbeat, and a 0.5% deviation threshold, updating 24/5 with market hours (heartbeat writes continue on weekends). The feed price is the token price and already includes the multiplier — never apply uiMultiplier() to it. HISS's oracle policy treats staleness (90,000-second limit vs the 86,400-second heartbeat) as the primary guard and oraclePaused() as advisory. Full rules and the pinned feed table live in Oracle health.
Finality and gas
- Soft confirmation — sub-second; the sequencer has committed to inclusion and ordering.
- Posted to L1 — minutes; ordering is now fixed on Ethereum.
- Ethereum finality — roughly 13 minutes after posting; irreversible.
- Withdrawals to L1 — a separate 7-day challenge period, a requirement of Arbitrum's fraud-proof system rather than a transaction-finality property.
Fees have two components — L2 execution (gas used × L2 gas price) and an L1 data fee proportional to calldata size — bundled into the gas the transaction pays. Minimizing calldata and batching operations (for example via account abstraction) reduces cost.
Differences from Ethereum developers should know
block.numberis an estimate of the L1 block number, not the L2 block count. Use the ArbSys precompile for the real L2 block number.block.prevrandaois constant — it is not a randomness source here.- L1 contracts calling into L2 arrive with an aliased
msg.sender(the original address plus a fixed offset). - Contract size limits are larger: 96 KB max code size (vs Ethereum's 24 KB) and 192 KB max init code.
// block.number on Robinhood Chain is an ESTIMATE of the L1 block number.
// For the actual L2 block number, use the ArbSys precompile:
ArbSys(0x0000000000000000000000000000000000000064).arbBlockNumber();Account abstraction
The chain has first-class ERC-4337 support and also supports EIP-7702, with Alchemy-powered infrastructure (built-in batching, configurable spend policies, and gas sponsorship) and ZeroDev as an alternative. Canonical EntryPoints:
| ERC-4337 version | EntryPoint address |
|---|---|
| v0.6.0 | 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789 |
| v0.7.0 | 0x0000000071727De22E5E9d8BAf0edAc6f37da032 |
| v0.8.0 | 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 |
For HISS these are future building blocks, not live features: if execution ever ships, AA is how a basket rebalance could become one batched, sponsored, spend-limited user operation instead of N raw transactions. Nothing in the public build executes anything today.
What HISS does not do in public mode
- No trading and no order routing — a Hiss is a published document, not a position.
- No custody — HISS holds no tokens, keys, or user funds.
- No on-chain execution — execution flags are off in every public build.
- No live pricing — all prices come from the deterministic mock oracle until the live gate opens (see Oracle health and Modes & flags).