Flash — upfront stock for locked bags
Flash lets you lock a Greenback 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
30 days
90 days
Payout
Early unlock
Empty bank
Not DeFi lending yield
User flow
- Open the Flash tab in the nav, or a token page — the Flash card sits under activity.
- Check holdings and USD value for that memecoin.
- Enter an amount and pick a duration (7 / 30 / 90 days).
- Review the quote: notional stock value of your bag, then stock you receive now (the flash rebate).
- Approve the memecoin (if needed) and confirm Flash. Stock hits your wallet in the same flow; memecoins move into the vault.
- Under My flashes, unlock after the unlock date to return your memecoins.
When Flash is greyed out
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: Uniswap V4 graduated pool spot (meme ↔ stock) on-chain. The deepest native ETH ↔ stock V4 pool is a sanity gate only (liquidity + mid vs Chainlink). It does not size the rebate.
Anti-manipulation after graduation
Ops
setStockPerToken cron required. Seed setEthStockPool per backing stock (deploy script does this for listed tickers).Then the upfront rebate is:
// value = stock notional of locked memecoin amount
// aprBps = 1600 / 2400 / 3600 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 24% APR pays roughly 1 × 0.24 × (30/365) ≈ 0.02 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
Contract
function fundStock(address stock, uint256 amount) external; // treasury
function setMarket(memecoin, stock, curve, stockPerToken, allowed) external;
function setEthStockPool(stock, fee, tickSpacing, minLiquidity) external;
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 reads the graduation Uniswap V4 pool on-chain (with ETH/stock sanity). Redeploy via DeployFlashVault.s.sol and point NEXT_PUBLIC_FLASH_VAULT at the new address; old vault locks remain unlockable on the previous contract.