Surety
Robinhood Chain Open App
Documentation

Every market onchain.
Every backing on the record.

Surety lists every market on Robinhood Chain, prints who stands behind each one, and executes spot swaps on chain. This page explains exactly how a swap is built, what it costs, what we refuse to route, and how to check every sentence on this page without asking us.

$SURETY contract 0xF99E03274E60F9E4f5966C39e5DDb2C6eb0bF115 Explorer

01What Surety is

Surety does not run a matching engine and never holds your funds. It is a front end and a thin server tier over Robinhood Chain, an EVM chain with id 4663. What it adds to the raw chain is two things.

A record for every market

The issuer, the contract address, what the token entitles you to, and the dividend that has already accrued into it. All of it read from the chain and from the issuer's own documents, never typed in from memory.

Spot execution that can be checked

Swaps routed to Uniswap v4 contracts on chain, with the calldata built here, simulated against the live chain before you are asked to sign, and refused outright when the pool is not worth trading into.

Perpetual futures are listed and priced here but executed elsewhere, on the venue's own order book. Surety takes no fee on them. That split explains most of what follows.


02Connect a wallet

Connecting proves an address is yours. It is not a payment, it does not move funds, and it does not approve any token. Any EVM browser wallet works: MetaMask, Rabby, Phantom and the rest all speak the same interface.

  1. Press Connect wallet

    Your wallet asks whether to share an address. That is the entire handshake. There is no signature request, because a signature would not tell us anything the address does not.

  2. Switch to Robinhood Chain

    If your wallet is pointed at another network you get an explicit switch button rather than a transaction that quietly fails. If the wallet has never seen chain 4663, the same button adds it.

  3. Hold a little ETH

    Spot swaps are paid for in the asset you are selling plus ETH for gas. A swap costs roughly 185,000 gas, which on this chain is a very small amount of ETH.

We never call your wallet before you ask. Some wallets pop their own dialog even for a read-only account query, which reads as a site demanding a connection. Surety records your consent locally and does not touch the wallet on a plain page load until you have connected once, on purpose. Disconnect clears that, and asks the wallet to revoke its grant where the wallet supports it.


03Your first swap

Open any spot market and the swap panel sits under the chart. It shows the fee before you connect, not after.

  1. Type an amount

    Surety asks the chain what that amount actually returns. Not an indexer, not a cached price: a call to the Uniswap v4 Quoter across every fee tier that holds liquidity, keeping the best.

  2. Read the four rows

    Our fee and where it goes, the pool's own fee to liquidity providers, how the quote compares with the venue's last traded price, and the minimum you are guaranteed to receive.

  3. Check the simulation line

    Before the button arms, the exact transaction is run against the live chain from your address. The panel shows what you would actually receive and the gas it used. If that check does not come back clean, the button stays dead and the reason is printed.

  4. Sign

    Selling a token needs two approvals first, each explained on screen. Buying with ETH needs none. The swap is one transaction either way.


04Where the numbers come from, live

Nothing on this site is a number we cached and forgot. Prices, the order book and the tape stream over websockets from the venues that produce them, and a page moves because a market moved, not because a timer fired.

WhatSourceHow it updates
Market pricesThe venueOne websocket subscription carries every market. A row changes the moment that market prints.
Order bookThe venueA snapshot, then deltas. The book on screen is rebuilt from those deltas rather than refetched.
TapeThe venueEvery fill as it lands, liquidations included.
Crypto chartsHyperliquidThe running candle streams from the same place the history was loaded from.
Charts with no underlyingThe venue's own fillsEach new fill is folded into the same bucket the history was built with.
Equity chartsYour choice of twoThe underlying has real history but stops dead when Wall Street closes; this venue trades through the weekend but remembers only its last hundred fills. Both are offered on the chart, and the one shown by default is whichever is actually saying something: if the underlying has not printed in three hours, the venue's own fills are drawn instead and the header says why.

Live data is never spliced across sources. A chart drawn from Hyperliquid history is kept moving by Hyperliquid, and one drawn from the venue's fills by the venue's fills. Painting a price from one source onto a candle from another would give you a chart that is live and wrong, which is worse than one that is honestly slow. The green dot only appears where something genuinely streams.



05When we do not draw a chart

A few markets here open with a paragraph where the chart should be. That is deliberate, and it is worth knowing why, because the usual reason an interface shows you eight ragged candles is that nobody checked.

Every chart is drawn from the deepest source that exists for that market: the underlying listing where there is one, the venue's own candles for crypto, pool swaps read off this chain for tokens that trade only here. When the deepest source still comes back with fewer than twenty bars, the chart is not drawn at all.

