Docs

Guides, addresses, and license.

Documentation

Reference for StonkBrokers. Smart Launch V2, Stonk Launcher, Anvil AMM, and Stonk Exchange are live on Robinhood Chain.

Start

Overview

The 4,444 StonkBrokers collection is fully minted out on Robinhood Chain. Buy $STONKBROKER on OpenSea (marketplace Get tab), then swap or snipe a broker on the Anvil NFT AMM Trade desk. Activate for tier weighted distributions, Clock In to distribute stock, or borrow against a broker.

Live now: $STONKBROKER, Anvil NFT AMM (trade, activate, distributions, loans), Broker Box (Certificate Counter + Degen Mode), Smart Launch V2 (/launcher). The Special Projects roster (TickerYard, Card Wall, Oakmont Vault) is live and trading. The Stonk Exchange (vDEX, powered by up.) is live now — swap, pool, and stake on the trading floor. Leverage Machine, the STORMM powered options exchange, launches Q4 2026. /options. Trading apps: see Developer integration or /launcher/developers. Burn to mint closed Thursday, July 16. 11:59 PM EST (historical).

Token

$STONKBROKER ERC-20 whitepaper

The canonical $STONKBROKER token whitepaper covers contract address, fixed supply, no team / no vesting allocation, fee-sink economics, access controls, and the HasLock audit (zero findings) performed by Admir Zlatic (0xSimpleFarmer), Hashlock SSCAC certified.

Network

Robinhood Chain mainnet

4663Chain ID
ETHCurrency
4,444 minted outCollection
L2 mainnetType

Reference

Contract addresses

Live mainnet deployment addresses on Robinhood Chain.

Robinhood Chain only. Never send funds to this address on Ethereum, Base, Arbitrum or any other chain. It is an empty account there and nothing sent to it can be recovered.

Anvil NFT AMMCollection, token, activation, Clock In, vaults
ContractAddress
NFT Collection0x539c…abf00x539cdd042c2f3d93ebc5be7dfff0c79f3b4fabf0
$STONKBROKER0xe934…bf500xe934e36a439c94017b64a3fece66af12099abf50
Activation Manager0xacd5…f6640xacd5ae3c060c1137fe2ee86b0ab2ef697456f664
Broker Clock In 3.00xf412…bc580xf4129019d8838f2555bdc8ecb3024a02145dbc58
Intern Clock In 3.00xf90a…c0590xf90a384936af8e6fd1c6c0f9ca804da5395bc059
Clock In 2.1 (Directed Booster, retired)0x1f12…81c90x1f12fe622c11947f93f53d63f68f7f46b6d081c9
Stock Booster (Clock In v1, retired)0x038a…726b0x038a7f4e4e89448ad74e044337c9ac25c11e726b
Overtime Booster (retired)0xf9ca…259a0xf9ca5f6d8622c82758914681a12674e2d489259a
AMM Vault0xe302…32d20xe302733accf4800146e55fc45b46b4e4ffc032d2
Loan Vault0xa7b9…36640xa7b9ac696b252b79568a5a01b2fd02177ef23664
Escrow0x799a…cf620x799ae26fa515cef145e8bc8636f7fff87b05cf62
Stonk InternsCollection, activation ladder, Intern Clock In 3.0, onchain art
ContractAddress
Interns Collection (ERC-721C)0xfc4b…65a50xfc4b0c4f464dc3037cf013934648a8a726d565a5
Intern Activation Manager0x668e…4b370x668ea9e44e0ceb5b203067873e0b9bcdf2214b37
Intern Clock In 3.0 (generation 2, ladder weighted)0xf90a…c0590xf90a384936af8e6fd1c6c0f9ca804da5395bc059
Intern Clock In 3.0 generation 1 (retired, swept)0xb657…F55d0xb6573Dd536F6268A9d028adeC00F08918830F55d
Payroll escrow0x97Ad…a4910x97Ad779D5e9Be49541F6aBEb5391F17cca21a491
Intern Art (onchain SVG, frozen)0x1ebA…16250x1ebAbD799c522454A5A5De8AE331Cc5287091625
Intern Metadata0x5361…ad500x53617cadB950074313d01BdB1f925264a12Fad50
Intern Transfer Validator0x36cd…99510x36cdfAAC12e849bf27dCba6cBdFe35d35fEE9951
Safety Deposit BoxV3, V4, up. lockers, vesting, Clock In fee router
ContractAddress
V3 Liquidity Locker0xfc96…12230xfc96cf67ecc55be4adabc3aecbe6ad6349f11223
V3 Lock Ownership NFT0xe460…a3600xe460da1a77cae75eed8b355d05b6fcbfa4b2a360
V4 Liquidity Locker0x5a28…bda60x5a28ce098750f73bc9ec142d4bce464e1a0bbda6
V4 Lock Ownership NFT0xad95…aa980xad9535790b0f00ff3f932d482c0112273ec9aa98
UP CL locker0xc1af…a0760xc1afa59e2abc1c868c51a1f799a7578eacfea076
UP CL locker NFT0x3e45…422f0x3e45e90d83d87f961561968709d5ab844eb7422f
UP v2 locker0x2179…90170x21797736c25851a6102d196afba78f978f589017
UP v2 locker NFT0x0256…2ec20x025650befc1ba9c6bc024425aaf0fec72edf2ec2
Vesting locker0x2b4a…9aa90x2b4ad79da7bd3bf340bbd2ad2039b149214e9aa9
Vesting locker NFT0x12d5…420e0x12d554ef1d5b1dcbc6bc4154ec7ce493933f420e
Safety Deposit Clock In (fee router)0x5564…692c0x55642a3f10f1af5145d3d59021b1d6b03bb8692c
Uniswap V4 PoolManager0x8366…09510x8366a39cc670b4001a1121b8f6a443a643e40951
Uniswap V4 PositionManager0x58da…4fa70x58daec3116aae6d93017baaea7749052e8a04fa7
Exchange and Uniswap V3The Stonk Exchange trades on the up. ve(3,3) contracts. The Uniswap V3 stack below backs the Safety Deposit Box and router rails.
ContractAddress
WETH90x0bd7…ad730x0bd7d308f8e1639fab988df18a8011f41eacad73
PositionManager0x7399…e0d30x73991a25c818bf1f1128deaab1492d45638de0d3
Smart Launch V2Eight quote lanes. Always read through SafeLaunchLensV2. See Trading App Integration for ABIs and HTTP routes.
ContractAddress
SafeLaunchLensV20x25b5…15B30x25b5Df581f4b2Ed450203f375ad8A28b17F115B3
SafeLaunchPunchRouter0x2e2a…5C9D0x2e2ae202BD8C7944189A724D572098c16B375C9D
ClockInCard0xcC92…15420xcC9232eFD27B392fF9F96a6DCD45F12C9b6A1542
StonkIcoBonusKickstarter0x2B93…f2700x2B937fF27D117bDDB409B6da4Ee222F65102f270
Smart Launch pad WETH0xFCd6…EC9f0xFCd61B25BbF3AbD6cf0070D6328E351cc30EEC9f
Smart Launch pad STONK0x8f67…6cD40x8f6782c5Aa37804d08a9b7bf3984Ff3245Fd6cD4
Smart Launch pad USDG0xd4F2…D70a0xd4F20033586977A2511f4A2DB4aF7C79a340D70a
Smart Launch pad GME0x4B9D…8cFD0x4B9Dcd6CCFAeF0f6D23065Dd78E79d5E20ec8cFD
Smart Launch pad NVDA0xEe96…F9fB0xEe96d955d5634813374ecE4C74F2C0ff71B1F9fB
Smart Launch pad AAPL0xB045…a8640xB0453A81Cbf963903409FFF18AD92941e1c7a864
Smart Launch pad SPCX0x0c3b…c9470x0c3b4EDED41696eFF0ed70841f132B519d81c947
Smart Launch pad USO0xDb3C…053B0xDb3C81C841ff88db6cDFbDDB0eE049D162A6053B
Smart Launch pad YBTC0x472a…86040x472a1AB6aEB77E3479193FBe83b718f9Bf5F8604
Stonk Launcher
ContractAddress
Launcher Factory0x80a7…72810x80a77001456bc986083678F9a112B1EC2Aa07281
Launch Fee Router0x74F1…47a50x74F161cfd4035Be8F1606e6604a34548c89447a5
LP Locker0xa6bF…47C80xa6bFF814FC8EE3E1F134C767D384D0d9D94147C8
Clock In Pot0x2098…Ebbe0x2098270d97c0cD0cdEC27296343ce76d7285Ebbe
Launch Deployer0x00f8…Dd970x00f8C29B28CB00a20F0CA071eFAED0D3fE15Dd97
Testnet archive (hackathon demo)Robinhood Chain testnet addresses. Do not use on mainnet (chain ID 4663).
ContractAddress
WETH9 (testnet)0x37E4…46910x37E402B8081eFcE1D82A09a066512278006e4691
Uniswap V3 Factory (testnet)0xFECC…23c10xFECCB63CD759d768538458Ea56F47eA8004323c1
SwapRouter (testnet)0x1b32…67250x1b32F47434a7EF83E97d0675C823E547F9266725
QuoterV2 (testnet)0x126f…0dB10x126f1c1F29A0f49c5D33e0139a5Da1FE25590dB1
PositionManager (testnet)0xBc82…A3270xBc82a9aA33ff24FCd56D36a0fB0a2105B193A327
Launcher Factory (testnet)0x631f…61A20x631f9371Fd6B2C85F8f61d19A90547eE67Fa61A2

Module

NFT collection: Stonk Brokers

StonkBrokers launched as a fixed set of 4,444 items in mid-2026 on Robinhood Chain and is one of the first collections built on the ERC-6551 token-bound wallet standard. Every broker owns a real on-chain wallet that is seeded with tokenized stock at mint and, once activated, can receive stock-token reward drops through the StonkBrokers rewards program. Created by Clutch Markets, the brokers anchor the Stonk Exchange ecosystem, including the Stonk Launcher token launchpad and the vDEX.

StonkBrokers is a unified collection of 4,444 unique pixel art stock brokers, each with an ERC-6551 Token-Bound Account. The free mint is closed, the collection is fully minted out. Acquire brokers on the Anvil NFT AMM after buying $STONKBROKER on OpenSea.

Whitelist slots were historically earned by burning Pup Cup (Ethereum) or Clutch Puppies (ApeChain) NFTs before Thursday, July 16. 11:59 PM EST. That path is closed; ApeChain is not a product surface on this site.

4,444Total supply
Minted outMint status
ERC-721Standard
ERC-6551 TBAWallet
Robinhood MainnetChain
Anvil AMM TradeAcquire via
$STONKBROKERToken
Burn to mint (closed)Whitelist

How to get a broker

1

Buy $STONKBROKER on OpenSea via the Get tab.

2

On Trade, swap 666,666 $STONKBROKER + ETH fee for the next vault broker, or snipe an exact # from inventory (ETH trade fee applies).

3

Each broker has a token bound wallet that holds token drops and travels with the NFT.

4

Activate on the Activate tab to earn tier weighted distributions when someone Clocks In.

Module

NFT collection: Stonk Interns

Live The mint, the activation ladder and Intern Clock In 3.0 are live on Robinhood Chain. Addresses are in the contract table below.

Stonk Interns is the companion collection to StonkBrokers: 8,888 pixel art interns, 2 for each of the 4,444 brokers. Intern #N is broker #N's V1 intern and intern #N + 4,444 is its V2 intern. V1 interns are Sigma class and V2 interns are Divergent class. Every intern mirrors the traits of its parent broker, so a broker and its two interns read as one team at a glance. The 28 rarest brokers receive paired one of one art instead of layered traits. The art itself lives fully on chain: 340 vector layers are stored in contract code and every intern's image is composed from them at read time, so no server, IPFS pin or image host is ever needed. Beside the art traits every intern carries live traits that update themselves the moment the underlying state changes: Job Title, Revenue Share, Parent Status, Parent Broker Tier, Status, Activation Tier, Name and Wallet Address.

8,888Total supply
2 per brokerV1 Sigma + V2 Divergent
56One of ones
ERC-721CStandard
ERC-6551 TBAWallet
ERC-2981Royalty
Robinhood MainnetChain
LiveStatus

