Documentation
Reference for StonkBrokers. Smart Launch V2, Stonk Launcher, Anvil AMM, and Stonk Exchange are live on Robinhood Chain.
Contents
- 01 Overview
- 02 $STONKBROKER whitepaper
- 03 Network
- 04 Contract addresses
- 05 NFT collection
- 06 Stonk Interns
- 07 Anvil AMM desks
- 08 Anvil NFT AMM
- 09 Activation and Clock In
- 10 Loans
- 11 Safety Deposit Box
- 12 Smart Launch V2
- 13 Trading app integration
- 14 Smart LP integration
- 15 Uniswap v4 hooks
- 16 Stonk Launcher
- 17 Broker Box
- 18 Special Projects
- 19 Stonk Exchange
- 20 Pools and liquidity
- 21 Leverage Machine
- 22 Token Registry
- 23 Faucet archive
- 24 ABI quick reference
- 25 Protocol license
- 26 Legal disclaimer
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
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.
| Contract | Address | |
|---|---|---|
| NFT Collection | 0x539c…abf00x539cdd042c2f3d93ebc5be7dfff0c79f3b4fabf0 | |
| $STONKBROKER | 0xe934…bf500xe934e36a439c94017b64a3fece66af12099abf50 | |
| Activation Manager | 0xacd5…f6640xacd5ae3c060c1137fe2ee86b0ab2ef697456f664 | |
| Broker Clock In 3.0 | 0xf412…bc580xf4129019d8838f2555bdc8ecb3024a02145dbc58 | |
| Intern Clock In 3.0 | 0xf90a…c0590xf90a384936af8e6fd1c6c0f9ca804da5395bc059 | |
| Clock In 2.1 (Directed Booster, retired) | 0x1f12…81c90x1f12fe622c11947f93f53d63f68f7f46b6d081c9 | |
| Stock Booster (Clock In v1, retired) | 0x038a…726b0x038a7f4e4e89448ad74e044337c9ac25c11e726b | |
| Overtime Booster (retired) | 0xf9ca…259a0xf9ca5f6d8622c82758914681a12674e2d489259a | |
| AMM Vault | 0xe302…32d20xe302733accf4800146e55fc45b46b4e4ffc032d2 | |
| Loan Vault | 0xa7b9…36640xa7b9ac696b252b79568a5a01b2fd02177ef23664 | |
| Escrow | 0x799a…cf620x799ae26fa515cef145e8bc8636f7fff87b05cf62 |
| Contract | Address | |
|---|---|---|
| Interns Collection (ERC-721C) | 0xfc4b…65a50xfc4b0c4f464dc3037cf013934648a8a726d565a5 | |
| Intern Activation Manager | 0x668e…4b370x668ea9e44e0ceb5b203067873e0b9bcdf2214b37 | |
| Intern Clock In 3.0 (generation 2, ladder weighted) | 0xf90a…c0590xf90a384936af8e6fd1c6c0f9ca804da5395bc059 | |
| Intern Clock In 3.0 generation 1 (retired, swept) | 0xb657…F55d0xb6573Dd536F6268A9d028adeC00F08918830F55d | |
| Payroll escrow | 0x97Ad…a4910x97Ad779D5e9Be49541F6aBEb5391F17cca21a491 | |
| Intern Art (onchain SVG, frozen) | 0x1ebA…16250x1ebAbD799c522454A5A5De8AE331Cc5287091625 | |
| Intern Metadata | 0x5361…ad500x53617cadB950074313d01BdB1f925264a12Fad50 | |
| Intern Transfer Validator | 0x36cd…99510x36cdfAAC12e849bf27dCba6cBdFe35d35fEE9951 |
| Contract | Address | |
|---|---|---|
| V3 Liquidity Locker | 0xfc96…12230xfc96cf67ecc55be4adabc3aecbe6ad6349f11223 | |
| V3 Lock Ownership NFT | 0xe460…a3600xe460da1a77cae75eed8b355d05b6fcbfa4b2a360 | |
| V4 Liquidity Locker | 0x5a28…bda60x5a28ce098750f73bc9ec142d4bce464e1a0bbda6 | |
| V4 Lock Ownership NFT | 0xad95…aa980xad9535790b0f00ff3f932d482c0112273ec9aa98 | |
| UP CL locker | 0xc1af…a0760xc1afa59e2abc1c868c51a1f799a7578eacfea076 | |
| UP CL locker NFT | 0x3e45…422f0x3e45e90d83d87f961561968709d5ab844eb7422f | |
| UP v2 locker | 0x2179…90170x21797736c25851a6102d196afba78f978f589017 | |
| UP v2 locker NFT | 0x0256…2ec20x025650befc1ba9c6bc024425aaf0fec72edf2ec2 | |
| Vesting locker | 0x2b4a…9aa90x2b4ad79da7bd3bf340bbd2ad2039b149214e9aa9 | |
| Vesting locker NFT | 0x12d5…420e0x12d554ef1d5b1dcbc6bc4154ec7ce493933f420e | |
| Safety Deposit Clock In (fee router) | 0x5564…692c0x55642a3f10f1af5145d3d59021b1d6b03bb8692c | |
| Uniswap V4 PoolManager | 0x8366…09510x8366a39cc670b4001a1121b8f6a443a643e40951 | |
| Uniswap V4 PositionManager | 0x58da…4fa70x58daec3116aae6d93017baaea7749052e8a04fa7 |
| Contract | Address | |
|---|---|---|
| WETH9 | 0x0bd7…ad730x0bd7d308f8e1639fab988df18a8011f41eacad73 | |
| PositionManager | 0x7399…e0d30x73991a25c818bf1f1128deaab1492d45638de0d3 |
| Contract | Address | |
|---|---|---|
| SafeLaunchLensV2 | 0x25b5…15B30x25b5Df581f4b2Ed450203f375ad8A28b17F115B3 | |
| SafeLaunchPunchRouter | 0x2e2a…5C9D0x2e2ae202BD8C7944189A724D572098c16B375C9D | |
| ClockInCard | 0xcC92…15420xcC9232eFD27B392fF9F96a6DCD45F12C9b6A1542 | |
| StonkIcoBonusKickstarter | 0x2B93…f2700x2B937fF27D117bDDB409B6da4Ee222F65102f270 | |
| Smart Launch pad WETH | 0xFCd6…EC9f0xFCd61B25BbF3AbD6cf0070D6328E351cc30EEC9f | |
| Smart Launch pad STONK | 0x8f67…6cD40x8f6782c5Aa37804d08a9b7bf3984Ff3245Fd6cD4 | |
| Smart Launch pad USDG | 0xd4F2…D70a0xd4F20033586977A2511f4A2DB4aF7C79a340D70a | |
| Smart Launch pad GME | 0x4B9D…8cFD0x4B9Dcd6CCFAeF0f6D23065Dd78E79d5E20ec8cFD | |
| Smart Launch pad NVDA | 0xEe96…F9fB0xEe96d955d5634813374ecE4C74F2C0ff71B1F9fB | |
| Smart Launch pad AAPL | 0xB045…a8640xB0453A81Cbf963903409FFF18AD92941e1c7a864 | |
| Smart Launch pad SPCX | 0x0c3b…c9470x0c3b4EDED41696eFF0ed70841f132B519d81c947 | |
| Smart Launch pad USO | 0xDb3C…053B0xDb3C81C841ff88db6cDFbDDB0eE049D162A6053B | |
| Smart Launch pad YBTC | 0x472a…86040x472a1AB6aEB77E3479193FBe83b718f9Bf5F8604 |
| Contract | Address | |
|---|---|---|
| Launcher Factory | 0x80a7…72810x80a77001456bc986083678F9a112B1EC2Aa07281 | |
| Launch Fee Router | 0x74F1…47a50x74F161cfd4035Be8F1606e6604a34548c89447a5 | |
| LP Locker | 0xa6bF…47C80xa6bFF814FC8EE3E1F134C767D384D0d9D94147C8 | |
| Clock In Pot | 0x2098…Ebbe0x2098270d97c0cD0cdEC27296343ce76d7285Ebbe | |
| Launch Deployer | 0x00f8…Dd970x00f8C29B28CB00a20F0CA071eFAED0D3fE15Dd97 |
| Contract | Address | |
|---|---|---|
| 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.
How to get a broker
Buy $STONKBROKER on OpenSea via the Get tab.
On Trade, swap 666,666 $STONKBROKER + ETH fee for the next vault broker, or snipe an exact # from inventory (ETH trade fee applies).
Each broker has a token bound wallet that holds token drops and travels with the NFT.
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.