Two different situations end up there.

  • Venue-only markets. Pre-IPO names and memecoins trade nowhere else, and the venue's public feed hands out the last hundred fills and refuses to page further. On a market doing thousands of trades a day, a hundred fills is two minutes. The history exists; the endpoint that would serve it is closed, paging the trade feed is refused, and there is no listed underlying or pool to read instead. So the page says that, rather than drawing two minutes and letting it pass for a price chart.
  • Markets that are simply new. A coin listed last week has eight daily bars anywhere you look. Eight bars stretched across a wide panel is a smear, and it does not become readable because the data came from a reputable source.

In both cases the price, the order book and the tape underneath are live and complete. The chart is the only thing missing, and it is missing on purpose.


06Portfolio and sending

The portfolio page reads what a connected wallet holds and prices it. There is no account behind it and nothing is stored: connect, read, close the tab.

The column that matters is the last one. These tokens accrue income by moving a multiplier on their own contract rather than paying out, so the percentage there is money that has already happened to your balance and that no wallet will show you.

Anything you hold can be sent from the same page. A transfer is checked against the chain before your wallet is asked to sign it, which catches an amount larger than the balance or a token that will not move. It cannot catch a wrong recipient, and nobody can reverse one, so the address is worth reading twice.

We take nothing on a transfer. It is between you and the chain; we only build the transaction and check it first.


07Issuer, contract, entitlement

Price is the easy part. The thing almost nobody prints is what the token actually is, so that is what we put next to every market.

LineWhat it meansWhere it comes from
IssuerThe legal entity that created the token and whose credit you are relying on.The issuer's own documentation, plus the token contract's name().
ContractThe exact address, checked against a live pool before the market is listed.Read from the venue's asset list, then confirmed on chain.
EntitlementWhat holding the token gives you, and what it does not. The issuer's terms, quoted rather than paraphrased.
DividendHow income reaches the holder, and how much has accrued so far.Read live from the contract.

For the tokenised equities on this chain the issuer is Robinhood Assets (Jersey) Limited, Jersey company number 162428. The instrument is a tokenised debt security issued by that company. It is not a share: it gives economic exposure to the underlying, and no legal or beneficial rights in the underlying company or against its issuer. Voting is not passed through, and holders are not on the shareholder register.

We would rather print an uncomfortable sentence than a flattering one. Everything in the paragraph above comes from the issuer's own published terms, linked from every market page. If it ever changes, the page changes with it.


08Dividends and uiMultiplier

A tokenised share that pays no dividend is a picture of a price. These tokens do pay, but not by sending you anything. They accrue income by moving a number on the contract: your balance stays the same and each unit is worth more.

// ERC-8056, selector 0xa60bf13d
function uiMultiplier() external view returns (uint256);

The multiplier starts at 1.0 and rises. Reading it is how you check that a dividend was actually credited rather than announced. Surety reads it live on every market page and every wallet position, and shows the accrual as a percentage.

This is the single most checkable claim in the whole product, which is why it is the one we lead with. You do not need to trust the number on our page: the call below returns it.


09How a swap is built

There is no hosted Uniswap router API for Robinhood Chain, so nothing here is fetched from a pricing service. The calldata is encoded by Surety against the Universal Router and the v4 periphery contracts, and it is one transaction containing four actions in a fixed order.

StepActionWhat it does
1SWAP_EXACT_IN_SINGLESwaps your exact input through the chosen pool and creates the deltas.
2SETTLE_ALLPays the pool what the swap owes it, capped at exactly the amount you entered.
3TAKE_PORTIONSends 25 basis points of the output straight to the fee address.
4TAKE_ALLSends the remainder to you, and reverts if it is below your minimum.

The order matters. The fee is taken inside the same transaction as the swap, out of the pool's output, before anything reaches anyone. It is not a transfer we make afterwards out of our own wallet, which would be a promise rather than a mechanism. If any of the four steps fails, the whole transaction reverts and nothing moves.

Both directions are exact-input. You always specify what you spend, never what you receive. That is what makes the input cap in step 2 meaningful: an exact-input swap can never need more than you entered, so the cap is set to exactly that rather than to something generous.


10Preflight: proved before signed

Every quote comes back with a simulation attached. The exact transaction you are about to be shown is run against the live chain at the head block, from your own address, with your real balance and your real allowances. Nothing is overridden, nothing is spent, and the chain is not written to.

The result is not decoration. The swap button does not arm unless the simulation returned a success, and the panel prints what the simulation says you would receive alongside what the quote says. If the two ever disagree, believe the simulation.

If the simulation saysYou see
Not enough ETHThat this wallet cannot cover the amount plus gas, before your wallet tells you the same thing less politely.
Not enough of the tokenHow much you actually hold, next to how much you asked to sell.
Price moved past your slippageA suggestion to re-price or widen slippage, rather than a failed transaction you paid gas for.
Anything elseThe reason in plain language, with the raw revert kept underneath rather than swallowed.

