Sources
Every number has a name behind it.
The integration registry below is the whole list of external dependencies, what was verified about each and when, and where each one stops. The live section re-checks the parts that can be checked from the server.
Live status
Network RPC
Checking
Venue API
Checking
Spot indexers
DexScreenerGeckoTerminal
Execution & assistant
Order signing onAsk Pora not configured
Checked … by the server. Private submission: Lighter (RH) has none; PoraPerps never implies otherwise.
Integration registry
network
Robinhood Chain
The one network this build targets. Every address shown is on chain 4663.
- Verified
- 2026-10-17 (UTC) — Official docs page read (DNS-pinned fetch); eth_chainId answered 0x1237 (4663) on the public RPC; explorer host answered JSON.
- Required configuration
- optional RPC_UPSTREAM_URL (Alchemy recommended by the docs); defaults to the public RPC with publicnode / dRPC fallbacks · UPSTREAM_DOH=1 on development machines whose DNS hijacks robinhood.com
- Reads
- JSON-RPC (eth_call, balances, receipts, logs) through the same-origin relay /api/rpc · chain id, gas, block time
- Writes
- Transactions are signed and broadcast by the visitor's wallet; the relay never carries them
- Rate limits
- Public RPC is rate limited and "not recommended for production" (docs); batches above 10 calls are truncated silently.
- Current limitations
- Arbitrum Orbit L2: ETH gas, ~0.1 s blocks, soft confirmation before L1 finality · public node is not an archive node · testnet (46630) has no venue or Uniswap deployments
Verified contracts
- USDG (collateral, 6 decimals)0x5fc536…F1d168venue layer1BasicInfo + assetDetails list it as the USDG asset; ERC-20 decimals() = 6 read on-chain
- WETH0x0Bd7D3…AcAD73Uniswap deployments.json + GeckoTerminal pools name it WETH
venue
Lighter · Robinhood Chain domain
The only perpetual-trading venue PoraPerps executes on. Signing happens in the browser with the official lighter-go WASM signer (pinned, hash-checked).
- Verified
- 2026-10-17 (UTC) — GET /info echoed the documented contract; /api/v1/orderBookDetails listed 58 perpetual markets; /api/v1/assetDetails listed USDG as asset 3 with margin enabled; /api/v1/funding-rates and /api/v1/withdrawalDelay answered.
- Required configuration
- NEXT_PUBLIC_EXECUTION=live to enable order signing · NEXT_PUBLIC_VENUE_API_KEY_INDEX (default 11)
- Reads
- markets & contract specs (decimals, minimums, margin fractions, fees) · mark / index / last price · funding rate (hourly settlement) and history · open interest · order book + public trades (REST and WebSocket) · candles · account collateral & positions by L1 address (public) · orders, fills, funding payments (auth token) · venue transaction status by hash
- Writes
- USDG deposit (wallet tx: approve + deposit) · register / revoke trading key (wallet signature + L2 ChangePubKey) · market, limit, stop-loss, take-profit orders (L2 CreateOrder, venue-managed triggers) · cancel / cancel all · update leverage & margin mode · L2 withdraw to the own L1 address
- Rate limits
- Undocumented; the server caches every public read (stale-while-revalidate) and the browser uses the venue WebSocket for the book.
- Current limitations
- Not Lighter Core: separate contracts, sequencer and liquidity · orders rest in a public book; no private submission exists · implementation contract unverified on Sourcify · fast-withdraw fee mechanics undocumented; PoraPerps uses the secure path · funding-rates quotes an 8-hour-equivalent; the venue settles hourly (value ÷ 8)
Verified contracts
- Lighter contract (deposits, L1 withdrawals)0x94bAB9…AFfF9ddocs.robinhood.com/chain/lighter-domains + GET https://api.rh.lighter.xyz/info; proxy, implementation not source-verified
spot
KyberSwap Aggregator
Spot swaps on the token pages.
- Verified
- 2026-10-17 (UTC) — routes and route/build answered for USDG → CASHCAT on chain 4663 (route via a Tessera pool); the returned router equals the pinned MetaAggregationRouterV2, a Sourcify exact match whose ABI PoraPerps uses to decode and check every built transaction before signing.
- Required configuration
- none (x-client-id header is set server-side)
- Reads
- spot route quotes for USDG ↔ token (amount out, USD values, gas, route pools)
- Writes
- spot swap from the connected wallet: exact-amount approval to the router, decoded + checked calldata, simulation, then one signed transaction; recipient is always the sender
- Rate limits
- Key-free, undocumented burst limit; PoraPerps budgets 60 requests a minute and quotes expire after 45 s.
- Current limitations
- USDG is the only quote asset in the ticket (no native ETH routing) · routes are whatever the aggregator returns and are named in the review · a spot purchase is never shown as a perpetual position · no fee is charged by PoraPerps; pool fees are inside the quote
Verified contracts
- MetaAggregationRouterV2 (spender and target)0x6131B5…6337b5Sourcify exact_match; enforces returnAmount >= minReturnAmount
market-data
GeckoTerminal API
Live price / liquidity / volume / candles / trades for verified spot tokens.
- Verified
- 2026-10-17 (UTC) — networks/robinhood/pools and tokens/multi answered for the curated addresses; pool OHLCV and trades endpoints used by the token pages.
- Required configuration
- none
- Reads
- token price, FDV, reserve (liquidity) per pool · pool OHLCV (real observations only) · recent pool trades · market cap when CoinGecko tracks the token
- Writes
- none
- Rate limits
- ~30 requests/min key-free; the server budgets ≤4 origin requests per refresh and keeps the previous read on a refusal.
- Current limitations
- Robinhood Chain is full of copycat tokens with vanity-matched addresses and faked volume; PoraPerps only queries the exact curated addresses · market_cap_usd is null for tokens CoinGecko does not track
market-data
DexScreener API
Second market-data source; identity cross-check at curation.
- Verified
- 2026-10-17 (UTC) — tokens/v1/robinhood/{addresses} answered with pairs, liquidity, market cap, FDV, 24 h volume and project links for the curated addresses.
- Required configuration
- none
- Reads
- pairs per token: price, liquidity, volume, txns, market cap, FDV, pool, links, logo
- Writes
- none
- Rate limits
- 300 requests/min for token endpoints (docs).
- Current limitations
- marketCap equals FDV when DexScreener has no circulating-supply figure; PoraPerps labels that case
market-data
CoinGecko API (curation)
Source of the mascot registry (data/mascots.registry.json).
- Verified
- 2026-10-17 (UTC) — asset_platforms lists robinhood (chain_identifier 4663); the category robinhood-chain-meme answered 390 coins; coin detail pages gave links, images and platforms.
- Required configuration
- none
- Reads
- circulating market cap, circulating supply, FDV, categories, official links, logo
- Writes
- none
- Rate limits
- ~30 requests/min key-free; blocked (403) for cloud IPs, so it runs only in scripts/curate-mascots.mjs on a workstation.
- Current limitations
- not called at runtime · circulating supply is as tracked by the aggregator, not audited by PoraPerps
indexer
Blockscout (robinhoodchain.blockscout.com)
Wallet history, token balances and holder counts.
- Verified
- 2026-10-17 (UTC) — /api/v2/tokens/{address} answered for PONS with holders_count and circulating_market_cap; address transactions and token balances endpoints are the ones documented by the official explorer.
- Required configuration
- none
- Reads
- address transactions (paged, newest first) · ERC-20 balances of an address · token holders count and metadata · transaction detail
- Writes
- none
- Rate limits
- Cloudflare bot protection: answers an honest non-browser User-Agent; cold addresses take 5–45 s and sometimes 502.
- Current limitations
- history coverage is the indexer's, paged 50 at a time; PoraPerps shows the cursor and never claims completeness · lower-cased addresses can 500; EIP-55 is always sent
oracle
Chainlink Data Feeds on Robinhood Chain
Reference USD prices for ETH and USDG balances and for issuer-listed tokenized assets.
- Verified
- 2026-10-17 (UTC) — reference-data-directory feeds-robinhood-mainnet.json listed 58 feeds including ETH/USD, BTC/USD and USDG/USD proxies (8 decimals, 24 h heartbeat) and 35 "Robinhood <SYM> / USD" stock-token feeds; the NVDA proxy answered latestRoundData (214.59, updated 2026-10-16 18:21 UTC) and all 35 answer through one Multicall3 aggregate3 request.
- Required configuration
- none
- Reads
- latestRoundData for ETH/USD and USDG/USD (reference prices on the wallet page) · latestRoundData + decimals for the 35 stock-token feeds (price of ONE token, multiplier already applied) on /markets → Tokenized assets and on token pages
- Writes
- none
- Rate limits
- On-chain reads through the relay.
- Current limitations
- 24 h heartbeat / 0.5 % deviation: a reference, not a trading price · stock feeds follow US equity hours (24/5): hours old on weekends, labelled delayed · no sequencer-uptime feed exists on this chain
Verified contracts
- ETH / USD proxy0x78F355…E8d3A9Chainlink reference directory
- USDG / USD proxy0x61B7e5…1B9aD2Chainlink reference directory
issuer
Robinhood Stock Tokens (issuer asset list)
The "Tokenized assets" view on /markets, search results, and the issuer card on token pages.
- Verified
- 2026-10-17 (UTC) — GET https://api.robinhood.com/rhj/assets answered 195 assets, every one deployed on chain 4663 (status ASSET_STATUS_ACTIVE, 18 decimals, ISIN, per-session trading flags, display multiplier, logo on cdn.robinhood.com); the CRM and NVDA token contracts both hold the issuer beacon 0xe10b…1b00 in their beacon slot (eth_getStorageAt); 35 of the 195 have a Chainlink feed.
- Required configuration
- none; UPSTREAM_DOH=1 on development machines whose DNS hijacks robinhood.com
- Reads
- issuer asset list: symbol, name, contract, decimals, status, display multiplier, session flags, logo, ISIN (5 min cache; a dated snapshot is served and labelled only when the API is unreachable) · Chainlink reference price per token where a feed exists (see Chainlink)
- Writes
- none
- Rate limits
- Undocumented. One list request per five minutes per server; logos go through the same-origin image proxy.
- Current limitations
- VIEW ONLY: no tokenized-asset spot venue is verified, so nothing in this list is tradable in PoraPerps · 160 of 195 tokens have no Chainlink feed and show no price · the issuer can pause, block or burn tokens (contract source); PoraPerps shows the flags, it does not interpret them · copycat tokens reuse these names and symbols on the same chain: only addresses from the issuer list are shown
Verified contracts
- Issuer AccessControlsRegistry / beacon (shared by every official Stock Token)0xe10b6f…151b00beacon slot of CRM 0xd95B…6D44 and NVDA 0xd060…9EEC read on-chain 2026-10-17; Sourcify source of the implementation read 2026-09-17 (ERC20ScaledUIUpgradeable: balances are raw units, the multiplier is display-only)
spot
Uniswap deployments (reference)
Names the DEX venues behind the spot pools.
- Verified
- 2026-10-17 (UTC) — deployments.json returned 49 active records for chainId 4663 (V2, V3 incl. QuoterV2, V4, Universal Router, Permit2).
- Required configuration
- none
- Reads
- pool identity for the venues named by GeckoTerminal / DexScreener
- Writes
- none
- Rate limits
- n/a
- Current limitations
- no swaps are executed in this build
Verified contracts
- V3 QuoterV20x33e885…c8A9E7official registry
- V4 PoolManager0x8366a3…e40951official registry
ai
Claude (Anthropic API)
Ask Pora.
not-configureddocs ↗- Verified
- 2026-10-17 (UTC) — SDK wired server-side with a tool loop; runs only when ANTHROPIC_API_KEY is set on the server.
- Required configuration
- ANTHROPIC_API_KEY (server only) · optional ANTHROPIC_MODEL
- Reads
- application tools only: markets, funding, meme directory, wallet lookups, liquidation explanation, order draft
- Writes
- none — it may prepare an order draft that the visitor reviews and signs in the normal ticket
- Rate limits
- Per-IP limit on /api/ask; bounded tool calls per answer.
- Current limitations
- without a key the desk shows "Not configured" and the deterministic quick queries still run · retrieved token metadata is untrusted content
wallet
Injected wallets (EIP-1193 / EIP-6963)
Signing.
- Verified
- 2026-10-17 (UTC) — wagmi 2 injected connector; wrong-network detection uses the wallet's own chain id; connecting never triggers an approval or trade.
- Required configuration
- none
- Reads
- accounts, chain id
- Writes
- approve (bounded to the amount), deposit, personal_sign for the trading key
- Rate limits
- n/a
- Current limitations
- no WalletConnect in this build · no seed phrases or private keys are ever requested
Mascot methodology
- Candidates come from the CoinGecko category "robinhood-chain-meme" with a contract on the robinhood platform (chain id 4663).
- Circulating market cap is CoinGecko's tracked figure; FDV is recorded separately and never substitutes for it.
- Price, liquidity and the pool come from DexScreener for the exact contract address; a disagreement above 15% between the two sources disqualifies the token.
- Name, symbol, decimals and total supply are read from the contract through a public RPC; circulating supply must not exceed the on-chain total.
- A token needs real activity: at least US$10,000 of DexScreener 24 h volume and 20 trades.
- Multi-chain (bridged) tokens are excluded from the desks because their market cap is not Robinhood-native; they stay in the directory.
- Explicit names are excluded from the desks by a brand-safety filter and stay in the directory.
- Mascot placement is fixed at curation; the app refreshes the displayed figures live and flags a token that no longer meets the threshold.
- Artwork: the project logo as distributed by the aggregator, shown at icon size as a market identifier. No derivative branded artwork is generated; no partnership is claimed. The 3D attendants in the hall are original folded-paper figures, identical for every desk; the token badge on the desk is the only brand element.
- A mascot is never described as an autonomous trader: no such functionality exists.
Current curation
- Curated (UTC)
- 2026-10-17 07:10
- Chain
- 4663
- Min market cap
- $1,000,000
- Min liquidity
- $100,000
- Max price disagreement
- 15%
- Examined / eligible / mascots
- 24 / 18 / 8
Full records with every source and timestamp: data/mascots.registry.json in the repository, rendered on the Meme Tokens page.
Network facts
- Network
- Robinhood Chain (chain id 4663)
- Native gas asset
- ETH
- Public RPC
- https://rpc.mainnet.chain.robinhood.com
- Explorer
- https://robinhoodchain.blockscout.com
- Collateral
- USDG 0x5fc536…F1d168
- Venue contract
- 0x94bAB9…AFfF9d
Source: docs.robinhood.com/chain/connecting (read 2026-10-17 UTC), venue layer1BasicInfo and /info. The testnet (46630) has no venue or Uniswap deployments, so PoraPerps ships a mainnet build only.