Robinback

Docs

How Robinback works

Production guide for launching and trading stock-backed tokens on Robinhood Chain — mechanisms, fees, graduation, and the contracts that run it.

Two markets, one ticker

Before graduation you trade the bonding curve. After graduation you trade the Uniswap V4 pool. The token page switches automatically — look for the Graduated badge.

On the curve

Open any token page, choose Buy or Sell, and pick your payment asset:

  • Buy with stock — approve the underlying (e.g. AAPL) once, then buy. Works for every listed backing.
  • Buy with ETH — only when the app shows an ETH route for that stock. ETH is swapped to stock first, then the curve buy runs in the same flow.
  • Sell — sell tokens for stock, or for ETH when the reverse route is supported.

Slippage

The UI suggests slippage from estimated price impact. Confirm the minimum out in your wallet — curve trades revert with Slippage if the market moves past your floor.

Fee skim order (every trade)

Fees are always taken in the underlying stock, in this order:

Buy quote fee orderBondingCurve.sol
function quoteBuy(uint256 stockInRaw)
    external view
    returns (uint256 tokensOut, uint256 priceUsd8After)
{
    uint256 protocolCreator = protocolFeeBps() + creatorFeeBps();
    uint256 feePC = (stockInRaw * protocolCreator) / BPS;
    uint256 afterPC = stockInRaw - feePC;
    uint256 tax = (afterPC * holderTaxBps) / BPS;
    uint256 stockNetNorm = _to18(afterPC - tax);
    // ... curve math on stockNetNorm ...
}
  1. Protocol + creator (default 1% combined) come off first.
  2. Holder tax (if any) applies to what’s left.
  3. The remainder hits the curve (or V4 pool after graduation).

After graduation (Uniswap V4)

Curve buys/sells stop. The token page routes swaps through Uniswap’s Universal Router + Permit2 into the graduated pool. The pool’s LP fee is 0 — protocol, creator, and holder tax are enforced by StockBackHook so fee behavior matches the curve era.

Hook fee skimStockBackHook.sol
/**
 * @dev Protocol+creator on notional, then holder tax on the remainder
 *      (matches BondingCurve). Holder tax stock is taken to the curve
 *      and credited via `creditHolderTax`.
 */
function _payStockFees(...) internal returns (uint256 feeAmount) {
    uint256 pcFee = (notional * pcBps) / BPS;
    uint256 afterPC = notional - pcFee;
    uint256 tax = (afterPC * holderTaxBps) / BPS;
    // ...
}

Reading the token page

  • Live price — curve / Uniswap spot, refreshed continuously.
  • +/- % — change vs ~24h ago from indexed price history (or since the first stored tick).
  • Chart — defaults to 15m; switch intervals anytime.
  • Details float — description and social links from on-chain metadata.
  • Trades / Holders — recent activity and holder distribution.