The quote is re-asked, and re-simulated, immediately before you sign. A quote is a statement about one block, and the panel may have been open for a while.


11Dead pools and how we refuse

This is the part most interfaces skip, and it is the one that would cost you the most money.

Roughly half the Uniswap pools on this chain are initialised and hold almost nothing. They do not revert. They quote. A naive interface asking one of them to buy a stock token with 0.05 ETH gets an answer like 0.000001 tokens back and would happily show that number in a box next to a confirm button.

So every quote is measured against something outside the pool: the last traded price for the same asset on the venue's own order book. If the pool's answer is more than 3% worse than that, Surety refuses to route it and says why.

The refusal happens twice. Once when the market page loads, so a token whose only pool is dust never gets a trading box at all, and again inside the endpoint that produces the transaction, because that is the one that leads to a signature and it does its own checking rather than trusting an earlier answer.

Today that means a minority of the tokens with pools are actually tradable here. We would rather list six honest markets than seventeen that include traps.



12The spot order book

A refusal is honest but it is not an answer. For most of the tokens the pools cannot fill, there is somewhere else to trade them, and it is not a worse venue, it is a far better one.

The same venue that runs the perpetuals also runs spot order books priced in USDG, and they hold depth the pools never had. At the time of writing: BABA about $1.89M, CRCL $291K, SLV $164K, and BE, USAR, SGOV and USO around $300K each. The Uniswap pools for those same tokens hold single-digit dollars.

So a market page carries two panels and tells you which is which. The on-chain swap panel is first, because a swap settles in one transaction your wallet signs and nothing else is needed. Under it sits the order book panel. When the pool is dust the swap panel says so in plain words and points down at the book, which is where the trade should actually go.

 Swap on chainOrder book
SettlesUniswap v4, one transactionThe venue's own rollup
You sign withYour walletA signing key in your browser
Surety's fee0.25%, taken in the transactionNothing
DepthThin to nonexistent on most tokensReal, and quoted live
SetupNoneAn account on the venue, and one key

The key is the same key the perpetuals use, registered the same way and stored the same place, so enabling it once covers both. Spot orders and perpetual orders are signed by identical machinery; only the market id differs. Section Perpetuals describes that setup, and every caution there applies here unchanged.

We take nothing on order book trades. The 0.25% exists because an on-chain swap is a transaction we build, and it is taken inside that transaction where you can read it. An order sent to the venue is not ours to touch. You pay the venue's maker and taker fees and nothing to us.


13Approvals and Permit2

Buying with ETH needs no approval: the ETH travels with the transaction. Selling a token needs two, and they are different animals.

  1. ERC-20 approve to Permit2

    An ordinary token approval, granted once per token, letting Permit2 move it on your behalf.

  2. Permit2 allowance to the router

    Permit2 then grants the Universal Router a spending allowance that carries its own expiry. Ours is set to 30 days rather than forever.

The expiry is the point. A permanent allowance to a router is exactly the thing that gets drained months later when something upstream is compromised. Surety asks for one that dies on its own, and only asks again when it has.

Both steps are skipped when they are already in place. The panel shows only what is actually missing, so a second sell of the same token is a single signature.


14Slippage and minimums

Slippage is enforced in two places, because the number you care about is not the number the swap itself checks.

GuardChecksAgainst
amountOutMinimumThe gross output of the swap, before our fee.A bad fill inside the pool.
TAKE_ALL minimumWhat actually lands in your wallet, after our fee.Us ever handing you less than was promised.

Both are set on every swap. The second is the one that matters to you, and it is the number printed as minimum received in the panel. If the chain cannot meet it, the transaction reverts and you keep your funds, minus gas.

The default tolerance is 0.5%, adjustable to 0.1%, 1% or 3%. The server caps anything sent to it at 5%, because past that the trade is not slipping, it is being taken.


15The fee

WhatRateHow
Spot swap0.25% (25 bps)Taken on chain from the output currency, inside the swap transaction.
PerpetualsNoneSurety does not execute perps and charges nothing on them. You pay the venue and nothing to us.
Pool feeVaries by tierGoes to liquidity providers, not to us. Shown separately in the panel.
Gas~185,000 gasPaid by you to the chain, as with any transaction.

The fee is taken on chain, inside the swap transaction, out of the currency you receive. It is not a transfer we make afterwards out of our own wallet, which would be a promise rather than a mechanism: if the fee cannot be taken, the whole swap reverts and nothing moves.

Surety never holds your funds at any point. The swap moves value from your wallet to the pool and back in a single transaction, and the fee comes out of the pool's output on the way through.

Perpetuals carry no Surety fee at all. We do not execute them, so we do not charge for them. On a perp you pay the venue and nothing to us.


16Perpetuals