How the mint works

1

Mint price. Each intern costs $20 in ETH plus 999 $STONKBROKER during the first 24 hours. The ETH leg is priced by the Chainlink ETH/USD feed at mint time and stays a flat $20 for the life of the mint: 25% of it funds the Intern Clock In engine and the rest goes to the treasury. The $STONKBROKER leg goes to the treasury and is the only part of the price that moves (step 5).

2

Every intern is born in its broker's wallet. The moment the mint opens, a permissionless sweep mints all 8,888 interns into the token bound wallet of their parent broker as dormant. The full supply exists onchain and shows on marketplaces from day one, full art included. A dormant intern cannot be moved, activated, named, traded on the Intern Exchange, or used as collateral.

3

Only the parent can mint it out. To release a broker's interns you must own that StonkBroker and it must be activated. Paying the mint fee moves the intern out of the broker wallet into your wallet, deploys the intern's own token bound wallet, and makes it live. Release the V1 intern, the V2 intern, or both in a single transaction.

4

24 hour opening window. For the first 24 hours after the mint opens the $STONKBROKER leg sits at its opening price of 999 $STONKBROKER. This is the cheapest the mint will ever be.

5

The $STONKBROKER leg compounds every day after the window. For the first 10 days after the window closes it rises 10% per day: 1,098 on day 1, 1,208 on day 2, 1,329 on day 3, reaching 2,591 on day 10. For the next 365 days it rises 1% per day, landing at about 97,902 $STONKBROKER on day 375, and holds there. Each step compounds on the previous day's price. The ETH leg is a flat $20 the whole time. The contract owner can only lower the opening price or either daily step, never raise them.

Mint price per intern · $20 in ETH flat + $STONKBROKER leg by day
Opening window, then +10% a day for 10 days
First 24h
999
Day 1
1,098
Day 2
1,208
Day 3
1,329
Day 4
1,462
Day 5
1,608
Day 6
1,769
Day 7
1,946
Day 8
2,141
Day 9
2,355
Day 10
2,591
Then +1% a day for the next 365 days, flat from day 375
Day 11
2,617
Day 20
2,862
Day 30
3,161
Day 60
4,261
Day 90
5,743
Day 120
7,741
Day 180
14,064
Day 240
25,551
Day 300
46,418
Day 365
88,629
Day 375
97,902
After
97,902
$STONKBROKER per intern, rounded down to whole tokens. Plus $20 in ETH on every mint. Each day compounds on the previous day. Ceiling about 97,902 $STONKBROKER from day 375 onward.

Job titles

The broker owner gives each intern a slice of that broker's Clock In revenue. The title stored in the intern's metadata is rank times desk. The slice sets the rank: 0.25% Trainee · 0.5% Junior · 1% no prefix · 2% Senior · 2.5% Head. The parent broker's live activation tier sets the desk: Floor Trader · Floor Runner, Analyst · Research Intern, Portfolio Manager · Portfolio Intern, Managing Director · Executive Intern, Partner · Partner Track Intern. So a Floor Trader delegating 2.5% has a Head Floor Runner, a Partner delegating 0.5% has a Junior Partner Track Intern, and a broker that upgrades its own tier promotes both interns the same block. Titles only move up. A promotion is a small ETH fee, a demotion is not possible, and the title stays with the intern when it changes hands. If the parent broker is not activated the slice pauses and the title reads Applicant until the broker is activated again; a dormant intern that has not been minted out yet reads Applicant as well. The pay share sets this slice and the title, and nothing else: it does not change the intern's weight in the intern Clock In pot.

Intern Clock In

Interns run their own Clock In, the Intern Clock In 3.0 engine, separate from the Broker Clock In 3.0 pool (both addresses are in the contract table). It is live: the collection's 9.99% royalties, the 25% mint share and every desk the interns operate pay into it, and a round opens whenever 0.01 ETH has accrued. Each intern's weight is its own activation tier only. The ladder has five tiers paid in $STONKBROKER: 3,333 / 8,333 / 18,333 / 33,333 / 83,333, named Freshman, Sophomore, Junior, Senior, Alumnus at 1.00x / 1.25x / 1.60x / 2.00x / 3.33x and shown as the intern's Activation Tier trait. Two Freshmen earn the same whatever their pay share; an Alumnus earns 3.33x a Freshman; payout per round is weight divided by total weight times the pot. Interns elect from the same 14 token menu as brokers, default to $STONKBROKER when they have no election on file, and claim their own pay from the Interns tab; payouts land in the intern's own token bound wallet. The first 24 hours of Intern Clock In were built differently on purpose: the pot weighted each intern by pay share as well as tier, so raising an intern to Head (2.5%) was a 10x boost. That encouraged broker owners to put their interns on payroll. From the generation 2 engine the pot weighs the activation ladder only; the pay share keeps paying the parent broker slice.

How an intern gets paid, in full

Parent broker slice. The parent StonkBroker's own Clock In credits (broker Clock In 3.0). Every credit the parent broker earns splits share% to this intern's wallet. The broker owner sets the share: 0.25% floor (Trainee), 0.5% (Junior), 1%, 2% (Senior) or 2.5% (Head), at most 5% per broker across both interns, up only, and it follows the intern when it is sold. If the parent broker is inactive: If the parent broker is not activated (sold, or never activated) it earns no credits, so this slice pauses. The share stays stored and resumes the moment the broker is activated again.Intern Clock In pot. Royalties (9.99%), 25% of every intern mint in ETH, and the fees of every desk the interns run. Weight = the intern's own activation tier only: Freshman 1.00x, Sophomore 1.25x, Junior 1.60x, Senior 2.00x, Alumnus 3.33x. Two Freshmen earn the same whatever their pay share; an Alumnus earns 3.33x a Freshman. Payout per round = weight / total weight x pot. If the parent broker is inactive: Unaffected by the parent. An activated intern keeps its full ladder weight while its own NFT stays put; transferring the intern clears its activation.

What each trait means

Art traits are fixed at mint. Every other trait is read from chain state each time the token is viewed.Art traits (Background, Skin, Outfit, Hair, Eyes, Mouth, Accessories, Pocket Square ...) · Mirrors the parent broker's own traits, drawn in the class style. Fixed forever; the 56 one of ones carry One of One + One of One Name instead.Class · V1 = Sigma (token N), V2 = Divergent (token N + 4,444). Fixed.Parent Broker · The StonkBroker id the intern belongs to. Fixed.Status · Dormant (awaiting mint) while the intern still sits in the broker wallet; Live once minted out. Live from chain state.Revenue Share · The share the intern actually draws of the parent's credits: 0.25% floor once live under an active broker, up to 2.5%. Set by the broker owner, up only.Job Title · Rank x desk. Rank comes from the share (Trainee / Junior / none / Senior / Head), desk from the parent broker's live tier (Floor Runner ... Partner Track Intern). Reads Applicant while dormant or while the parent is not activated.Parent Status · Active / Inactive, read live from the parent broker's activation.Parent Broker Tier · Floor Trader ... Partner, the parent's live tier; Inactive when the parent is off.Activation Tier · Freshman ... Alumnus, the intern's own ladder rung. This is the weight in the intern Clock In pot. Cleared when the intern transfers.Name · The onchain name registered to the intern; follows it when sold.Wallet Address · The intern's ERC-6551 wallet, where every payout lands.

Intern Exchange

An automated market for interns, run by the interns. Deposit $STONKBROKER, interns, or both into a pool, set a buy price, a sell price and a step, and the pool market makes on its own: every buy moves the price up one step, every sell moves it down. Pools are quoted in ETH or in $STONKBROKER. Browse it in an Anvil style vault view or a marketplace style grid.

Names marketplace for Robinhood Chain

The interns operate the onchain name service for all of Robinhood Chain. Anyone can register a name that resolves to a wallet, list it and trade it, and the interns benefit from the fees the marketplace earns. An intern can carry a name of its own that travels with it when it is sold. Fees and the ENS gateway details are published before launch.

V2 lending for brokers and interns

The interns operate the V2 lending desk for StonkBrokers and interns. Liquidity providers supply ETH or $STONKBROKER, borrowers post a StonkBroker or a live intern as collateral, and liquidations honor the StonkBroker royalty. The interns earn the fees the desk generates. Parameters are published before the desk opens.

Brokers and interns, one desk

The site gets a Brokers / Interns switch. My Brokers, Clock In, and the marketplace surfaces render the intern side with the same controls you already use, and every intern shows its parent broker.

Weight map: tiers, pay share and what they move

1. Intern activation ladder: the only dial on the intern Clock In pot
TierActivation feeMultiplierPot weight vs a Freshman
Freshman3,333 $STONKBROKER1.00x1.00x
Sophomore8,333 $STONKBROKER1.25x1.25x
Junior18,333 $STONKBROKER1.60x1.60x
Senior33,333 $STONKBROKER2.00x2.00x
Alumnus83,333 $STONKBROKER3.33x3.33x

Payout per round = your weight divided by the total weight of every activated intern, times the pot. Upgrades pay only the difference; a transfer clears the activation.

2. Pay share: the only dial on the parent broker slice
ShareRank word in the titleSlice of the parent broker's creditsIntern pot weightHow it is set
0.25%Trainee0.25% of every credit the parent broker earnsnoneautomatic floor once live under an active broker
0.5%Junior0.5% of every credit the parent broker earnsnonebroker owner sets it ($1 promotion, up only, 5% cap per broker)
1%none (plain desk name)1% of every credit the parent broker earnsnonebroker owner sets it ($1 promotion, up only, 5% cap per broker)
2%Senior2% of every credit the parent broker earnsnonebroker owner sets it ($1 promotion, up only, 5% cap per broker)
2.5%Head2.5% of every credit the parent broker earnsnonebroker owner sets it ($1 promotion, up only, 5% cap per broker)

Both interns of one broker together take at most 5% of that broker's credits. The share follows the intern when it is sold and can never be lowered.

