Skip to main content
Discover and interact with tokenized real-world asset (RWA) stocks on Robinhood’s Arbitrum chain. The platform provides contract scanning, token discovery, and balance queries for 1,997 tokenized stocks deployed as ERC-20 tokens.

What Are RWA Stocks?

Robinhood has deployed tokenized representations of traditional equities on their own Arbitrum Orbit L2 chain. Each stock is an ERC-20 token with standard metadata (name, symbol, decimals, totalSupply) that maps to a real-world equity.

Robinhood Chain

An Arbitrum Orbit L2 (chain ID 46630) purpose-built for tokenized securities. Uses ETH as the native gas token.

1,997 Stocks

Deployed via a factory pattern with sequentially assigned contract addresses. Includes major US equities.

Chain Details

Robinhood Chain is currently in testnet. The RPC and explorer URLs will change when mainnet launches. The agent automatically uses the correct chain configuration.

How Token Discovery Works

Robinhood deployed stock tokens using a factory pattern, meaning contracts are created sequentially at predictable addresses. The RwaAdapter discovers tokens by scanning these addresses:

Contract Scanning

The scanContracts() method takes a list of candidate addresses and probes each one for ERC-20 metadata:
  1. Read metadata — calls symbol(), name(), decimals(), and totalSupply() on each address
  2. Validate — contracts that respond with valid ERC-20 metadata are classified as stock tokens
  3. Activity check — tokens with totalSupply > 0 are marked as active
  4. Cache results — discovered tokens are stored in an in-memory cache for fast subsequent lookups
The scanner runs with configurable concurrency (default: 10 parallel requests) to balance speed and RPC rate limits.

MCP Tool: arb_rwa_scan

The MCP server exposes an arb_rwa_scan tool that wraps the scanner for use by the agent and external MCP clients. This tool:
  • Accepts a range of contract addresses or a batch of known addresses
  • Returns an array of RwaStockInfo objects with symbol, name, contract address, decimals, and activity status
  • Results are cached across invocations for the lifetime of the MCP server process

Stock Information

Each discovered token returns a RwaStockInfo object:

Registry Statistics

The adapter tracks aggregate statistics about the scanned registry:

Querying Balances

Check how many shares of a tokenized stock an address holds:
This calls the standard ERC-20 balanceOf on the Robinhood Chain.

Symbol Lookup

After scanning, you can search the cache by ticker symbol:
Symbol matching is case-insensitive.
Call scanContracts() or getAvailableStocks() at least once before using findBySymbol(). The symbol lookup searches the in-memory cache, which must be populated first.

Price Data

Price oracle integration is pending. Robinhood has not yet published oracle contract addresses for their chain. When available, the adapter will read prices from Chainlink-style feeds on Robinhood Chain.
The getPrice(contractAddress) method is stubbed and will return null until oracle contracts are deployed. Current status of each stock can be inferred from the totalSupply and activity flags.

Example Prompts

SDK Reference

The RWA adapter is in the @arb-agent/adapters package as RwaAdapter.

Constructor

If no RPC URL is provided, defaults to the Robinhood Chain public RPC endpoint.

Methods

RWA stock tokens are deployed on Robinhood Chain (chain ID 46630), not on Arbitrum One (chain ID 42161). The adapter creates its own client connected to the correct chain. Do not attempt to query these contracts on Arbitrum One.