Tokenized-equity arbitrage · Robinhood Chain
Discover the spread.Verify the route.
Explore tokenized-equity pools, simulate arbitrage routes, and execute supported opportunities with transparent costs and on-chain receipts.
01 · Three ribbons
Every route is folded from three parts.
A settlement asset, a pool to buy in, a pool to sell in. The R is folded from the same three ribbons — nothing more, nothing hidden.
02 · Two compatible pools
Two pools, one contract.
The bowl and the leg become paths: two verified pools that price the exact same token contract. A matching ticker is not enough; wrapped or differently issued look-alikes are excluded.
Readingreading the verified pool set…
- Pool A
- Pool A
- Pool B
- Pool B
- Settles in
- USDG
03 · Simulation
The paths converge through a simulation.
Each leg is quoted on-chain at one block, every cost is itemised, and the exact executor call is simulated from your address. Indicative spread, executable quote and simulated net stay separate numbers.
Scanningreading pool state…
04 · Receipt
It resolves into a receipt.
Success exists only after a receipt with status success. The result is decoded from the CycleExecuted event — never the quote — and a reverted route still costs gas, which is said out loud.
Readingreading the verified pool set…
01Engine walkthrough
Discover, inspect, simulate, review, sign, verify.
- 01USDGsettlement token
- 02Pool Averified pool A
- 03Pool Bverified pool B
- 04Costsitemised at one block
- 05Simulationexact executor call
- 06Receiptexecutor not deployed
reading the verified pool set…
01 · Discover
Discover verified pools
Pools come from the canonical Uniswap V2 and V3 factories for issuer-verified Stock Tokens, USDG and WETH — read at one block, depth-probed with a real quote.
02 · Inspect
Inspect the same contract
Prices are compared for the exact same token contract on the same chain. A matching ticker proves nothing; wrapped or differently issued look-alikes are excluded.
03 · Simulate
Simulate the full route
Each leg is quoted on-chain, every cost is itemised — fees, impact, gas, minimum return — and the exact executor call is simulated from your address.
04 · Review
Review before signing
Network, input, exact allowance, executor address, route, minimum acceptable return, slippage, deadline and gas are laid out before a wallet opens.
05 · Sign
Sign the exact bytes
The wallet receives the calldata that was simulated twice moments before. Approvals are exact-amount. RonStocks never signs for you.
06 · Verify
Verify from the receipt
Success exists only after a receipt with status success; the result is decoded from the CycleExecuted event, never from the quote.
Token
$RONS
The contract address is published here, by /api/token and on @RonStocksRH only, after an on-chain check on Robinhood Chain. Until it appears in all three places there is no official $RONS.
RonStocks works without it. Scanning, quoting, simulation and execution never touch $RONS, and no fee, discount or reward depends on holding it. Once live, the facts below are read from the chain at a stated block; nothing is estimated in their place.
Reading $RONS from /api/token…
What $RONS is not used for: it does not unlock features, discount fees, pay rewards or dividends, fund a treasury or buybacks, or carry governance, and nothing in RonStocks reads a $RONS balance. The only facts this site publishes about it are the ones read from the chain above, at a stated block. Nothing here is a promise of value or return.
02Market preview
The market, measured at one block.
- · Indicative price, executable quote, gross spread and estimated net are separate numbers, and are labelled as such.
- · Missing data reads as unavailable, never as zero.
- · Everything here works without a wallet.
The preview reads the chain once it scrolls into view.
03Costs and simulation
Every cost, itemised.
| Line | How it is obtained | Latest scan |
|---|---|---|
| Raw price spread | Product of spot rates after pool fees, minus one. Ranking only — never shown as profit. | unavailable |
| Quoted route output | QuoterV2 hop by hop (V2 from same-block reserves). Pool fees and price impact are inside it. | unavailable |
| DEX fees | Inside the quoted output. Never subtracted a second time. | unavailable |
| Flash-liquidity fee | Wallet-funded: none. Flash-funded: the first pool is repaid in the settlement token; its swap fee, already in the quote, is the only borrowing cost. | unavailable |
| Protocol fee | Of a positive surplus only. Immutable per deployment, capped at 10%; the live value is read from the deployed contract. | 0% · proposed (executor not deployed) |
| Gas | eth_estimateGas of the actual call in the workspace (a forge-measured model in the scan), times the current gas price. Paid in ETH by your wallet. | unavailable |
| Gas in the settlement token | Only from a credible same-block rate: the deepest depth-verified WETH/USDG pool (≥ 10,000 USDG of depth), vetoed if fresh Chainlink data disagrees by more than 2%. Otherwise gas stays in ETH and the net result is marked incomplete. | unavailable |
| Estimated net result | Quoted surplus − protocol fee − gas, when gas could be converted. An estimate at one block. | unavailable |
| Minimum acceptable outcome | max(floor, estimate × (1 − tolerance)), enforced by the contract in the settlement token. The contract cannot see the ETH you pay for gas; the floor defaults to the gas estimate. | unavailable |
Contract-enforced surplus is denominated in the settlement token and does not account for wallet-paid gas. The interface shows both. Full accounting rules →
04Execution transparency
One contract. Nothing hidden.
- Atomic cycle over 2–4 canonical Uniswap V2 / V3 pools on one chain
- Wallet-funded executeFunded, or flash-funded execute
- Profit is the measured balance increase, never a number a pool reports
- No arbitrary call targets, no caller-supplied calldata
- Deadline and minimum profit enforced by the contract
- The principal must come back in full — PrincipalNotRecovered otherwise
- Callbacks only from the one pool expected next, and only once
- Fee-on-transfer and rebasing behaviour rejected at run time
- Protocol fee immutable per deployment, capped at 10% of a positive profit
- Two-step ownership, a pause switch, a fee recipient that withdraws accrued fees
- Never holds a caller’s tokens between transactions, never approves anyone
- A losing cycle reverts: gas can be lost, principal cannot
- Bytecode, VERSION, factories and fee cap re-checked on-chain before execution is enabled
- Exact-amount approvals only; nothing is signed on connect
- Success exists only after the receipt is decoded
- Not independently audited
05Verified infrastructure
Verify, don't assume.
Capabilities · from the live status read
- Pool discoveryReading the network and executor status.
- Checking…
- Executable quotesReading the network and executor status.
- Checking…
- Transaction simulationReading the network and executor status.
- Checking…
- Atomic executionReading the network and executor status.
- Checking…
- Receipt-based activityReading the network and executor status.
- Checking…
| Integration | Status | Source · verification |
|---|---|---|
| Robinhood Chain | checking | https://docs.robinhood.com/chain/connecting · live eth_chainId |
| Uniswap V2 pairs | Supported | 0x8bcE…937f · canonical factory |
| Uniswap V3 pools | Supported | 0x1f7d…2EfA · canonical factory · QuoterV2 |
| Stock Token registry | Verified | 195 issuer-listed tokens, each an ERC-1967 beacon proxy of the issuer beacon · snapshot block 71,231,041 |
| Chainlink ETH/USD · USDG/USD | Cross-check only | 0x78F3…d3A9 · 0x61B7…9aD2 · vetoes the gas rate, never prices a trade |
| RonStocksExecutor | Checking… | no address configured · Reading the network and executor status. |
Uniswap v4 pools are listed as an unsupported venue and never routed; the testnet (46630) has no verified DEX deployment and is read-only. Integration record →
// Verify a pool yourself — the same reads the scanner performs (viem)
const pool = await client.readContract({
address: '0x1f7d7550B1b028f7571E69A784071F0205FD2EfA', // Uniswap V3 factory · Robinhood Chain
abi: v3FactoryAbi, functionName: 'getPool', args: [STOCK_TOKEN, USDG, 3000],
}) // canonical only if the factory returns the very address you were given
const { result } = await client.simulateContract({
address: '0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7', // QuoterV2
abi: quoterV2Abi, functionName: 'quoteExactInputSingle',
args: [{ tokenIn: USDG, tokenOut: STOCK_TOKEN, amountIn: 1_000_000n, fee: 3000, sqrtPriceLimitX96: 0n }],
}) // result[0] = executable amountOut at this block — pool fee and impact inside
// raw spread = (max − min) / min of spot prices of the SAME token contract: a signal, not a returnDiscover the spread.
Verify the route.
Open the terminal to measure verified spreads and simulate complete routes before anything is signed. No wallet is needed until you decide to.
Executor · … · no simulated data