How the mint works
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).
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.
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.
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.
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.
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
| Tier | Activation fee | Multiplier | Pot weight vs a Freshman |
|---|---|---|---|
| Freshman | 3,333 $STONKBROKER | 1.00x | 1.00x |
| Sophomore | 8,333 $STONKBROKER | 1.25x | 1.25x |
| Junior | 18,333 $STONKBROKER | 1.60x | 1.60x |
| Senior | 33,333 $STONKBROKER | 2.00x | 2.00x |
| Alumnus | 83,333 $STONKBROKER | 3.33x | 3.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.
| Share | Rank word in the title | Slice of the parent broker's credits | Intern pot weight | How it is set |
|---|---|---|---|---|
| 0.25% | Trainee | 0.25% of every credit the parent broker earns | none | automatic floor once live under an active broker |
| 0.5% | Junior | 0.5% of every credit the parent broker earns | none | broker owner sets it ($1 promotion, up only, 5% cap per broker) |
| 1% | none (plain desk name) | 1% of every credit the parent broker earns | none | broker owner sets it ($1 promotion, up only, 5% cap per broker) |
| 2% | Senior | 2% of every credit the parent broker earns | none | broker owner sets it ($1 promotion, up only, 5% cap per broker) |
| 2.5% | Head | 2.5% of every credit the parent broker earns | none | broker 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.
| Broker tier | Activation fee | Broker pool weight | Its interns are called |
|---|---|---|---|
| Floor Trader | 66,666 $STONKBROKER | 1.00x | Floor Runner |
| Analyst | 166,666 $STONKBROKER | 1.25x | Research Intern |
| Portfolio Manager | 366,666 $STONKBROKER | 1.60x | Portfolio Intern |
| Managing Director | 666,666 $STONKBROKER | 2.00x | Executive Intern |
| Partner | 1,666,666 $STONKBROKER | 3.33x | Partner Track Intern |
| Stream | Intern tier | Pay share | Parent tier | Parent inactive |
|---|---|---|---|---|
| Intern Clock In pot (royalties, 25% of mints, intern desk fees) | sets the weight (1.00x to 3.33x) | no effect | no effect | no effect |
| Parent broker slice (the broker's own Clock In credits) | no effect | sets the slice (0.25% to 2.5%) | bigger parent weight = bigger credits to slice | pauses while inactive, resumes on re-activation |
| Job Title trait | no effect | sets the rank word | sets the desk word | reads Applicant while inactive |
| Broker Clock In pool (the parent's own pay) | no effect | up to 5% of the broker's credits leave to its interns | sets 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).
Read desks and quotes off the exchange (view calls, no indexer needed), or use the floor API below.
Buyers approve the quote token to the exchange (ETH desks take msg.value); sellers `setApprovalForAll(exchange)` once.
Desk owners approve the desk clone for their NFTs and call `depositNFTs`; bids are funded with `depositQuote`.
Watch `PoolCreated`, `Buy`, `Sell` on the exchange and `Bought` / `Sold` on each desk for your indexer.
// 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);| Contract | Address | |
|---|---|---|
| InternExchange (factory, registry, router) | 0xDea3…f5180xDea32D8AEE85B41A0f320Ff823e4625AAB01f518 | |
| InternPool implementation (desk clone target) | 0x01CF…E3030x01CF86731Fbf668bA5A14bD2eF4DfE06fD77E303 | |
| InternTransferValidator (Stonk Interns) | 0x36cd…99510x36cdfAAC12e849bf27dCba6cBdFe35d35fEE9951 | |
| StonkBrokers collection | 0x539c…abf00x539cdd042c2f3d93ebc5be7dfff0c79f3b4fabf0 | |
| Stonk Interns collection | 0xfc4b…65a50xfc4b0c4f464dc3037cf013934648a8a726d565a5 |
| Contract | Address | |
|---|---|---|
| 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/batchSellNFTon the market'sNFTAMMVaultV3. Price istokensPerNFTforever; 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 outtokensPerNFTminus prepaid interest;repayis principal only; anyone mayliquidateafter 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. ReadactivationOfandpendingRewards; never render a failed read as "not activated". - Indexing.
MarketCreated+MarketCollectionLinkedon each factory,NFTSold/NFTBoughton each vault. Tag every vault and escrow as protocol infrastructure in holder analytics.
// 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);| Contract | Address | |
|---|---|---|
| Robinhood Chain (4663), from block 38338471 | 0x8b18…90690x8b186717a20845b514344b17fd5e198aDCab9069 | |
| Ethereum (1), from block 25771278 | 0xB46C…2B950xB46CE1551C9f0a460d9d3A237135C10FccD12B95 | |
| Base (8453), from block 50068884 | 0xdE48…A0320xdE481E29F0a7164d2229F23A92283324Df10A032 | |
| ApeChain (33139), from block 46549944 | 0xC06C…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
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
| Contract | Address | |
|---|---|---|
| SafeLaunchLensV2 (quotes + views) | 0x25b5…15B30x25b5Df581f4b2Ed450203f375ad8A28b17F115B3 | |
| V2 pad WETH | 0xFCd6…EC9f0xFCd61B25BbF3AbD6cf0070D6328E351cc30EEC9f | |
| V2 pad STONK | 0x8f67…6cD40x8f6782c5Aa37804d08a9b7bf3984Ff3245Fd6cD4 | |
| V2 pad USDG | 0xd4F2…D70a0xd4F20033586977A2511f4A2DB4aF7C79a340D70a | |
| V2 pad GME | 0x4B9D…8cFD0x4B9Dcd6CCFAeF0f6D23065Dd78E79d5E20ec8cFD | |
| V2 pad NVDA | 0xEe96…F9fB0xEe96d955d5634813374ecE4C74F2C0ff71B1F9fB | |
| V2 pad AAPL | 0xB045…a8640xB0453A81Cbf963903409FFF18AD92941e1c7a864 | |
| V2 pad SPCX | 0x0c3b…c9470x0c3b4EDED41696eFF0ed70841f132B519d81c947 | |
| V2 pad USO | 0xDb3C…053B0xDb3C81C841ff88db6cDFbDDB0eE049D162A6053B | |
| V2 pad YBTC | 0x472a…86040x472a1AB6aEB77E3479193FBe83b718f9Bf5F8604 |
Smart Launch. V3 pads (external token)
| Contract | Address | |
|---|---|---|
| V3 pad WETH | 0x5BCE…a3B30x5BCEefBa6fDf437A7388aDC5c9056c827baca3B3 | |
| V3 pad STONK | 0x406f…11310x406fd0B957bb8cF1dd57C78540D009578e971131 | |
| V3 pad USDG | 0xF0A0…0eeA0xF0A06Ac7BBb0cc3049B68c257c3ee27CcEA40eeA | |
| V3 pad GME | 0x5b21…992B0x5b21F8a5Ef81586627B4725844aD447325d0992B | |
| V3 pad NVDA | 0xDf03…9B540xDf03953DCA8dB733345278A0c5fd2E81fa2A9B54 | |
| V3 pad AAPL | 0xc522…657f0xc522DfaE0D1a140257702392B665183a6De7657f | |
| V3 pad SPCX | 0xd82d…a86A0xd82da1D8ef59959b170b59147283Ab1F2F1Ca86A | |
| V3 pad USO | 0x644b…70D20x644b19512052A1b6d38d7B16C6c3Fb1d3F7270D2 | |
| V3 pad YBTC | 0x2bd7…76dA0x2bd7F90cca4660da82aa693cF352dDB6275C76dA |
Curve-phase trade (Smart Launch)
// 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
| Route | Purpose |
|---|---|
| GET /api/safe-launch/floor | Launch grid: token CA, pad, id, phase, mcap, quote lane. |
| GET /api/safe-launch/buys | Live 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
| Contract | Address | |
|---|---|---|
| StonkLaunchpadFactory | 0x80a7…72810x80a77001456bc986083678F9a112B1EC2Aa07281 |
Curve-phase trade (factory tokens)
// 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
| Route | Purpose |
|---|---|
| GET /api/launcher/tokens | Factory 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. |
Other integration guides
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
| Contract | Address | |
|---|---|---|
| SmartLpRegistry (source of truth) | 0xE874…01460xE8749183Fbf6A657EB58B3a4D3E4B9Cc09560146 | |
| SmartLpLens (all reads) | 0x754B…3D4d0x754Bf8479630bbC22aA7b5E9742156ce89dD3D4d | |
| SmartLpLib (linked library) | 0x4A2d…E32F0x4A2dA8e70b51595Bf564082A86336AbDDc62E32F | |
| Chainlink ETH/USD | 0x6091…27210x6091E64eb7138EEF066a80FD3A0d7427B91f2721 |
| Contract | Address | |
|---|---|---|
| SmartLpRegistry (source of truth) | 0xFB2e…eD5e0xFB2eA53b16C07011d4390A2e449385180A54eD5e | |
| SmartLpLens (all reads) | 0x1243…887F0x1243c8FB4099568460ba0619aaB24DC15758887F | |
| SmartLpLib (linked library) | 0x4A2d…E32F0x4A2dA8e70b51595Bf564082A86336AbDDc62E32F | |
| Chainlink ETH/USD | 0x639F…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
// 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
// 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
| Selector | Error | Action |
|---|---|---|
0xa4875a49 | CapExceeded | Deposit would push TVL over capQuote. Show vault full. |
0x64a78d82 | TwapDeviation | Spot too far from TWAP. Retry later. |
0xc7f602ab | FeedDeviation | Pool vs fresh Chainlink diverged over 3% (Monday opens). Self heals. |
0x007426cd | FirstDepositTooSmall | Genesis deposit under minFirstDepositQuote(). |
0xdeeb6943 | DepositsPaused | Guardian pause. Withdrawals unaffected. |
0x1a8ade30 | DepositsClosed | ASK vault entered its band or reads settled. |
0x2a580d6d | WrongMode | Wrong entrypoint for the vault mode. |
0x54b8210d | MinShares | Share slippage floor hit. Re quote. |
0x168f8aad | MinOut | Withdraw or zap output floor hit. Re quote. |
0x0a7287b5 | NativeNotSupported | msg.value sent to a vault without a wired WETH side. |
0x15fa6e71 | NotPoolToken | tokenIn or tokenOut is not one of the pool tokens. |
0x1f2a2005 | ZeroAmount | Nothing pulled. |
0x0cb4955b | SwapFloor | Internal swap fill under the TWAP floor. Retry later. |
0xabf0f034 | NoPosition | Keeper action on a vault with no minted position. |
0xb0782df7 | Cooldown | Keeper action inside recenterCooldown. |
0x98248e64 | EthSendFailed | Native payout rejected. Withdraw with unwrapNative false. |
0xb2f71223 | NotSettleable (V2) | settle() before spot and TWAP are both past the band. |
0x560ff900 | AlreadySettled (V2) | settle() on a settled vault. |
0xceee81e7 | DepthGate (V2) | Band vault at capacity for its pool depth. Withdrawals unaffected. |
0x13be252b | USDG InsufficientAllowance | USDG custom allowance error. Raise the approval. |
Events
| Event | Topic0 |
|---|---|
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
| Route | Purpose |
|---|---|
| GET /api/locker/smartlp-activity?chain=robinhood | Per vault automation ledger on Robinhood Chain: compounds, collects, rebalances, lifetime fees, holders. |
| GET /api/locker/smartlp-activity?chain=arbitrum | Same 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
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.
| Contract | Address | |
|---|---|---|
| PoolManager | 0x8366…09510x8366a39CC670B4001A1121B8F6A443A643e40951 | |
| V4 Quoter | 0x8dc1…8f940x8dc178efb8111bb0973dd9d722ebeff267c98f94 | |
| Universal Router | 0x8876…09040x8876789976dEcBfCbBbe364623C63652db8C0904 | |
| Permit2 | 0x0000…8BA30x000000000022D473030F116dDEE9F6B43aC78BA3 | |
| WETH | 0x0Bd7…AD730x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 |
Fee terms shared by every controller
| Term | Value | Note |
|---|---|---|
| Protocol share | 10% of the fee (1000 bps) | Carved before the controller remainder on every taxed swap. |
| Partner share | 50% of the protocol share | 0.05% of the fee to the Hookr Safe, 9.95% to StonkBrokers. |
| Minimum seed | 0.05 ETH | Quote a Battle, Strategy or Fractional launch must lock into its pool. |
| Pool key | fee 10000 / tick spacing 200 | Launch controllers. The Smart LP hook uses a dynamic fee pool with tick spacing 60. |
| Hook flags | 10956 | CREATE2 mined permission bits on every StonkFeeHook address. |
| flushPartner(quote) | permissionless | Releases accrued partner fees once the partner address is set; reverts PartnerUnset before. |
| Contract | Address | |
|---|---|---|
| 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.
| Contract | Address | |
|---|---|---|
| PairTokenFactory | 0x282c…5B380x282c4815F30abc1D0A8eB810c7309140d35a5B38 | |
| PairTokenFeeManager | 0x18Ad…91950x18AdF7be1d23022FcCf286D3d342d92Ecb3F9195 | |
| PairToken implementation | 0x56C8…17530x56C8c249d4c021e93635b120aC68A9a36eb01753 | |
| PairTokenLauncher | 0x1cEE…13E70x1cEE10c87D261912A833E000f7e7295DC9E813E7 | |
| Launcher StonkFeeHook | 0x261a…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.
| Call | Who |
|---|---|
create(tokenA, tokenB, amountA, amountB, sqrtPriceX96IfNew, minShares) payable | Anyone |
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 |
| Asset | Address | Minimum seed |
|---|---|---|
| ETH (native) | native ETH | 0.004 |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 | 0.004 |
| USDG | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | 10 |
| STONKBROKER | 0xe934e36A439C94017B64a3FecE66AF12099aBF50 | 2,000 |
| AAPL | 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 | 0.03 |
| AMZN | 0x12f190a9F9d7D37a250758b26824B97CE941bF54 | 0.04 |
| NVDA | 0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC | 0.04 |
| GOOGL | 0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3 | 0.03 |
| SPCX | 0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa | 0.06 |
| USAR | 0xd917B029C761D264c6A312BBbcDA868658eF86a6 | 0.75 |
| GME | 0x1b0E319c6A659F002271B69dB8A7df2F911c153E | 0.4 |
| TSLA | 0x322F0929c4625eD5bAd873c95208D54E1c003b2d | 0.025 |
| PLTR | 0x894E1EC2D74FFE5AEF8Dc8A9e84686acCB964F2A | 0.05 |
| AMD | 0x86923f96303D656E4aa86D9d42D1e57ad2023fdC | 0.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.
| Contract | Address | |
|---|---|---|
| BattleVault | 0x1BaD…D3040x1BaDdAB75dd5223C2A619AA9c88BD211aaC5D304 | |
| StonkFeeHook | 0x6ced…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.
| Call | Who |
|---|---|
createBattle(params) | Anyone |
settle(battleId) | Anyone (permissionless crank) |
flushPartner(quote) on the hook | Anyone (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.
| Contract | Address | |
|---|---|---|
| StrategyLauncher | 0x9f68…d0230x9f6821af226D85234DED5F0f024A8A2B4Fa6d023 | |
| StonkFeeHook | 0x242F…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.
| Call | Who |
|---|---|
createStrategy(params) | Anyone |
execute(strategyId, minOut) | Anyone (permissionless crank) |
withdrawLiquidity(strategyId) by the creator once the lock has run out | Creator |
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.
| Contract | Address | |
|---|---|---|
| FractionalLauncher | 0xCD44…183D0xCD44629152c9a7CAc2cD68bb25A2293022F3183D | |
| StonkFeeHook | 0x8A6c…aaCc0x8A6c104d8bc04E058Ca08282E605D42a84D6aaCc | |
| FractionalDeployer (code) | 0x3361…6dfF0x3361426DEea55e88cb04cCA5cFeB46D99eB36dfF | |
| ERC6551Registry | 0x3Df3…B9E40x3Df336317B73e0ce417E03488abb2B79cEe2B9E4 | |
| Fractional6551Account impl | 0xb9D0…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.
| Call | Who |
|---|---|
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.
| Contract | Address | |
|---|---|---|
| SmartLpHook | 0x4713…a0c40x47137a7733E2B4DBD0e25416d5D5B29C8A1Da0c4 | |
| SmartLpHookLens | 0x29Ea…3F000x29Eaf335fed9270ba98BD5dd99519bb3af4C3F00 | |
| slNVDA ladder vault | 0x3Ddf…fd2B0x3Ddf0412398D806AF1069B0EA29242b6BD22fd2B | |
| NVDA/USD Chainlink feed | 0xC9d1…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.
| Call | Who |
|---|---|
registerPool(key, feed, stockIs0) owner | Owner |
flush(key) | Anyone (permissionless crank) |
SmartLpHookLens reads for the live fee at a given trade | Read 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.
| Call | Who |
|---|---|
Hookr RulesLaunch Launcher.launch with the StonkBroker preset | Any 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
| Error | Where | What 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() | StonkFeeHook | Exact output swaps are refused while a buy or sell fee is active. Quote exact input instead. |
TradingPaused() | StonkFeeHook | The controller paused trading on this pool (launch buffer or owner action). |
LiquidityLocked() | StonkFeeHook / controllers | Only the controller may add or remove liquidity while the lock runs. |
PartnerUnset() | StonkFeeHook.flushPartner | Partner fees accrue on the hook until a partner address is set; all four live controllers already carry the Hookr Safe. |
SeedTooSmall() / PriceRequired() | PairTokenFactory.create | The anchor seed is under its minimum, or the pool is new and needs sqrtPriceX96IfNew. |
BadGenesis() | PairToken | The pool price sits at a sqrt bound (an initialized but dead pool); seed a healthy price first. |
MinShares() / MinOut() | PairToken | Slippage bound on deposit or redeem. Re quote through the lens preview and retry. |
ZapTooLarge() / ZapMovesPrice() | PairToken.zapDeposit | The zap exceeds maxZapBps 500 or would move price past maxZapTickMove 200 ticks. Split the deposit or supply both legs. |
EpochRunning() / NotSettleable() | BattleVault.settle | The epoch has not ended yet, or the battle is already knocked out. |
NothingPending() | StrategyLauncher.execute | Accrued quote is under minExecuteQuote; wait for more fee flow. |
NotVaulted() / BadTokenId() | FractionalLauncher | The NFT is not in the vault, or the id is outside the collection. |
PoolNotRegistered() / BadFeedAnswer() | SmartLpHook | The pool key is not registered on the hook, or the Chainlink feed returned a non positive or stale answer. |
All ABIs
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).
| Contract | Address | |
|---|---|---|
| GME GameStop | 0x8f18…95b00x8f1836209c42d4f6b6caa782c055ee13f8ac95b0 | |
| AAPL Apple | 0xf9bc…0d440xf9bc0777c087af0fe7214de8a5360be6a71d0d44 | |
| AMZN Amazon | 0x2829…b7150x2829b754784352dd2beffa5eb26d5b499315b715 | |
| NVDA NVIDIA | 0xc5e3…58a00xc5e3e9c2a835ec9319fd8c1d516fd4323c5758a0 | |
| GOOGL Alphabet | 0xff20…072f0xff20b4b8e08beaa4064e3ca4cc5a2e40acac072f | |
| MSFT Microsoft | 0xfc25…54020xfc253e0062eef614e20e0726e5f6ff7559c35402 | |
| SLV iShares Silver | 0x9d2c…25040x9d2c3355502be065975ad47ef5a902f02c772504 | |
| SPCX SPAC and New Issue ETF | 0xf589…46090xf58979d35c3f0ff6a6f7edd909fe8a95a2894609 | |
| USO United States Oil | 0x5b12…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 viasetRoyalty.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)equalspreviewWord(id)once fulfilled. Anyone can recompute the multiplier; our keeper (or any third party) can callfulfillto 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%.
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.
| Contract | Address | |
|---|---|---|
| Factory | 0x278d…d2260x278d4989232c0c213ed4a8a0652f46a21b0fd226 | |
| Stonk Certificate | 0xafbc…e6be0xafbc48317dd946e3b9ce570b75e48a285862e6be | |
| Certificate Counter | 0x2599…29d70x2599882aaf5c14834562ee59ca7a3d1ffcc229d7 | |
| VRNG Conductor | 0x003e…bcde0x003e29260ef2f762e7f2d95c3d2b7a7f6234bcde | |
| USDG ↔ ETH Exchange | 0xaf4c…065f0xaf4c809518a9117c4f8e42e82b7221b17fe7065f | |
| StonkStockRouterV2 | 0xa88F…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)
// 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)
// 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
// WETH9 at 0x0bd7d308f8e1639fab988df18a8011f41eacad73 function deposit() external payable; function withdraw(uint256 wad) external;
Fee tiers
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.
// 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.
// 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.
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.
| Contract | Function | Purpose |
|---|---|---|
| AMM Vault | buy / sell / snipe | Broker ↔ token trades |
| ActivationManager | activate / upgrade | Distribution payroll tiers |
| ClockInEngineV3 (broker) | elect / crank / deliver / deliverDependent | Broker Clock In 3.0, elected token airdrops + intern split |
| ClockInEngineV3 (intern) | elect / crank / deliver | Intern Clock In 3.0, elected token airdrops to intern wallets |
| LoanVault | borrow / repay / liquidate | ETH fee loans |
| LiquidityLocker (V3) | lockByTransfer / collectFees / decreaseLockedLiquidity / releasePosition | Escrow + manage V3 LP locks |
| LiquidityLockerV4 | lock / collectFees / decreaseLockedLiquidity / releasePosition | Mint + custody V4 locks |
| UP CL / v2 locker | collectFees / withdraw / release | Locked up. positions |
| Vesting locker | lock / withdraw / collect | ERC-20 vest in the box |
| SafeLaunchLensV2 | quoteBuy / quoteSell | Smart Launch curve quotes |
| StonkSafeLaunchpadV2 | buy / sell / buyEth | Smart Launch curve trades |
| StonkLaunchpadFactory | poolOf / Launch events | Factory curve tokens |
| QuoterV2 | quoteExactInputSingle | Swap quotes (SDB / router rail) |
| SwapRouter | exactInputSingle | Execute swap (SDB / router rail) |
| PositionManager | mint | LP positions (SDB / router rail) |
| CoveredCallVault | createOffer / buyOption / exercise | Options (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.
Legal
Disclaimer: rewards are not dividends
- The airdrops and distributions on this site are promotional rewards paid under the StonkBrokers Marketing Program to broker NFTs activated within the protocol. They are rewards for taking part in the program.
- These rewards are not dividends and they are not investment income. Holding a broker or a token gives you no equity, no ownership stake, no shareholder rights, and no share of any revenue or profits.
- Stock tokens are new software. SB (BVI) Ltd will always follow all laws and regulations of any requesting jurisdiction.
- Stock tokens and stock token based features (including Clock In, Overtime, Broker Box, the stock swap desk and stock quoted launches) are restricted in the Canada, Switzerland and United Kingdom regions and for persons subject to international sanctions. Those features are locked for visitors from these jurisdictions; the rest of the site is available. Do not use stock token features if you are located in, or a resident of, any of these jurisdictions.
- This site is a user interface only. It lets you interact with permissionless smart contracts that live fully on chain. Swaps and reward airdrops are permissionless and can be started on chain, for free, by anyone.
- SB (BVI) Ltd reserves all rights.
- By using this protocol you agree that the use of these types of financial products is legal in your jurisdiction and that you meet the eligibility requirements set out in the Use of Website terms.
Nothing on this site is financial, investment, legal, or tax advice, and nothing here is an offer or solicitation to buy or sell any security. You are solely responsible for complying with the laws and regulations of your jurisdiction.
Operator. Registered office
