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.

Flash — upfront stock for locked bags

Flash lets you lock a Robinback memecoin for a fixed duration and receive that launch’s backing stock immediately from the protocol stock bank. Your memecoins unlock when the timer ends. Trading, launching, and graduation are unchanged — Flash is an additive vault beside the factory.

7 days

8% APR

Short lock

30 days

12% APR

Default

90 days

18% APR

Longer lock

Payout

Stock

Same ticker as the launch backing

Early unlock

No

v1 — wait until unlock time

Empty bank

Off

Flash blocked; rest of app works

Not DeFi lending yield

This is not Aave/Lido-style strategy yield. The stock you receive is prepaid from a treasury-funded bank on the Flash vault. The quoted APR is a protocol rate used to size the rebate — not a guarantee of market returns.

User flow

  1. Open the Flash tab in the nav, or a token page — the Flash card sits under activity.
  2. Check holdings and USD value for that memecoin.
  3. Enter an amount and pick a duration (7 / 30 / 90 days).
  4. Review the quote: notional stock value of your bag, then stock you receive now (the flash rebate).
  5. Approve the memecoin (if needed) and confirm Flash. Stock hits your wallet in the same flow; memecoins move into the vault.
  6. Under My flashes, unlock after the unlock date to return your memecoins.

When Flash is greyed out

The vault is paused, the token isn’t listed for Flash, the stock bank for that backing asset is empty, or pricing isn’t ready. Launch and trade still work normally.

How the rebate is calculated

First the vault values your locked memecoins in backing-stock units:

  • Pre-graduation: bonding curve token USD ÷ Chainlink stock USD.
  • After graduation: a protocol-committed stockPerToken rate only — never Uniswap spot (spot is sandwichable). The rate must be fresh (default max age 6h), increases are capped per update (default 5%), and an optional hard ceiling can be set per market. Stale or unset → Flash blocked.

Anti-manipulation after graduation

Pumping the V4 pool cannot inflate your Flash rebate. Post-grad Flash only pays against the vault’s last committed rate, not the live mid.

Then the upfront rebate is:

Rebate sizingFlashVault.sol
// value = stock notional of locked memecoin amount
// aprBps = 800 / 1200 / 1800 for 7d / 30d / 90d (owner-settable)
// duration = lock length in seconds

rebate = value * aprBps * duration / (10_000 * 365 days)

Example intuition: locking a bag worth 1 META for 30 days at 12% APR pays roughly 1 × 0.12 × (30/365) ≈ 0.01 META upfront. Exact on-chain math uses the vault’s live quote.

Where the stock comes from

The protocol treasury deposits Robinhood Stock Tokens into the vault’s per-stock bank (META bank, TSLA bank, etc.). Each flash pays from the matching bank and reduces that reserve.

  • Route is always memecoin in → stock out.
  • Banks are independent: funding META does not enable Flash for TSLA-backed tokens.
  • If reserveOf[stock] can’t cover the rebate, the flash reverts and the UI shows unavailable.
  • Flash does not pull automatically from curve fees in v1 — top-ups are treasury / ops.

Locks, holder tax, and risk

  • While locked, your memecoins sit in the vault wallet. They do not earn holder-tax rewards for that period (rewards accrue to balances held outside the vault).
  • No early unlock in v1 — you wait until unlockAt.
  • You still hold price exposure: the memecoin can move while locked; the stock rebate is fixed at flash time.
  • Caps may apply (per-flash and per-day) so a single wallet can’t drain the bank in one shot.

Protocol perspective

Flash is a treasury-funded incentive: stock leaves the bank before any future fees “earn it back.” Empty bank = feature off. Treat APR and caps as campaign knobs, not perpetual free yield.

Contract

FlashVault

0xc6DA11…3E85bf

Additive — does not upgrade factory/curves

Core surfaceFlashVault.sol
function fundStock(address stock, uint256 amount) external; // treasury
function setMarket(memecoin, stock, curve, stockPerToken, allowed) external;
function setStockPerToken(memecoin, stockPerToken) external; // post-grad commit
function quote(memecoin, amount, durationId) view returns (rebate, stock, unlockAt);
function flash(memecoin, amount, durationId) returns (positionId, rebate);
function unlock(uint256 positionId) external;

Markets must be allowlisted per memecoin. Pre-grad pricing uses the bonding curve; after graduation Flash requires a fresh setStockPerToken commit — never V4 spot.