3. Parent broker ladder: the broker's own weight, and the desk word of the title
Broker tierActivation feeBroker pool weightIts interns are called
Floor Trader66,666 $STONKBROKER1.00xFloor Runner
Analyst166,666 $STONKBROKER1.25xResearch Intern
Portfolio Manager366,666 $STONKBROKER1.60xPortfolio Intern
Managing Director666,666 $STONKBROKER2.00xExecutive Intern
Partner1,666,666 $STONKBROKER3.33xPartner Track Intern
4. Which dial moves which payout
StreamIntern tierPay shareParent tierParent inactive
Intern Clock In pot (royalties, 25% of mints, intern desk fees)sets the weight (1.00x to 3.33x)no effectno effectno effect
Parent broker slice (the broker's own Clock In credits)no effectsets the slice (0.25% to 2.5%)bigger parent weight = bigger credits to slicepauses while inactive, resumes on re-activation
Job Title traitno effectsets the rank wordsets the desk wordreads Applicant while inactive
Broker Clock In pool (the parent's own pay)no effectup to 5% of the broker's credits leave to its internssets the broker's weight (1.00x to 3.33x)must be active to earn

Example: a Head Freshman and a Trainee Freshman earn the same from the intern pot; the Head takes 2.5% of its parent's credits, the Trainee 0.25%. An Alumnus earns 3.33x a Freshman from the pot whatever its share.

Interns inherit the parent collection's rules: rewards flow to token bound wallets, never to bare wallets, and every payout is weighted by activation. Brokers themselves are unchanged; see the StonkBrokers collection and Activation and Clock In above.

Module

Interns desks (Anvil AMM)

The desk is the Anvil 2 way functionality for NFTs: user run order books with a price ladder. Anyone opens a desk for any ERC-721 on Robinhood Chain (quoted in ETH, STONKBROKER, USDG or one of the listed stock tokens) or on Ethereum mainnet (ETH, WBTC, USDT, USDC, APE, XAUt), and loads NFTs (an ask desk), quote (a bid desk) or both (an Anvil 2 way desk). Traders buy from the cheapest ask and sell into the highest bid; the floor sorts every listing by USD. Live at /marketplace?tab=desks with a Robinhood / Ethereum switch; the Ethereum floor pins the top collections (BAYC, MAYC, Wrapped CryptoPunks, Pudgy Penguins, Azuki, Doodles, Milady, Moonbirds, CloneX, Lil Pudgys) into the picker.

How a desk prices

  • Ladder. Each NFT moves the price once. Linear: the ask steps up by a fixed amount after every sale and the bid steps down after every buy. Exponential: the same with a percent of the current price (a 2% step makes each rung 1.02x the last). A batch walks the rungs one by one: buying five at once pays one step above spot for the first and five steps above for the fifth, the same total as five single buys back to back, and selling five into a bid walks the bid rungs down the same way.
  • Fee. 9.99% of the curve value in the quote token on every trade: 66% back into the desk that filled it (the desk compounds), 25% to the intern Clock In engine, 9% to the treasury. Buyers see the fee included price; sellers see the net they receive. A two way desk may add its own spread of up to 20%.
  • Floors. StonkBrokers asks can never go under 733,332 STONKBROKER (one seat plus one activation) and are quoted in STONKBROKER until the protocol pins a floor for another quote. Bids are never floor gated. A two way desk that buys a broker back keeps its next ask at the floor.
  • Safety. The exchange is the only contract that can move a desk's NFTs or quote for a trade; only the desk owner can load, withdraw or reprice. Every buy carries a price limit and every sale a minimum, so a repriced desk reverts instead of overcharging. Fee sinks that cannot receive park their leg instead of blocking the trade; anyone can flush it later. Owner powers are limited to lowering the fee, steering the split within the 25% intern floor, delaying sink changes by 24 hours, pausing trading (desk withdrawals never pause) and blocking a collection.

Selling an intern or a broker through a desk

Moving an activated broker or intern into a desk, or selling it into a bid, clears its activation on the way out. The buyer re activates. Interns only trade through desks once the Stonk Interns owner has registered the exchange on the intern transfer validator (`setPoolRegistry`); brokers and every collection without a transfer validator trade immediately.

Integration for other collections

Any team can put their collection on the desk with no permission from StonkBrokers: paste the contract address in Open a desk (the exchange checks ERC-165 for ERC-721), or call the contract directly. Collections that enforce an operator allowlist (ERC-721C style validators) must allow the exchange and its desk clones as operators; a registry style validator can point at the exchange's isPool(address). The collection's owner() can bind an official logo by signing one message from the desk UI (or POST /api/desks/collection).

1

Read desks and quotes off the exchange (view calls, no indexer needed), or use the floor API below.

2

Buyers approve the quote token to the exchange (ETH desks take msg.value); sellers `setApprovalForAll(exchange)` once.

3

Desk owners approve the desk clone for their NFTs and call `depositNFTs`; bids are funded with `depositQuote`.

4

Watch `PoolCreated`, `Buy`, `Sell` on the exchange and `Bought` / `Sold` on each desk for your indexer.

solidity
// 1. Every desk on the exchange (paged) and a quote for one NFT off a desk
address[] memory pools = exchange.pools(0, 200);
(uint256 total, uint256 protocolFee) = exchange.quoteBuy(pool, 1);   // fee included
(uint256 net,   uint256 fee2)        = exchange.quoteSell(pool, 1);  // net to the seller

// 2. Buy: ETH desk sends msg.value = maxTotal (surplus refunded); ERC-20 desk approve() first
exchange.buy{value: total}(pool, ids, total, recipient);
exchange.buyMany{value: sum}(swaps, sum, recipient);               // several desks, one quote

// 3. Sell: setApprovalForAll(exchange, true) once, then
exchange.sell(pool, ids, minNet, recipient);

// 4. Open a desk for YOUR collection (any ERC-721 on the chain)
address desk = exchange.createPool(
  collection, quote,           // quote = address(0) for ETH or an allowlisted ERC-20
  InternPool.PoolType.Trade,   // Buy = bids only, Sell = asks only, Trade = both
  InternCurve.Kind.Linear,     // or Exponential (delta is a 1e18 multiplier, >= 1e18)
  spot, delta, lpFeeBps,       // ladder + optional spread (Trade only, <= 2000)
  initialQuote                 // optional bid funding (msg.value on ETH desks)
);
IERC721(collection).setApprovalForAll(desk, true);
InternPool(desk).depositNFTs(ids);
Contracts (Robinhood Chain 4663)
ContractAddress
InternExchange (factory, registry, router)0xDea3…f5180xDea32D8AEE85B41A0f320Ff823e4625AAB01f518
InternPool implementation (desk clone target)0x01CF…E3030x01CF86731Fbf668bA5A14bD2eF4DfE06fD77E303
InternTransferValidator (Stonk Interns)0x36cd…99510x36cdfAAC12e849bf27dCba6cBdFe35d35fEE9951
StonkBrokers collection0x539c…abf00x539cdd042c2f3d93ebc5be7dfff0c79f3b4fabf0
Stonk Interns collection0xfc4b…65a50xfc4b0c4f464dc3037cf013934648a8a726d565a5
Contracts (Ethereum mainnet 1)Same bytecode. The 25% intern leg lands on the ops converter wallet and is bridged to the Robinhood Chain intern engine.
ContractAddress
InternExchange (Ethereum)0xE272…81930xE272B47AF5d8de38E7D09c048a81480290478193
InternPool implementation (Ethereum)0x0020…b5180x0020C1b3a52d136cc0f95Db6De6367Da4Ad7b518

Quote tokens on the Robinhood menu: ETH, STONKBROKER, USDG, AAPL, AMZN, NVDA, GOOGL, SPCX, USAR, GME, TSLA, PLTR, AMD, GLD, cbBTC. Ethereum menu: ETH, WBTC, USDT, USDC, APE, XAUt.

HTTP read routes (server aggregated, edge cached): GET /api/desks/floor (every desk, listing and bid with USD marks), GET /api/desks/collection?address= (ERC-721 check, name, logo, floors), GET /api/desks/holdings?wallet=&collection=, GET /api/desks/nft-image/<collection>/<id>.

Not an endorsement

Desks are permissionless. A collection appearing on the floor means someone opened a desk for it, nothing more. Check the contract and the collection before trading. Selling into a bid is final.

Module

Anvil NFT AMM

Home for broker trading, activation, distributions, and loans. Flat AMM price is 666,666 $STONKBROKER + ETH fee plus a native ETH trade fee (10% swap / 15% snipe).

  • Get tab: buy $STONKBROKER on OpenSea.
  • Trade: swap $STONKBROKER for the next vault broker, or snipe a specific #.
  • My Brokers: token bound wallet balances and share art.
  • Activate: stake a broker on the distribution payroll (tier weighted).
  • Distributions: Clock In when the ETH pot is full to swap into stock and airdrop.
  • Loans: borrow full principal against a broker; pay ETH fee upfront.

Open /marketplace. See Contract Addresses for the AMM vault and related contracts.

Integration for wallets, marketplaces and NFT teams

Every Anvil market is a set of permissionless contracts spawned by a factory: a fixed price ERC-20, an escrow, the AMM vault (swap and snipe), a loan vault and a soft staking vault. The factory is the registry, quotes are pure views, and nothing is upgradeable. The same gen 7 (V3) factory generation runs on Robinhood Chain, Ethereum, Base and ApeChain; older generations keep serving their live markets. Deploying a collection market is one payable call.

  • Trading. buyRandomNFT / buySpecificNFT / sellNFT / batchSellNFT on the market's NFTAMMVaultV3. Price is tokensPerNFT forever; fees are the creator set swap and snipe rate (1% to 15%) plus 0.5% protocol, and a flat ~$2 ETH leg per NFT on Robinhood Chain only.
  • Loans. borrow(tokenId, 365 days) pays out tokensPerNFT minus prepaid interest; repay is principal only; anyone may liquidate after maturity plus a 7 day grace.
  • Soft staking. activate(tokenId, tier) burns a tier fee and earns the market's fee streams while the NFT stays in the wallet; any transfer voids it. Read activationOf and pendingRewards; never render a failed read as "not activated".
  • Indexing. MarketCreated + MarketCollectionLinked on each factory, NFTSold / NFTBought on each vault. Tag every vault and escrow as protocol infrastructure in holder analytics.
solidity
// 1. Discover every market on a chain: one call per factory (canonical + legacy)
MarketInfo[] memory markets = factory.allMarkets();
// MarketInfo { marketId, collection, collectionType, token, escrow, ammVault, loanVault, stakingVault, governor, tokensPerNFT, fees, governanceEnabled }

// 2. Quote right before signing (prices are constant, fees are governance set)
(uint256 total,,,,, uint256 nextId) = amm.quoteRandomBuy();
(uint256 net,,,) = amm.quoteSellNFT();
uint256 ethFee = amm.robinhoodSwapFeeWei();           // ~$2 in ETH on Robinhood Chain, 0 elsewhere

// 3. Swap. Approve the collection token (buys) or the NFT (sells) to the vault first.
amm.buyRandomNFT{value: ethFee}(total);               // FIFO: delivers nextId
amm.buySpecificNFT{value: ethFee}(tokenId, total);    // snipe fee tier
amm.sellNFT{value: ethFee}(tokenId, net);
amm.batchSellNFT{value: ethFee * ids.length}(ids, net * ids.length);   // V3, creator pays 0 ETH

// 4. Deploy your own market (fee read live; overpay is refunded)
factory.createMarket{value: factory.creationFee()}(params);
Canonical AMMFactoryV3 per chain (gen 7)Legacy factories, the Civilization instance and the pre factory StonkBrokers market are listed in the guide.
ContractAddress
Robinhood Chain (4663), from block 383384710x8b18…90690x8b186717a20845b514344b17fd5e198aDCab9069
Ethereum (1), from block 257712780xB46C…2B950xB46CE1551C9f0a460d9d3A237135C10FccD12B95
Base (8453), from block 500688840xdE48…A0320xdE481E29F0a7164d2229F23A92283324Df10A032
ApeChain (33139), from block 465499440xC06C…3F640xC06CcA08340F61aA5d7EF1e37FfD7168283f3F64
Robinhood gen 6 factory (open V2 deploy path)0x432D…73510x432D20AAe5605b1E94C914283d7155eBc6727351

Module

Activation and distributions (Clock In)

Clock In reward drops are paid from the protocol's Clock In 3.0 reward pool under the StonkBrokers rewards program. Only activated brokers and interns receive token airdrops, weighted by tier.

Broker activation

66,666Base 100.00x
166,666T1 125.00x
366,666T2 160.00x
666,666T3 200.00x
1,666,666T4 333.00x

Activation fees are paid in $STONKBROKER (50% burned, 50% protocol by default). Activation clears on true ownership transfer.

Clock In 3.0

Clock In is the StonkBrokers motto: the distribution flow is 100% onchain and run by the community itself. Clock In 3.0 runs as two engines, the Broker Clock In 3.0 for activated StonkBrokers and the Intern Clock In 3.0 for activated Stonk Interns (addresses in Contract addresses). Every activated broker or intern directs its own share, pick up to 3 tokens from the 14 token menu on the Activate desk (AAPL, AMZN, NVDA, GOOGL, TSLA, PLTR, AMD, GME, SPCX, USAR, cbBTC, GLD, USDG and $STONKBROKER; weights of your choosing, 100% into one is fine). Anyone with no election on file receives the program default, which is $STONKBROKER: every round market buys $STONKBROKER for every unelected share. When the accrued ETH bar is full, any wallet can hit Clock In and pay gas: the engine tallies elections, swaps the pool into each demanded token in one pass, and credits every broker pro rata by tier weight. A broker with interns on payroll pays their job title share out of its own credit, straight into each intern's wallet. Credits are pushed into broker wallets automatically, or collect yours instantly with the Deliver button; interns claim their own pay from My Interns. No bot required; resume open rounds with the same button.

Both engines accept plain ETH and WETH (WETH is unwrapped by the permissionless unwrapWeth()), so any fee stream or royalty receiver can point at them directly. Every previous election was cloned onchain from Clock In 2.1 at the cutover; Clock In 2.1 is sealed and its remaining pay was delivered.

Overtime (retired)

Overtime was the royalty-funded second shift on the Distributions desk. It has been merged into Clock In 3.0, royalties now feed the same elected token engine as trade fees. Historical Overtime rows keep their Bloomberg-orange styling in airdrop history, and past Overtime tickers keep resolving in wallets.

Robinhood Token multipliers (corp actions)

Robinhood Stock Tokens implement ERC-8056. When the underlying company runs a corporate action (a stock split, or a cash dividend paid by the issuer on the real stock), the token updates an onchain uiMultiplier() (shares per token) instead of rebasing balances. Raw token amounts stay put while each token can represent more than one share. Chainlink USD feeds already quote the full token price (share price × multiplier); the UI shows the live × factor on Distributions and My Brokers. This is not the same as Clock In and Overtime airdrops. Those are marketing rewards funded by AMM trade fees and royalties, not corporate dividends. See Robinhood Chain docs.

Module

Loans

Borrow the full 666,666 $STONKBROKER + ETH fee principal against a broker as collateral. The fee is paid in ETH upfront at 15% APR on the market ETH notional for the loan duration (minimum term floors the fee so borrowing is never cheaper than an AMM exit). Excess msg.value is refunded. Fees split 70% StockBooster / 30% protocol. Repay returns exactly the principal in $STONKBROKER; overdue loans owe an additional ETH late fee at the same rate.

UI: /marketplace?tab=loans. Contract: Loan Vault in addresses.

Module

Safety Deposit Box: liquidity locker

Lock LP on Robinhood Chain to prove liquidity commitments while keeping swap-fee income. Five desks: the V3 locker escrows an existing Uniswap V3 LP position NFT; the V4 locker mints and custodies a native-ETH Uniswap V4 position directly in the canonical PoolManager (V4 position NFTs can't be escrowed as-is, the UI detects them in your wallet and prefills a matching deposit instead); the up. CL locker escrows up. DEX Slipstream concentrated-liquidity position NFTs; the up. v2 locker vaults up. v2 pool LP tokens; and the vesting desk escrows plain ERC-20 tokens with no LP position at all. Locked up. positions can additionally be staked into their pool's up. gauge to earn UP emissions without ever leaving the box. Every lock issues a transferable ownership NFT; whoever holds it collects the position's swap fees and, once the window opens, withdraws the liquidity.

Fee modes (chosen at lock time, immutable)

0.5% upfront

Protocol takes 0.5% of the locked liquidity at lock time. Nothing more on withdraw or fee-collect.

20% of swap fees

Protocol takes 20% of every swap-fee collect (80/20 split). Locked principal is never touched. Offered for Special Partners.

A legacy third mode (1% on withdraw) still functions for locks that chose it but is no longer offered for new locks.

Lock styles and unlock windows

Each lock sets a start and finish timestamp: nothing is withdrawable before start, liquidity vests linearly between the two, and after finish the position is fully withdrawable and releasable. The UI offers three styles built on that window:

Hard lock

Start is set to the unlock date with a 10-minute vest tail after it, 0% withdrawable until the date, then everything. The default for new locks.

Linear vesting

Start is now (or a chosen delay) and finish is the end date, liquidity unlocks continuously across the window, withdrawable as it vests.

Permanent

Window pinned at the top of the uint64 range, vesting never begins and release is impossible for anyone, forever. Swap fees stay claimable.

Lock cards badge every deposit as HARD LOCK, LINEAR VESTING, or PERMANENT so the semantics are readable at a glance. The UI stamps windows a few minutes ahead at submit so transactions can't revert with a past start time; this only ever delays a window, never shortens it.

Where protocol fees go

All locker protocol fees route to the Safety Deposit Clock In contract, an ownerless, pull-based router with a 90% community / 10% protocol split. ETH and WETH flow into the Stock Booster reward pot; other tokens open claim rounds that activated brokers pull into their token-bound wallets under the rewards program, each broker claiming its own tier-weighted allocation.

Safety properties

  • No admin key can seize, withdraw, or release locked liquidity, the owner can only rotate the fee recipient for future fees.
  • Locked principal is mathematically unwithdrawable before the unlock window opens; permanent locks can never be withdrawn by anyone.
  • Only the current holder of the lock's ownership NFT can collect swap fees, withdraw vested liquidity, or release the position.
  • Lock windows are fixed inside the signed transaction, no third party can shorten them after the fact.

Security audit

Hashlock certified. Audited by 0xSimpleFarmer

The Safety Deposit Box contracts passed a full Hashlock-certified security audit by 0xSimpleFarmer (signed off 2026-07-15): 0 critical and 0 open high findings, the two highs identified during review were fixed and covered by regression tests, and every fix was re-verified against live on-chain transactions. The audit covers the locker core, the ownership NFT, fee-mode math, admin trust boundaries, and rug vectors.

Read the full report: Hashlock Certified Contract Audit (full text)

UI: /locker. Contracts: see Contract Addresses.

Module

Smart Launch V2

Permissionless token launcher with anti snipe curves, degen mode, fair launch buffers, and guaranteed bond graduation. Every raise bonds into a permanently locked pool in the Safety Deposit Box (up. Slipstream CL or optional Uniswap v3 venue). Degen launches stream half of every fee to the ICO Bonus Kickstarter.

Trading apps: integrate against StonkSafeLaunchpadV2 + SafeLaunchLensV2 — full addresses, ABIs, and HTTP routes in Trading App Integration.

UI: /launcher. Developers: /launcher/developers

Developers

Trading app integration

For GMGN, BasedBot, aggregators, and bots wiring buy/sell on StonkBrokers launch tokens. Two surfaces: Smart Launch (V2/V3 pad singletons) and Stonk Launcher (factory curve per token). Always key Smart Launch storage on (pad, launchId). Quote through SafeLaunchLensV2 — never reimplement curve tax math.

Trading terminal integration. Chain 4663

Downloads

Full two part guide (Arbitrum One + Robinhood Chain) with the ABI selector and event topic reference.

Smart Launch. V2 pads

V2 pads
ContractAddress
SafeLaunchLensV2 (quotes + views)0x25b5…15B30x25b5Df581f4b2Ed450203f375ad8A28b17F115B3
V2 pad WETH0xFCd6…EC9f0xFCd61B25BbF3AbD6cf0070D6328E351cc30EEC9f
V2 pad STONK0x8f67…6cD40x8f6782c5Aa37804d08a9b7bf3984Ff3245Fd6cD4
V2 pad USDG0xd4F2…D70a0xd4F20033586977A2511f4A2DB4aF7C79a340D70a
V2 pad GME0x4B9D…8cFD0x4B9Dcd6CCFAeF0f6D23065Dd78E79d5E20ec8cFD
V2 pad NVDA0xEe96…F9fB0xEe96d955d5634813374ecE4C74F2C0ff71B1F9fB
V2 pad AAPL0xB045…a8640xB0453A81Cbf963903409FFF18AD92941e1c7a864
V2 pad SPCX0x0c3b…c9470x0c3b4EDED41696eFF0ed70841f132B519d81c947
V2 pad USO0xDb3C…053B0xDb3C81C841ff88db6cDFbDDB0eE049D162A6053B
V2 pad YBTC0x472a…86040x472a1AB6aEB77E3479193FBe83b718f9Bf5F8604

Smart Launch. V3 pads (external token)

V3 pads
ContractAddress
V3 pad WETH0x5BCE…a3B30x5BCEefBa6fDf437A7388aDC5c9056c827baca3B3
V3 pad STONK0x406f…11310x406fd0B957bb8cF1dd57C78540D009578e971131
V3 pad USDG0xF0A0…0eeA0xF0A06Ac7BBb0cc3049B68c257c3ee27CcEA40eeA
V3 pad GME0x5b21…992B0x5b21F8a5Ef81586627B4725844aD447325d0992B
V3 pad NVDA0xDf03…9B540xDf03953DCA8dB733345278A0c5fd2E81fa2A9B54
V3 pad AAPL0xc522…657f0xc522DfaE0D1a140257702392B665183a6De7657f
V3 pad SPCX0xd82d…a86A0xd82da1D8ef59959b170b59147283Ab1F2F1Ca86A
V3 pad USO0x644b…70D20x644b19512052A1b6d38d7B16C6c3Fb1d3F7270D2
V3 pad YBTC0x2bd7…76dA0x2bd7F90cca4660da82aa693cF352dDB6275C76dA

Curve-phase trade (Smart Launch)

solidity
// Reads — SafeLaunchLensV2 @ 0x25b5Df581f4b2Ed450203f375ad8A28b17F115B3
quoteBuy(pad, id, quoteIn) → (tokensOut, taxBps)
quoteSell(pad, id, seller, tokensIn) → (quoteOut, taxBps)

// Writes — StonkSafeLaunchpadV2 @ pad
buy(id, quoteIn, minTokensOut, ref, recipient)
buyEth(id, minTokensOut, ref, recipient) payable   // WETH lane
sell(id, tokensIn, minQuoteOut, ref, account, ethOut)
setOperator(id, operator, approved)

// After core.bonded → swap on locked pool via standard DEX router

Indexer events (Smart Launch)

On each pad: LaunchCreated, LaunchArmed, SafeBuy, SafeSell, LaunchBonded.

HTTP API. Smart Launch

Smart Launch HTTP
RoutePurpose
GET /api/safe-launch/floorLaunch grid: token CA, pad, id, phase, mcap, quote lane.
GET /api/safe-launch/buysLive buy tape (SafeBuy logs).
GET /api/safe-launch/token-logo?tokens=0x…Batch logo lookup (≤60 tokens).
GET /api/launcher/token-image/<hash>Logo bytes (content-addressed).

Stonk Launcher. Factory curve

Factory
ContractAddress
StonkLaunchpadFactory0x80a7…72810x80a77001456bc986083678F9a112B1EC2Aa07281

Curve-phase trade (factory tokens)

solidity
// StonkCurvePool @ pool from factory Launch event
buy(minOut) payable
sell(amount, minOut)

// Factory @ 0x80a77001456bc986083678F9a112B1EC2Aa07281 — index from block 34876725
poolOf(token) → pool address

HTTP API. Stonk Launcher

Launcher HTTP
RoutePurpose
GET /api/launcher/tokensFactory token grid (sort=new|mcap|volume|trending|grad).
GET /api/launcher/token/<address>Single factory token + curve state.
GET /api/launcher/trades?token=0x…Recent trades for a factory token.

Same format (Markdown source, PDF, byte exported ABIs) for the rest of the protocol. Each guide carries its own live addresses per chain.

Uniswap v4 hooks

Our official Uniswap v4 hooks, live on Robinhood Chain and shipped through Hookr, have their own reference section with addresses, fee terms, entry points, revert selectors and every guide and ABI: Uniswap v4 hooks.

ABIs beside the guides: AMMFactoryV3.abi.json, NFTAMMVaultV3.abi.json, LoanVaultV3.abi.json, SoftStakingVaultV3.abi.json, TokenEscrowReserve.abi.json, BatchRouterV2.abi.json, InventoryLens.abi.json, InternExchange.abi.json, InternPool.abi.json, SmartLpVault / SmartLpRegistry / SmartLpLens / SmartLpFeeManager. Everything under https://stonkbrokers.io/integration/.

Network: Robinhood Chain (chainId 4663). Explorer https://robinhoodchain.blockscout.com

Developers

Smart LP integration

For wallets, dashboards, yield aggregators, and keeper bots wiring deposits, withdrawals, reads, and indexing on the Safety Deposit Box Smart LP vaults. Each vault is an immutable ERC-20 share token over one Uniswap v3 position. Discover vaults from the registry, read the floor through the lens, and never hardcode a vault address.

Guide version 2026-09-28 (rev 3). Robinhood Chain 4663 and Arbitrum One 42161.

Downloads

Full guide with share math, guard behaviour, keeper surface, revert selectors and event topics. ABIs are byte exported from the deployed artifacts.

Two bytecode generations, one of them live

Every listed vault today runs the audited V1 generation on both chains (179 vaults on Robinhood Chain, 22 on Arbitrum One at the time of writing). V2 is the staged remediation of the SB Security review and is not deployed. It ships as new vault addresses on the same registries, so feature probe per vault: an eth_call to canSettle() decodes a bool on V2 and reverts with empty data on V1. V1 vaults keep working forever, withdrawals included.

Live addresses

Robinhood Chain (chainId 4663)179 vaults listed
ContractAddress
SmartLpRegistry (source of truth)0xE874…01460xE8749183Fbf6A657EB58B3a4D3E4B9Cc09560146
SmartLpLens (all reads)0x754B…3D4d0x754Bf8479630bbC22aA7b5E9742156ce89dD3D4d
SmartLpLib (linked library)0x4A2d…E32F0x4A2dA8e70b51595Bf564082A86336AbDDc62E32F
Chainlink ETH/USD0x6091…27210x6091E64eb7138EEF066a80FD3A0d7427B91f2721
Arbitrum One (chainId 42161)22 vaults listed
ContractAddress
SmartLpRegistry (source of truth)0xFB2e…eD5e0xFB2eA53b16C07011d4390A2e449385180A54eD5e
SmartLpLens (all reads)0x1243…887F0x1243c8FB4099568460ba0619aaB24DC15758887F
SmartLpLib (linked library)0x4A2d…E32F0x4A2dA8e70b51595Bf564082A86336AbDDc62E32F
Chainlink ETH/USD0x639F…a6120x639Fe6ab55C921f74e7fac1ee960C0B6293ba612

The registry is the only source of truth for vault addresses on each chain, and vaults never move between chains. Delisting only removes a vault from the UI surface; the vault keeps working, so keep serving positions you already track.

Verifying a vault is genuine

Registry listing is a curation signal. To verify a vault carries the audited bytecode, fetch its runtime code and check all three: code length exactly 23,718 bytes, every linked library slot carries 0x4A2dA8e70b51595Bf564082A86336AbDDc62E32F, and the code with immutables, library slots and the solc metadata hash blanked to zero hashes to 0x1c32f1291fb1038d8c6506800210a217c649195efb2dd0134869d8776d1eb2e3. The same pin passes on both chains; the site applies it to every registry row before rendering (app/lib/smartLpCodePin.ts).

Discovery and reads

solidity
// SmartLpRegistry
count() ? uint256
vaults(index) ? address
all() ? address[]

// SmartLpLens (live)
viewAll(registry) ? VaultView[]           // whole floor in one call
viewVault(vault) ? VaultView
previewWithdraw(vault, shares) ? (out0, out1)   // net of the 10 bps retention

// VaultView: vault, pool, token0, token1, symbol0/1, decimals0/1, mode (0 FR / 1 BB / 2 ASK),
// baseIsToken0, poolFee, tickLower, tickUpper, spotTick, positionId, totalSupply,
// totalValueQuote, tvOk, capQuote, maxCapQuote, perfFeeBps, withdrawFeeBps,
// depositsPaused, settled, allBase, lastRecenterAt, feeManager

Shares are quote denominated (about one quote unit per 1e18 shares at genesis). Never present shares as token amounts; show USD and underlying values from the lens. Treat tvOk == false as value unavailable, never as zero TVL. USDG, USDC and USDT are 6 decimals.

Deposits and withdrawals

solidity
// Deposits (guarded by TWAP band + fresh Chainlink cross check, capped)
deposit(amount0, amount1, minShares, to) payable        // FR, BB pair deposit
zapDeposit(tokenIn, amountIn, minShares, to) payable     // FR, BB single token entry (swaps in the vault pool)
depositSingle(amountBase, minShares, to) payable         // ASK base only, swap free

// Withdrawals (never pausable, never gated, no oracle)
withdraw(shares, min0, min1, unwrapNative, to)           // proportional, in kind
zapWithdraw(shares, tokenOut, minOut, unwrapNative, to)  // single token exit, runs the guard

// Permissionless cranks
compound()                                               // collect fees, skim 10%, reinvest
harvest()                                                // harvest mode vaults only, pays the caller a reward

Every deposit function returns the minted shares, so an eth_call from the depositor is the quote: sign with minShares at 98% of the simulation. Native ETH on WETH quoted vaults is added on top of the declared amount (pass amountIn = 0 with msg.value). Approve the vault for the exact amount. A genesis deposit must be worth at least minFirstDepositQuote(). The 10 bps withdraw retention stays in the vault for remaining holders; show it before signing.

Stock vaults carry a Chainlink cross check that only runs while the feed is fresh. Equity feeds pause from Friday close to Monday 00:00 UTC, which widens the TWAP band instead of blocking; on Monday open a drifted pool briefly reverts FeedDeviation on deposits until arbitrage converges it. Probe availability with a 1 wei simulated deposit and gate the form with plain copy. Plain withdraw is never affected.

Revert selectors

Selectorsidentical on both chains
SelectorErrorAction
0xa4875a49CapExceededDeposit would push TVL over capQuote. Show vault full.
0x64a78d82TwapDeviationSpot too far from TWAP. Retry later.
0xc7f602abFeedDeviationPool vs fresh Chainlink diverged over 3% (Monday opens). Self heals.
0x007426cdFirstDepositTooSmallGenesis deposit under minFirstDepositQuote().
0xdeeb6943DepositsPausedGuardian pause. Withdrawals unaffected.
0x1a8ade30DepositsClosedASK vault entered its band or reads settled.
0x2a580d6dWrongModeWrong entrypoint for the vault mode.
0x54b8210dMinSharesShare slippage floor hit. Re quote.
0x168f8aadMinOutWithdraw or zap output floor hit. Re quote.
0x0a7287b5NativeNotSupportedmsg.value sent to a vault without a wired WETH side.
0x15fa6e71NotPoolTokentokenIn or tokenOut is not one of the pool tokens.
0x1f2a2005ZeroAmountNothing pulled.
0x0cb4955bSwapFloorInternal swap fill under the TWAP floor. Retry later.
0xabf0f034NoPositionKeeper action on a vault with no minted position.
0xb0782df7CooldownKeeper action inside recenterCooldown.
0x98248e64EthSendFailedNative payout rejected. Withdraw with unwrapNative false.
0xb2f71223NotSettleable (V2)settle() before spot and TWAP are both past the band.
0x560ff900AlreadySettled (V2)settle() on a settled vault.
0xceee81e7DepthGate (V2)Band vault at capacity for its pool depth. Withdrawals unaffected.
0x13be252bUSDG InsufficientAllowanceUSDG custom allowance error. Raise the approval.

Events

Topic0logs land on the vault address; registry rows on the registry
EventTopic0
Deposited(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 shares)0x8bab6aed5a508937051a144e61d6e61336834a66aaee250a00613ae6f744c422
Withdrawn(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1, uint256 shares)0x3cae9923fd3c2f468aa25a8ef687923e37f957459557c0380fd06526c0b8cdbc
Compounded(uint256 added0, uint256 added1)0x8082b0dab6d73a8025e5f15e4fdd54b68197a613e361810d4a2446c634b98ada
FeesCollected(uint256 fees0, uint256 fees1, uint256 skim0, uint256 skim1)0xf5d590414d56d256b8c16b850d0b57f2f5d2ed90686166e150b48a96f0dbdd61
Recentered(int24 tickLower, int24 tickUpper)0xf50915569476905e05b4ef6c338d995bc8bf49e89258202b9709c6dd6504e3d7
Trailed(int24 tickLower, int24 tickUpper)0xd606fe2b531f0b729332a3ba354a4acddcdc86720901401c7bbdd72af6556931
CapRaised(uint256 newCap)0xe0c76087275a8c4223be123d025629c6693fd33f20c0f0f6bf632708bda4329b
VaultListed(address indexed vault, address indexed pool, uint8 mode) [registry]0x3dd1a36f073a1702b0ea7db13a70123c0e21753a1571eaf80acacea471618152
VaultDelisted(address indexed vault) [registry]0x1e50537a8984b347abcf90ec072a917d874c1737aaca4e13ae66aa499977aab1
Settled(...) [V2]0x7823e479a1a4ebe2418874847436f8a1680c5ee5b17f38bb59dbff28e1b45552
DepositRefund(address indexed to, uint256 amount0, uint256 amount1) [V2]0x67b1105972f389118797e8b84acfdd40581567974b584258e34ff63c296eec46

Scan floors: Robinhood Chain block 53,800,000, Arbitrum One block 505,449,619.

HTTP activity feed

Smart LP HTTP
RoutePurpose
GET /api/locker/smartlp-activity?chain=robinhoodPer vault automation ledger on Robinhood Chain: compounds, collects, rebalances, lifetime fees, holders.
GET /api/locker/smartlp-activity?chain=arbitrumSame ledger for the Arbitrum One fleet.

Convenience only; the chain is the source of truth. Poll no more than every 30 seconds.

Staged V2 generation

V2 prices deposits on the vault basket instead of the TWAP, refunds the unused leg of a pair deposit, adds a permissionless settle() for single sided vaults, a depth gate on band vaults, and an exact previewWithdraw. Its ABIs are published so you can prepare; the guide tags every V2 row.

Smart accounts and ERC-6551 wallets are first class depositors (no EOA gate). Preflight the inner call from the account address so real selectors surface; gas comes from the signer. Questions and listings: simple@clutch.market.

Developers page: /locker/smart-lp/developers

Developers

Uniswap v4 hooks

Official StonkBrokers hooks for Uniswap v4 on Robinhood Chain, built in partnership with Hookr. Every hook ships with a verified contract set and byte exported ABIs, and every launch runs on Hookr.

This section is the on site reference for trading apps, bots and launch front ends that touch the hooked pools: live addresses on Robinhood Chain (chain id 4663), the shared fee terms, the entry points per hook, the revert selectors you will meet, and the guide plus ABI downloads. Every contract below is the current generation. Earlier generations had zero launches and are retired; never route to an address that is not listed here.

Reference version 2026-10-13. Launches run through Hookr at https://hookr.fun.

Downloads

Official hooks pack (PDF)One document covering all six hooks, the fee map and the partnership terms.Hashlock Certified audit (PDF)StonkBroker hooks audit, findings HK-01 to HK-22 with fixes and the proof ledger.Hooks fix notice (PDF)HK-22 partial fill guard on every StonkFeeHook controller, what changed for integrators and every new address.Battle hook fix notice (PDF)HK-22 partial fill guard, what changed for integrators and the new Battle addresses.Pair Token Hook guide (PDF)Per hook integration guide with addresses, flows and events.Pair Token Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.Battle Token Hook guide (PDF)Per hook integration guide with addresses, flows and events.Battle Token Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.Strategy Token Hook guide (PDF)Per hook integration guide with addresses, flows and events.Strategy Token Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.Fractional 404 Hook guide (PDF)Per hook integration guide with addresses, flows and events.Fractional 404 Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.Smart LP Hook guide (PDF)Per hook integration guide with addresses, flows and events.Smart LP Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.StonkBroker Hook guide (PDF)Per hook integration guide with addresses, flows and events.StonkBroker Hook guide (Markdown)Same guide as plain Markdown for agents and docs tooling.

ABIs are byte exported from the deployed artifacts and live under https://stonkbrokers.io/integration/hooks/. The full list is at the bottom of this section.

Taxed buys must not carry a price limit

Do not pass a price limit on taxed buys. Use MIN_SQRT_PRICE + 1 or MAX_SQRT_PRICE - 1 as the sqrt price limit and bound the trade with the router minAmountOut instead. Sells are unaffected: their fee and the Battle inflow are counted on the realized quote output.

The guard is live on every StonkFeeHook controller: Battle, Strategy, Fractional 404 and the Pair Token launcher, all redeployed on 2026-10-13. A taxed buy that would only partly fill reverts instead of charging the full fee. Use the same routing rule on every hooked pool and you never meet it.

Uniswap v4 on Robinhood Chain

All hooked pools live in the canonical Uniswap v4 singleton. Quote with the v4 Quoter, route through the Universal Router with Permit2 approvals, and read pool state with extsload or the hook lenses listed per stack.

ContractAddress
PoolManager0x8366…09510x8366a39CC670B4001A1121B8F6A443A643e40951
V4 Quoter0x8dc1…8f940x8dc178efb8111bb0973dd9d722ebeff267c98f94
Universal Router0x8876…09040x8876789976dEcBfCbBbe364623C63652db8C0904
Permit20x0000…8BA30x000000000022D473030F116dDEE9F6B43aC78BA3
WETH0x0Bd7…AD730x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73

Fee terms shared by every controller

TermValueNote
Protocol share10% of the fee (1000 bps)Carved before the controller remainder on every taxed swap.
Partner share50% of the protocol share0.05% of the fee to the Hookr Safe, 9.95% to StonkBrokers.
Minimum seed0.05 ETHQuote a Battle, Strategy or Fractional launch must lock into its pool.
Pool keyfee 10000 / tick spacing 200Launch controllers. The Smart LP hook uses a dynamic fee pool with tick spacing 60.
Hook flags10956CREATE2 mined permission bits on every StonkFeeHook address.
flushPartner(quote)permissionlessReleases accrued partner fees once the partner address is set; reverts PartnerUnset before.
Fee recipients and ownership
ContractAddress
Protocol recipient (StonkBrokers treasury)0xb668…7CDa0xb668382cF44038a3E8140E789060F6A809787CDa
Partner recipient (Hookr Safe)0x8Fdf…6bE90x8Fdfaa25e2E4dDa297F301ea06458f22186D6bE9
Owner (StonkBrokers ops deployer)0xD4aF…A26C0xD4aF10Bc56b08f8fc2990a3ADeeD4b757ae6A26C
Pending owner, company Safe (2 of 3, acceptOwnership pending)0x6D69…bb260x6D6981459be6EB09C778d98527bCCc1a235bbb26

Owner powers are limited to fee recipients, partner settings, pause and parameter bounds. No owner path reaches locked liquidity or escrowed launch quote on any controller.

Pair Token Hook

One plain ERC-20 per pair, named by its uppercase ticker such as WETHNVDA, that wraps a full range auto compounding Uniswap v4 position anyone can mint, trade on any venue or redeem for the underlying pair. Unlike a Uniswap v2 LP token it is programmable: the hook sets the swap fee, the snipe tax and who may add liquidity, the fee manager decides where fees go, and the token compounds and zaps on its own.

Live on Robinhood Chain. Factory open to anyone who seeds an anchor asset. Launcher hook redeployed 2026-10-13 with the partial fill guard. First live pair: ETHNVDA, paired with STONKBROKER in a full range Uniswap v3 pool.

ContractAddress
PairTokenFactory0x282c…5B380x282c4815F30abc1D0A8eB810c7309140d35a5B38
PairTokenFeeManager0x18Ad…91950x18AdF7be1d23022FcCf286D3d342d92Ecb3F9195
PairToken implementation0x56C8…17530x56C8c249d4c021e93635b120aC68A9a36eb01753
PairTokenLauncher0x1cEE…13E70x1cEE10c87D261912A833E000f7e7295DC9E813E7
Launcher StonkFeeHook0x261a…aaCC0x261a19357c66349BccEC55711F81612C0030aaCC
ETHNVDA pair token (ETH / NVDA, first live pair)0x0D14…dCa80x0D142f0a847838f933114869f6f63Bd618BedCa8
ETHNVDA / STONKBROKER Uniswap v3 pool (1%)0x2BCB…405f0x2BCB09438113d2fD00Bc5B00e7bE4aD36A35405f
  • ETHNVDA is the first pair token created on the live factory. It wraps ETH and NVDA in a full range v4 position and trades against STONKBROKER in a full range 1% Uniswap v3 pool seeded by StonkBrokers (position 1438697).
  • One plain ERC-20 per pair wraps a full range Uniswap v4 position that auto compounds its fees; the symbol is the uppercase concatenation of the pair in currency order, for example ETHNVDA, WETHNVDA or USDGNVDA.
  • What makes a pair token different from a Uniswap v2 LP token is that it is programmable through the hook. A v2 LP token is a fixed receipt for a fixed pool with a fixed fee. A pair token sits on a v4 pool whose rules live in code: the launcher StonkFeeHook sets the swap fee, runs a decaying snipe tax, carves the partner and protocol legs and allowlists the vault as the only LP, while the fee manager decides where the compound carve goes. The token itself also does the work a v2 holder does by hand: it compounds, zaps one asset in or out under guards, and keeps one canonical ERC-20 per pair.
  • create() is permissionless but one side of the pair must be a listed anchor asset meeting its minimum seed, which is what keeps the registry free of dust pairs.
  • Single token entry rides zapDeposit, bounded by maxZapBps 500 and maxZapTickMove 200 ticks; redeem returns both legs and keeps a 10 bps retention for remaining holders.
  • Factory pairs sit on hookless pools; launches through PairTokenLauncher carry the launcher StonkFeeHook and its fee legs.
  • The compound carve (factoryFeeBps 1000) flows to the fee manager, which splits it 50/50 between the Clock In 3.0 broker engine and the STONKBROKER buyback wallet.
Entry points
CallWho
create(tokenA, tokenB, amountA, amountB, sqrtPriceX96IfNew, minShares) payableAnyone
deposit(amount0, amount1, minShares, to)Anyone
zapDeposit(tokenIn, amountIn, minShares, to)See guide
redeem(shares, min0, min1, to) / redeemZap(shares, tokenOut, minOut, to)Anyone
compound()See guide
Anchor assetscreate() needs one side of the pair to be a listed anchor meeting its minimum seed. The owner extends the list with setMinSeed.
AssetAddressMinimum seed
ETH (native)native ETH0.004
WETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD730.004
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d16810
STONKBROKER0xe934e36A439C94017B64a3FecE66AF12099aBF502,000
AAPL0xaF3D76f1834A1d425780943C99Ea8A608f8a93f90.03
AMZN0x12f190a9F9d7D37a250758b26824B97CE941bF540.04
NVDA0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC0.04
GOOGL0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE30.03
SPCX0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa0.06
USAR0xd917B029C761D264c6A312BBbcDA868658eF86a60.75
GME0x1b0E319c6A659F002271B69dB8A7df2F911c153E0.4
TSLA0x322F0929c4625eD5bAd873c95208D54E1c003b2d0.025
PLTR0x894E1EC2D74FFE5AEF8Dc8A9e84686acCB964F2A0.05
AMD0x86923f96303D656E4aa86D9d42D1e57ad2023fdC0.015

Battle Token Hook

Two rival tokens launch into locked full range pools and at the end of each epoch anyone can settle, pulling a slice of the loser's liquidity to buy the winner and deepen its locked LP until a knockout.

Live on Robinhood Chain, generation 4 (2026-10-13) with the partial fill guard.

ContractAddress
BattleVault0x1BaD…D3040x1BaDdAB75dd5223C2A619AA9c88BD211aaC5D304
StonkFeeHook0x6ced…Aacc0x6ced3a0048F9f42836a90ee47FFe64645B0bAacc
  • Every match mints two fresh BattleTokens into locked full range pools; the side with more net quote inflow over the epoch (24h by default, 1h to 7d) wins.
  • settle() is permissionless: it pulls pullBps (at most 90%) of the loser's locked liquidity, burns the loser tokens, buys the winner with the freed quote plus the war chest and relocks it as deeper winner LP, until a knockout at floorBps or maxRounds.
  • Randomness is only the blockhash tiebreak on an exact dead heat; everything else is deterministic from the swap tape.
  • Buys that fill only part of the specified quote revert PartialFill(filled, expected) so inflow can never be inflated by a price limited order.
Entry points
CallWho
createBattle(params)Anyone
settle(battleId)Anyone (permissionless crank)
flushPartner(quote) on the hookAnyone (permissionless crank)

Strategy Token Hook

A strategy token trades against a listed base asset and its taxed swap fees pile up as quote that anyone can execute into the configured strategy, buying the base, deepening LP or buying back the token for holders.

Live on Robinhood Chain, redeployed 2026-10-13 with the partial fill guard.

ContractAddress
StrategyLauncher0x9f68…d0230x9f6821af226D85234DED5F0f024A8A2B4Fa6d023
StonkFeeHook0x242F…2AcC0x242FA7F53383a0e77Dd2A7778dC9Da794f042AcC
  • A strategy token trades against a listed base asset; the taxed swap fees accrue as quote on the launcher.
  • execute(strategyId, minOut) is permissionless once the pending quote clears minExecuteQuote (0.001 ETH) and routes it into the configured strategy: buy the base, deepen LP or buy back the token for holders.
  • Execution is protected by owner set slippage and impact guards and runs in tranches on thin pools.
Entry points
CallWho
createStrategy(params)Anyone
execute(strategyId, minOut)Anyone (permissionless crank)
withdrawLiquidity(strategyId) by the creator once the lock has run outCreator

Fractional 404 Hook

An NFT collection becomes a fungible market where every deposited NFT mints 666,666 fraction tokens, burning them redeems an NFT back, and each vaulted NFT keeps its own ERC-6551 account.

Live on Robinhood Chain, redeployed 2026-10-13 with the partial fill guard.

ContractAddress
FractionalLauncher0xCD44…183D0xCD44629152c9a7CAc2cD68bb25A2293022F3183D
StonkFeeHook0x8A6c…aaCc0x8A6c104d8bc04E058Ca08282E605D42a84D6aaCc
FractionalDeployer (code)0x3361…6dfF0x3361426DEea55e88cb04cCA5cFeB46D99eB36dfF
ERC6551Registry0x3Df3…B9E40x3Df336317B73e0ce417E03488abb2B79cEe2B9E4
Fractional6551Account impl0xb9D0…cC260xb9D00C31F479B892Ae7F8F500dbf3FF3E41acC26
  • An NFT collection becomes a fungible market: every deposited NFT mints 666,666 fraction tokens and burning 666,666 redeems a vaulted NFT back.
  • Each vaulted NFT keeps its own ERC-6551 account, deployed in pages through deployAccounts(collectionId, n), so airdrops and royalties addressed to the NFT stay with it.
  • The fraction token launches into a locked full range pool with the same StonkFeeHook fee legs as the other controllers.
Entry points
CallWho
createCollection(params)Anyone
deployAccounts(collectionId, n)Anyone
deposit(collectionId, tokenId)Anyone
redeem(collectionId, tokenId)Anyone

Smart LP Hook

An oracle anchored dynamic fee hook for stock token pools that charges more to trades pushing price away from the Chainlink mark and pairs with single sided Smart LP ladder vaults.

Live on Robinhood Chain on the NVDA/USDG dynamic fee pool, paired with the slNVDA ladder vault.

ContractAddress
SmartLpHook0x4713…a0c40x47137a7733E2B4DBD0e25416d5D5B29C8A1Da0c4
SmartLpHookLens0x29Ea…3F000x29Eaf335fed9270ba98BD5dd99519bb3af4C3F00
slNVDA ladder vault0x3Ddf…fd2B0x3Ddf0412398D806AF1069B0EA29242b6BD22fd2B
NVDA/USD Chainlink feed0xC9d1…C2a20xC9d16E4f2569b9E3ea0468fD85844953713DC2a2
  • The pool runs the dynamic fee flag (0x800000, tick spacing 60) and the hook charges more to trades that push price away from the Chainlink mark, less to trades that pull it back.
  • NVDA/USDG pool id 0x3b0a3db8c4d25fd428792aa6718796a3b87945e2b1d8b282500a753155a16e8b; a new hook address always means a new pool, so never route to a retired generation.
  • flush(key) is permissionless and splits accrued hook fees 50/50 between the Clock In booster leg and STONKBROKER buybacks after the partner carve.
  • Single sided ladder vaults (slNVDA) stack asks above the mark so LPs farm volatility without holding the quote side.
Entry points
CallWho
registerPool(key, feed, stockIs0) ownerOwner
flush(key)Anyone (permissionless crank)
SmartLpHookLens reads for the live fee at a given tradeRead only

StonkBroker Hook

A pinned preset on Hookr's own RulesLaunch root that launches a token straight into a locked full range ETH pool on Hookr's native rails with the StonkBrokers royalty attached.

Pinned RulesLaunch preset on Hookr's own stack; runnable from the Hookr UI today.

  • This is not a StonkBrokers contract: it is a saved RulesLaunch configuration on Hookr's live stack that launches a token straight into a locked full range ETH pool on Hookr's native rails.
  • Hookr's protocol share (at least 2000 bps) and the StonkBrokers royalty are attached by the preset; the royalty claim wallet is the StonkBrokers treasury.
  • Anyone can run the preset from Hookr. StonkBrokers has not launched a token through it from its own keys.
Entry points
CallWho
Hookr RulesLaunch Launcher.launch with the StonkBroker presetAny launcher on Hookr

The preset is a saved RulesLaunch configuration on Hookr, not a StonkBrokers contract. Anyone can run it from the Hookr launch UI; StonkBrokers does not launch tokens from its own keys with it.

Revert selectors

ErrorWhereWhat to do
PartialFill(filled, expected)StonkFeeHook (Battle, Strategy, Fractional 404, Pair Token launcher)A taxed buy filled less quote than specified. Drop the price limit and bound the trade with the router minAmountOut.
ExactOutputWhileTaxed()StonkFeeHookExact output swaps are refused while a buy or sell fee is active. Quote exact input instead.
TradingPaused()StonkFeeHookThe controller paused trading on this pool (launch buffer or owner action).
LiquidityLocked()StonkFeeHook / controllersOnly the controller may add or remove liquidity while the lock runs.
PartnerUnset()StonkFeeHook.flushPartnerPartner fees accrue on the hook until a partner address is set; all four live controllers already carry the Hookr Safe.
SeedTooSmall() / PriceRequired()PairTokenFactory.createThe anchor seed is under its minimum, or the pool is new and needs sqrtPriceX96IfNew.
BadGenesis()PairTokenThe pool price sits at a sqrt bound (an initialized but dead pool); seed a healthy price first.
MinShares() / MinOut()PairTokenSlippage bound on deposit or redeem. Re quote through the lens preview and retry.
ZapTooLarge() / ZapMovesPrice()PairToken.zapDepositThe zap exceeds maxZapBps 500 or would move price past maxZapTickMove 200 ticks. Split the deposit or supply both legs.
EpochRunning() / NotSettleable()BattleVault.settleThe epoch has not ended yet, or the battle is already knocked out.
NothingPending()StrategyLauncher.executeAccrued quote is under minExecuteQuote; wait for more fee flow.
NotVaulted() / BadTokenId()FractionalLauncherThe NFT is not in the vault, or the id is outside the collection.
PoolNotRegistered() / BadFeedAnswer()SmartLpHookThe pool key is not registered on the hook, or the Chainlink feed returned a non positive or stale answer.

All ABIs

PairTokenFactory.abi.jsonhttps://stonkbrokers.io/integration/hooks/PairTokenFactory.abi.jsonPairToken.abi.jsonhttps://stonkbrokers.io/integration/hooks/PairToken.abi.jsonPairTokenFeeManager.abi.jsonhttps://stonkbrokers.io/integration/hooks/PairTokenFeeManager.abi.jsonPairTokenLauncher.abi.jsonhttps://stonkbrokers.io/integration/hooks/PairTokenLauncher.abi.jsonStonkFeeHook.abi.jsonhttps://stonkbrokers.io/integration/hooks/StonkFeeHook.abi.jsonBattleVault.abi.jsonhttps://stonkbrokers.io/integration/hooks/BattleVault.abi.jsonBattleToken.abi.jsonhttps://stonkbrokers.io/integration/hooks/BattleToken.abi.jsonStrategyLauncher.abi.jsonhttps://stonkbrokers.io/integration/hooks/StrategyLauncher.abi.jsonStrategyToken.abi.jsonhttps://stonkbrokers.io/integration/hooks/StrategyToken.abi.jsonFractionalLauncher.abi.jsonhttps://stonkbrokers.io/integration/hooks/FractionalLauncher.abi.jsonFractionToken.abi.jsonhttps://stonkbrokers.io/integration/hooks/FractionToken.abi.jsonFractionalNFT.abi.jsonhttps://stonkbrokers.io/integration/hooks/FractionalNFT.abi.jsonFractionalDeployer.abi.jsonhttps://stonkbrokers.io/integration/hooks/FractionalDeployer.abi.jsonERC6551Registry.abi.jsonhttps://stonkbrokers.io/integration/hooks/ERC6551Registry.abi.jsonFractional6551Account.abi.jsonhttps://stonkbrokers.io/integration/hooks/Fractional6551Account.abi.jsonSmartLpHook.abi.jsonhttps://stonkbrokers.io/integration/hooks/SmartLpHook.abi.jsonSmartLpHookLens.abi.jsonhttps://stonkbrokers.io/integration/hooks/SmartLpHookLens.abi.jsonSmartLpLadder.abi.jsonhttps://stonkbrokers.io/integration/hooks/SmartLpLadder.abi.json

Every live contract is verified on Sourcify as an exact match. Regenerate this page and the PDFs together whenever a stack is redeployed.

Module

Stonk Launcher

Community curated token launchpad on Robinhood Chain. Bonding-curve sales graduate into locked up. or Uniswap v3 pools with a 33/33/33 fee waterfall and VRNG Clock In buybacks. Factory address 0x80a77001456bc986083678F9a112B1EC2Aa07281 — per-token curve pools emit from launch events. Integrator reference: Trading App Integration.

Community curated by StonkBrokers and $STONKBROKER holders. Launcher activity feeds the protocol's wider ecosystem programs; launched tokens can list on Stonk Exchange (vDEX).

Lifecycle

1. Create

Deploy ERC-20 + sale with fixed price, bonding curve, or custom parameters.

2. Sale

Users buy during the configured sale window.

3. Finalize

Seed Uniswap V3 pool, LP, fee splitter, and staking vault.

Opening Bell buybacks: VRNG-triggered market buys

Every bonding-curve trade pays the launcher fee, and a fixed slice of every fee streams into the Buyback Bar, an on-chain pot that charges as the floor trades. When the bar is full, the miner-backed VRNG (the same certified-print entropy that runs Broker Box) draws two things nobody, not traders, not miners, not the team, can predict or forge: when the bell becomes ring-able, and which live bonding-curve token gets bought.

1. The bar charges

A portion of every buy and sell on every bonding curve feeds the pot. More floor volume = faster charge. The bar level is public, everyone watches it climb.

2. The draw

VRNG picks the moment and the target token in one draw. Selection odds are weighted by each token's fee contribution, curves that feed the bar more carry proportionally better odds, but every live token has a shot on every draw.

3. Clock In

Once the bell goes live, anyone can Clock In to ring it. The entire bar market-buys the drawn token straight into its curve in a single sweep, and the ringer earns a tip for pulling the trigger.

On every other launchpad the fee is pure exit, value leaves the floor and never comes back. Here the house edge is pointed back at the tokens themselves: fees recycle into random, unfrontrunnable buybacks, so expected value flows back to the people actually trading. It is designed to be the highest-RTP meme-coin trading floor crypto has ever seen, the entropy path is byte-identical to Broker Box's audited draw (a pure function of a future certified print), so buyback timing can't be sniped, ground, or selectively aborted by anyone, including us.

UI: /launcher.

Module

Broker Box: World Wide Stonk Exchange

Live on Robinhood Chain mainnet. The floor is the World Wide Stonk Exchange: two counters share one deed collection (First Edition Original Mint). The Certificate Counter sells any listed stock sealed in a bearer deed at exactly 1×. Degen Mode (Play the Box) rolls your multiplier on miner-backed VRNG from 0.70× to the 50× bell and pays out real Robinhood stock tokens the same way. Design RTP is 90.00%. UI: /broker-box.

Machines are ownerless: no pause switch, no upgrade path, no key to player funds. The stocker (treasury on official machines, creator on community launches) can only reclaim idle seed capital and spare bankroll, never reserved prizes, player-owed ETH, or parked protocol accrual. Stock token play and counter mints are unavailable in some regions; settles, rescues, redeems, and cash outs still work.

Two counters

Certificate Counter

No game of chance. Buy a 1× Stonk Certificate of any listed stock. Your ETH (minus a flat $2 fee) swaps through StonkStockRouterV2 at purchase; the exact pool output vaults in the deed. Fee split: $1 to StockBooster / $1 to treasury. Size from $1 to $10M, the UI quotes the live pool return (with state-override) before you sign. Mint to yourself or gift to any wallet. Uses no machine inventory.

Degen Mode: Play the Box

Pay a ticket in ETH or USDG, ring the bell, and a provably fair roll strikes your multiplier. Wins settle as stock in your wallet; you then choose instant 95% sell-back (USDG or ETH) or seal the full prize into a numbered deed. Each open pull reserves its worst-case 50× payout in real stock, so ticket size is bound by that machine's live inventory.

Live floor (mainnet machines)

Nine production machines share one certificate collection. Every machine passed a live router-route probe at launch. The counter shelf can also list route-live stocks that do not have a machine (e.g. feed-less tapes sold OTC only).

Machines
ContractAddress
GME GameStop0x8f18…95b00x8f1836209c42d4f6b6caa782c055ee13f8ac95b0
AAPL Apple0xf9bc…0d440xf9bc0777c087af0fe7214de8a5360be6a71d0d44
AMZN Amazon0x2829…b7150x2829b754784352dd2beffa5eb26d5b499315b715
NVDA NVIDIA0xc5e3…58a00xc5e3e9c2a835ec9319fd8c1d516fd4323c5758a0
GOOGL Alphabet0xff20…072f0xff20b4b8e08beaa4064e3ca4cc5a2e40acac072f
MSFT Microsoft0xfc25…54020xfc253e0062eef614e20e0726e5f6ff7559c35402
SLV iShares Silver0x9d2c…25040x9d2c3355502be065975ad47ef5a902f02c772504
SPCX SPAC and New Issue ETF0xf589…46090xf58979d35c3f0ff6a6f7edd909fe8a95a2894609
USO United States Oil0x5b12…c33c0x5b1282b6ad40b3dc294404a2b33ff7657b66c33c

Tickets, inventory and ladder

Contract tiers run $10 / $50 / $100 / $250 / $500 / $1,000. Mainnet sells up through $100 (hard entropy-grind security ceiling: max outcome $5,000 at 50×). A tier opens on a machine when free stock can reserve one worst-case round (62.5× the ticket at the oracle mark). As inventory compounds (edge + sell-back spread + restock), bigger tickets unlock automatically, high-roller rungs above the live cap stay dimmed until the floor deepens. Pay with ETH or USDG (USDG swaps on-chain at the oracle mark; ~2% headroom refunds in ETH).

After you win

  • Instant cash-out. Every degen win lands as stock in your wallet on settle. One tap sells it back at 95% of the live mark, paid in USDG or ETH from the machine bankroll. The 5% spread stays in the bankroll (house revenue); it is reclaimable by the machine's reclaimer.
  • Mint a Stonk Certificate. sealIntoCertificate(roundId) seals 100% of the prize in a numbered polymer deed with its own ERC-6551 vault, no spread taken. Hold it, trade it, gift it, or redeem any time (redeem burns the deed; cashing out after still pays 95%).

How Stonk Certificates work

1. Struck fully onchain

Claiming a win (or buying at the counter) mints the next numbered deed into one shared collection. Artwork is drawn entirely by the smart contract, no servers, no image hosting. Traits are minimal by policy: Stock, Vaulted Amount, Branch.

2. Sealed vault inside

Every deed owns an onchain vault holding the actual stock tokens. The only way stock leaves is redeem, which burns the deed in the same transaction. An emptied note cannot exist, nobody can be sold a spent certificate.

3. Bearer note

Whoever holds the deed owns the vault. Trade it, gift it, or list it, the stock travels sealed inside. Royalty is 3.33% (cap 5%) to the treasury via setRoyalty.

4. Redeem and cash out

Redeem burns the deed and opens the vault into your wallet. From there, one tap sells the stock back to a machine at 95% of the live mark.

VRNG on Robinhood Chain, powered by DERP

Robinhood Chain has no Chainlink VRF on the production path, so the Box draws randomness from DERP: miners publish certified entropy prints to an onchain conductor, and every machine reads its random words from that shared feed. Production machines use 3 prints ahead plus a ~45s settle-delay floor (older builds used 8 prints / 60s). Round time is cadence-bound, typically a couple of minutes; the UI shows a live ETA from mine health. A Chainlink VRF conductor adapter exists for a future migration.

  • Commit first, entropy later. A pull commits to a word that does not exist yet, derived from future certified prints. Neither the player, the house, nor any single miner can choose the outcome. Once the deciding print lands, the ticket cannot be cancelled to dodge a bad roll.
  • Anyone can verify. wordOf(id) equals previewWord(id) once fulfilled. Anyone can recompute the multiplier; our keeper (or any third party) can call fulfill to land the word.
  • Fails closed. If certified prints thin out or stall, machines stop selling new tickets (FloorUnhealthy). Settles, rescues, redeems, and cash-outs always go through. A pull whose word never lands can be rescued for a full ticket refund after 48 hours.
  • Inventory-bound concurrency. Open rounds reserve stock; when free stock cannot back a new ticket the bell greys out until rounds settle or the restock keeper bridges ETH and converts bankroll to stock. Pulls never sell an uncovered prize.

Prize table (bytecode)

Worst roll pays 0.70×, a player can never be down more than 30% on a single pull. RTP 90.00%.

0.70x45.18%
0.75x36.40%
0.80x2.90%
0.85x2.24%
0.90x1.80%
0.95x1.50%
1.00x2.50%
1.10x1.80%
1.25x1.40%
1.50x1.10%
1.75x0.80%
2.00x0.70%
2.50x0.50%
3.00x0.35%
4.00x0.20%
5.00x0.16%
7.50x0.15%
10.00x0.12%
15.00x0.06%
25.00x0.04%
50.00x0.10%

House edge and fee map

Every degen ticket carries a 10% house edge, burned into machine bytecode at launch:

  • 2.5% creator, pushed at settle (official machines set creator = StockBooster, so this also lands on Clock In)
  • 2.5% StockBooster. Clock In pot for activated brokers
  • 5% protocol, accrues in the machine; withdrawable only to the immutable treasury above the bankroll floor
  • 5% sell-back spread, stays in machine bankroll; reclaimable by the reclaimer (treasury on official machines, creator on community ones). Community reclaimers cannot touch protocolAccrued.
  • Counter, flat $2 ($1 booster / $1 treasury), no percentage. Royalty 3.33% on deed secondary sales to treasury.

Broker Box activity feeds the same Clock In reward pot, activated brokers choose what their reward drops pay out in through their Clock In 3.0 election on the Activate desk.

Deploy your own box (coming soon)

Permissionless launches via the factory are next. One factory call will spin up a new machine pointed at approved stock-token routes and USD feeds, already wired to the shared DERP conductor, swap router, and deed collection. Community launchFor credits the creator with the 2.5% creator share and makes them the reclaimer. Official launch routes creator fees to Clock In. Launches stay curated so junk tokens and junk feeds cannot mint official-looking deeds. Machines migrate VRNG in place via a 3-day timelock (proposeConductor / commitConductor); setMinterRegistrar is redeployable so new machine generations can join the same certificate collection.

Core contracts (mainnet)
ContractAddress
Factory0x278d…d2260x278d4989232c0c213ed4a8a0652f46a21b0fd226
Stonk Certificate0xafbc…e6be0xafbc48317dd946e3b9ce570b75e48a285862e6be
Certificate Counter0x2599…29d70x2599882aaf5c14834562ee59ca7a3d1ffcc229d7
VRNG Conductor0x003e…bcde0x003e29260ef2f762e7f2d95c3d2b7a7f6234bcde
USDG ↔ ETH Exchange0xaf4c…065f0xaf4c809518a9117c4f8e42e82b7221b17fe7065f
StonkStockRouterV20xa88F…00C40xa88F54239Be5124afFea441eDDF423BB138B00C4

Never wire the canonical ERC-6551 registry into a Stonk Certificate deploy, only the project's initializing registry clones + initializes vaults atomically. Full deploy state: contracts/gacha/deployments.mainnet-production.json.

Module

Special Projects

Module

The Stonk Exchange — Powered by up. (vDEX)

Community governed exchange on Robinhood Chain, powered by up. — the ve(3,3) DEX on Robinhood Chain. Swap, provide liquidity (v2 + Slipstream CL), and stake LP in gauges for $UP emissions, live on the trading floor. $STONKBROKER holders vote on how directed flow is routed.

The up. Partnership

Stonk Exchange runs on the up. ve(3,3) engine: Velodrome-style v2 pools, Slipstream concentrated liquidity, gauges, weekly veUP emissions and gauge voting. The up. engine is integrated directly into this section — swap, pool, and gauge staking are live on the trading floor, with the vote suite next. What the partnership entails:

  • $UP is the native vDEX token. UP is pinned on every swap desk menu, one tap from the default (CA 0x57C0…B4F1).
  • Launcher benefits. Tokens launched through Stonk Launcher graduate into a ve(3,3) venue: a gauge can be created and voted for their pool, LPs earn $UP emissions instead of the token paying for its own liquidity, and incentives can be posted to attract deeper books — standing liquidity infrastructure for every launch that makes it.
  • Directed flow. $STONKBROKER remains the governance token of the vDEX — holders direct which pools, routes and ecosystem programs get flow, on top of the veUP gauge layer.
  • Locked liquidity stays home. We do not use the up. locker: up. LP positions (Slipstream position NFTs and v2 LP tokens) lock into the Safety Deposit Box with optional in-locker gauge staking, so locked positions keep earning $UP emissions.

Integrator note: Slipstream is not ABI-compatible with Uniswap V3 — pools are keyed by int24 tickSpacing, never uint24 fee, and swap fees are governance-tunable (read live, never from a static tier). The verified up. contract map lives in app/lib/up-dex.ts; the reference set is vendored at docs/integrations/up/ in the repo. The snippets below are the Safety Deposit Box / Uniswap V3 router rail, not the up. swap ABI.

Quote a swap (SDB / router rail)

solidity
// QuoterV2 at 0x…
function quoteExactInputSingle(
    address tokenIn,
    address tokenOut,
    uint24 fee,
    uint256 amountIn,
    uint160 sqrtPriceLimitX96
) external returns (uint256 amountOut, ...);

Execute a swap (SDB / router rail)

solidity
// SwapRouter at 0x…
struct ExactInputSingleParams {
    address tokenIn;
    address tokenOut;
    uint24 fee;
    address recipient;
    uint256 deadline;
    uint256 amountIn;
    uint256 amountOutMinimum;
    uint160 sqrtPriceLimitX96;
}
function exactInputSingle(ExactInputSingleParams calldata params)
    external payable returns (uint256 amountOut);

ETH ↔ WETH

solidity
// WETH9 at 0x0bd7d308f8e1639fab988df18a8011f41eacad73
function deposit() external payable;
function withdraw(uint256 wad) external;

Fee tiers

500 0.05%Stable pairs
3000 0.3%Standard pairs
10000 1.0%Exotic / low liquidity

UI: /exchange.

Module

Pools: create pools and mint LP

Create Uniswap V3 concentrated liquidity pools and mint LP positions when the vDEX opens.

Coming soon on mainnet. Opens with the Stonk Exchange.

solidity
// PositionManager at 0x73991a25c818bf1f1128deaab1492d45638de0d3
function createAndInitializePoolIfNecessary(
    address token0,
    address token1,
    uint24 fee,
    uint160 sqrtPriceX96
) external payable returns (address pool);

function mint(MintParams calldata params)
    external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);

Module

Leverage Machine. STORMM

Coming soon on mainnet. StockFi infrastructure.

A permissionless on chain options exchange on Robinhood Chain, powered by the STORMM engine. LP stock tokens or ETH and earn yield from LP fees, option premiums, and stock token multiplier dividends. Buy calls or puts against that liquidity, and every position mints as a tradeable NFT to your wallet. LPs earn option premiums plus LP fees plus stock token multiplier dividends from the same deposit; buyers hold tradeable ERC-721 positions and get leverage on tokenized stocks without traditional liquidation mechanics.

  • Powered by STORMM. STORMM runs on Uniswap V4 LP positions with special hook functionality. Take the NVDA and ETH pair: deposit ETH into put liquidity, NVDA into call liquidity, or both, inside your preselected range. That range is the set of strikes you are comfortable selling your liquidity into.
  • Uniswap LP yield. plus two more streams. While deposited, your range earns classic LP fees from normal token trading on Uniswap, exactly like any V4 position. On top of that it earns premiums from options writers and buyers who leverage against your liquidity, and stock token multiplier dividends on the stock side.
  • Regenerative. no rebalancing. Once you deposit there is no need to rebalance. As traders use your LP and options expire or execute, the liquidity automatically returns to its ticks to accrue more premiums and fees. Impermanent loss is not realized unless you withdraw your initial position. LPs are the house.
  • NFT positions. leverage without liquidations. Every call or put mints to your wallet as an ERC-721 you can hold to expiry, exercise in the money, or sell before expiry. Risk is bounded by the premium you pay, not a maintenance margin call that wipes your wallet.

Full overview: /options. Exercise uses TWAP verified pricing once pools are live on the Stonk Exchange.

solidity
// CoveredCallVault at 0x…
function createOffer(...) external returns (uint256 offerId);
function buyOption(uint256 offerId) external returns (uint256 optionTokenId);
function exercise(uint256 optionTokenId) external;
function reclaimExpired(uint256 optionTokenId) external;

Build

Token Registry

On chain list of known tokens with metadata for exchange UI dropdowns.

Archive

Faucet: testnet only (historical)

The testnet StonkEthFaucet was used during the Robinhood Chain hackathon demo. Mainnet users bridge ETH, there is no faucet on the production site.

solidity
function canClaim(address user) external view returns (bool);
function nextClaimTime(address user) external view returns (uint256);
function claim() external;

Bridge docs: Robinhood Chain.

Reference

ABI quick reference

Key entry points for integrators. Full ABIs live in this repo under app/lib/abis.

Entry points
ContractFunctionPurpose
AMM Vaultbuy / sell / snipeBroker ↔ token trades
ActivationManageractivate / upgradeDistribution payroll tiers
ClockInEngineV3 (broker)elect / crank / deliver / deliverDependentBroker Clock In 3.0, elected token airdrops + intern split
ClockInEngineV3 (intern)elect / crank / deliverIntern Clock In 3.0, elected token airdrops to intern wallets
LoanVaultborrow / repay / liquidateETH fee loans
LiquidityLocker (V3)lockByTransfer / collectFees / decreaseLockedLiquidity / releasePositionEscrow + manage V3 LP locks
LiquidityLockerV4lock / collectFees / decreaseLockedLiquidity / releasePositionMint + custody V4 locks
UP CL / v2 lockercollectFees / withdraw / releaseLocked up. positions
Vesting lockerlock / withdraw / collectERC-20 vest in the box
SafeLaunchLensV2quoteBuy / quoteSellSmart Launch curve quotes
StonkSafeLaunchpadV2buy / sell / buyEthSmart Launch curve trades
StonkLaunchpadFactorypoolOf / Launch eventsFactory curve tokens
QuoterV2quoteExactInputSingleSwap quotes (SDB / router rail)
SwapRouterexactInputSingleExecute swap (SDB / router rail)
PositionManagermintLP positions (SDB / router rail)
CoveredCallVaultcreateOffer / buyOption / exerciseOptions (upcoming)

Legal

Protocol license (BUSL 1.1)

Effective 2026-08-25

SB (BVI) Ltd licenses the StonkBrokers Protocol Licensed Work (Clock In / Directed Clock In, Broker Box, Smart Launch / Stonk Launcher, collection / TBA / marketplace, bridge, and related protocol contracts in this repository) under the Business Source License 1.1 (BUSL 1.1). Anvil AMM is under the same license model in the SB (BVI) Ltd Anvil repository (Change Date 2029-08-12).

Warning to cloners and violators.

Production or commercial use of StonkBrokers Protocol or Anvil AMM source — including deploying a competing Clock In engine, Smart Launch pad, Broker Box stack, marketplace derivative, or Anvil factory / vault fork — without an Additional Use Grant or written commercial license from SB (BVI) Ltd violates BUSL 1.1, terminates license rights, and may be pursued as copyright infringement. On-chain bytecode, Blockscout verification, public ABIs, and integration PDFs are not a production-use grant.

  • Non-production study and testing of lawfully received source: allowed. End-user / frontend integration against live Clutch-operated deployments: allowed.
  • Change Date for StonkBrokers Protocol: 2029-08-25 → MIT. Anvil AMM Change Date: 2029-08-12 → MIT.
  • Trademarks (StonkBrokers, Clock In, Smart Launch, Stonklauncher, Clutch, Anvil) are not licensed by BUSL.