Perpetuals settle on the venue's own order book against USDG collateral, not on chain. You can trade them from here, and the way that works is worth understanding because it is unusual.

Why an Ethereum signature is not enough

This venue runs its own rollup with its own signature scheme. An order is not an Ethereum transaction and your wallet cannot sign one. Instead the account registers a separate signing key, and that key signs orders.

The venue publishes its signer as a WebAssembly build. Surety loads it in your browser, so the key is generated on your machine, stored on your machine, and signs on your machine. Nothing in that path is a server of ours, and we could not place an order on your behalf if we wanted to.

  1. Have an account on the venue

    Accounts are opened by depositing USDG there. We do not do that step for you.

  2. Register a key, once

    Your wallet signs a plain message naming the new public key and your account index. That signature proves the account is yours; only its owner can install a key on it.

  3. Trade

    Long or short, market or limit, with your open orders and position beside the form. Cancels are signed the same way.

Read this before you enable it. A key that can place orders on this venue can also withdraw from it, and it lives in your browser's local storage. Treat the device as you would a hot wallet. There is a button in the panel that removes the key, and using it costs nothing but one signature to set up again.

Our fee on perpetuals is nothing. We do not route them, we do not take a cut, and there is no plan to. You pay the venue's own maker and taker fees and nothing to us.


17Keys and custody

  • Surety never holds your funds. A swap moves value from your wallet to the pool and back in one transaction.
  • Surety has no key that can move anything of yours. Nothing we control can pull funds from a wallet.
  • We never ask for a seed phrase or a private key, and no legitimate interface ever will.
  • Balances are read over our own RPC rather than through your wallet, so they are correct even when your wallet is pointed at another network.
  • Disconnecting clears our side and asks your wallet to revoke its grant. Wallets that do not support revocation keep their own permission, and we say so instead of pretending otherwise.

18Contracts

Every address below was confirmed to hold deployed bytecode on chain 4663 before it was written down.

ContractAddress
$SURETY token0xF99E03274E60F9E4f5966C39e5DDb2C6eb0bF115
Universal Router0x53BF6B0684Ec7eF91e1387Da3D1a1769bC5A6F77
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
v4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
v4 Quoter0x8dc178efb8111bb0973dd9d722ebeff267c98f94
v4 StateView0xf3334192d15450cdd385c8b70e03f9a6bd9e673b
WETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
ChainValue
NameRobinhood Chain
Chain id4663 (0x1237)
RPChttps://rpc.mainnet.chain.robinhood.com
Explorerhttps://robinhoodchain.blockscout.com
Native currencyETH

19Check it yourself

Everything above is a claim. Here is how to test the load-bearing ones without taking our word for any of it.

Read a dividend multiplier straight off the contract

# MU, selector 0xa60bf13d
curl -s https://rpc.mainnet.chain.robinhood.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[
        {"to":"0xff080c8ce2e5feadaca0da81314ae59d232d4afd","data":"0xa60bf13d"},"latest"]}'

See which markets we consider tradable, and why

curl -s https://app.suretyprotocol.xyz/api/quote?list=1

Each token comes back with the pool it would use and how far its quote sits from the venue price. Anything worse than 3% is returned as tradable: false and gets no trading box.

Get a real quote, with the fee broken out

curl -s 'https://app.suretyprotocol.xyz/api/quote?token=MU&amount=0.01&side=buy'

Build the transaction and see it simulated

curl -s https://app.suretyprotocol.xyz/api/swap \
  -H 'content-type: application/json' \
  -d '{"token":"MU","side":"buy","amount":"0.01","address":"YOUR_ADDRESS"}'

The response contains the exact calldata your wallet would be handed, and the result of running it against the live chain from your address. Decode the calldata yourself: the action bytes are 060c100f, and the TAKE_PORTION parameters carry the number 25, which is the fee in basis points.


20What can go wrong

  • The token is not a share. It is a debt security giving economic exposure. If the issuer fails, what you hold is a claim on the issuer, not on the underlying company.
  • Liquidity here is thin. Most pools on this chain are small and a few are empty. Even the tradable ones move on modest size, which is why the panel prints the comparison against the venue price on every quote.
  • A quote is one block old the moment it is made. The minimum received is your protection, not the quote.
  • Simulation is not a guarantee. It proves the transaction works against the current state. The state can change before your transaction lands, which is what the minimum is for.
  • Approvals outlive transactions. Ours expire in 30 days. Approvals you have granted elsewhere may not, and are worth reviewing.
  • A perpetual signing key is powerful. It can trade and withdraw on your venue account and it sits in browser storage. That is the price of signing locally instead of handing a key to somebody's server, and it is a trade worth making knowingly rather than by default.
  • Surety is early. The code is young, liquidity is thin, and the honest thing to do is size accordingly.

Nothing here is financial advice. Trading involves risk, including the total loss of what you put in.