How StockRip works
How it works
An onchain protocol where deposited stock positions, each backed by depositor ETH, become positions others acquire at random.
StockRip is an onchain, randomized acquisition protocol for tokenized stocks. Depositors wrap shares, fractional amounts included, into a single basket and pair it with a committed ETH grade. That grade sets the position’s selection weight and funds an irrevocable standing bid from the depositor to reacquire the basket. Anyone can pay the pool-derived acquisition price to receive one randomly selected position.
- Acquire one randomly selected position from the pool. You’re far more likely to receive a lightly-backed one.
- After allocation, choose: take the underlying shares (or keep them wrapped as the NFT basket), or accept the depositor’s standing bid and sell back for most of its ETH grade: in ETH, or as $RIP. You can never keep both.
- Deposit shares plus an ETH grade to provide liquidity and earn a share of every acquisition fee, plus $RIP rewards.
The protocol has three roles: depositors provide liquidity by pairing shares with an ETH grade, purchasers pay the acquisition price to receive a randomly selected position that may be higher-backed than the price they paid, and the protocol earns bounded fees from the spread.
Deployments
StockRip runs on Robinhood Chain (chain id 4663), where the tokenized equities live.
The protocol is live on Robinhood Chain. Every number on this site is read from the contracts below, and every action signs a real transaction. Basket art is generated fully on chain by the renderer, each basket is an ERC-721 whose token-bound account holds the actual shares, and the collection is indexed on OpenSea.
- Acquisition pool (core)0x32E8D5…b714CB
- $RIP token0xe4b872…86C532
- Basket NFT0xF0261F…522a75
- Rewards & emissions0x91D032…a647eF
- $RIP pool hook0xf29512…CFa444
- Randomness coordinator0xaf9b58…0e2250
- Randomness service0x5812bC…287dE3
- Deposit router0xC72759…6F20F4
- On-chain art renderer0x3C9197…ae3477
- Stockrip NFT (vault card)0xbFBBd2…67d4De
- Card staking hub0x42Ab8F…cDd315
- Card zap router (buy legs with ETH)0xa1c28C…74Dd17
Positions & weighting
Selection weight is inversely proportional to grade.
A position’s selection weight is inversely proportional to its grade: lightly-graded positions are drawn often, whale positions are drawn rarely. Formally, weight = 1e36 / grade, and a position’s odds are its weight over the pool’s total weight.
Each position’s ETH is escrowed separately and only ever settles for that position, so every standing bid is fully funded by construction.
Rarity classes are presentation over those odds: they are draw-probability buckets, not a property of the underlying stock. A class label tells you how unlikely a position is to be drawn, nothing more.
Pricing & allocation
The price tracks the expected value of the draw.
An acquisition costs roughly the expected value of the draw — mathematically the harmonic mean of all grades, which tracks the cheap positions you usually receive — plus an owner-set surcharge (currently 5.5%; the quote you see always includes it) and a small randomness service fee.
Requests settle strictly in the order they were made, so callback timing cannot let a later request jump ahead or reshape an earlier request’s selection pool. Up to 25 draws batch into a single transaction.
Both ends of the price are bounded. The fee is capped at 10% above the quote you saw; and the settlement-drift control, the cog beside the quantity, sets the maximum the pool’s expected value may fall while your purchase settles, 40% by default, tightenable to 10%. Breach a bound at request time and the transaction reverts unspent; breach the drift bound while settling and the contract refunds the draw instead of settling it.
Settlement
Winning allocates the position without transferring anything yet.
Winning allocates the basket without transferring anything yet. The winner then has four exits: take the underlying shares (the default), tick a box to keep them wrapped as the NFT basket, sell back to the depositor’s standing bid — bounded 80–95% of grade on chain, currently 95%, in ETH or converted into $RIP — or relist the position under a grade you choose (the ETH you send becomes its fresh backing) and become its depositor.
Two clocks guarantee nothing locks up: the winner holds a 24-hour exclusive window to choose, and after 7 days an unsettled draw can be finalized by anyone.
Stockrip NFTs
Wrap an NFT you own into a card that lives in the same draw pool.
A Stockrip NFT locks an NFT from an allow-listed collection inside a new card, together with the ETH grade you give it and any equity legs you deposit into it. The card lists into the same pool as the baskets: the same weighting, the same pricing, the same draw.
The card’s face is your NFT’s artwork, frozen on chain at mint. The mint only accepts artwork carrying the protocol’s attestation signature over a canonical copy of the source image, and the contract verifies that signature before anything mints, so the card you preview on the Create page is byte-for-byte the card that exists forever after.
- Create: pick an NFT from your wallet, grade it with ETH, add legs if you like, and mint. The allow-listed collections are read live from the chain.
- Custody: the source NFT lives inside the card. Burning the card hands it back; until then, the card is the position.
- Stake $RIP on your card and it earns ETH for as long as it sits there. The stake belongs to the card, not your wallet. See Staking & card rewards next for what it pays and how to take it out.
- Winning one settles like any other position: keep the card, the NFT, the legs, and any staked $RIP it carries, or take the depositor’s standing bid.
Stockist guide to the galaxy
How to grade a shelf of positions so the pool stays worth playing, and why the spread matters more than the size.
Stocking the machine pays, by design. Every draw is priced above what it is expected to return, and that spread does not go to the house alone: after a bounded protocol cut and the crown tithe, each draw’s fee is split equally across every position in the pool, whatever its grade. A position graded at 0.02 ETH collects the same fee per draw as one graded at 7 ETH, which is why the everyday shelf is where a depositor’s capital works hardest. Depositors earn $RIP on top.
Being drawn is not a loss either. The winner takes your shares and your grade comes back to you in ETH, or they take your standing bid and you get the basket back for most of its grade and keep the rest. Grade a position at what it holds and a draw is a wash at worst; the fee share is what you keep. The more players rip, the more every depositor earns, and a well-shaped pool is what keeps them ripping.
None of it is guaranteed: the stocks inside a position move in price, and a position drawn early has earned less than one that sat. But the direction of the spread is fixed, and it points at the depositor. Anyone can stock the machine, baskets and Stockrip NFTs alike; they sit in the same pool and are drawn by the same rule. This page is the reasoning behind stocking it well.
Cannot be bothered reading? Paste this into your AI of choice and it will set you up.
The whole guide, the shelf and a task, as one block of text. Copy it, paste it into the assistant, and tell it your budget and the stocks you hold.
STOCKRIP DEPOSITOR BRIEF Paste this into an AI assistant and ask it to plan a deposit. WHAT STOCKRIP IS - An onchain protocol on Robinhood Chain (chain id 4663). Depositors list positions, either baskets of tokenized stocks or Stockrip NFTs, and grade each one in ETH. Anyone can pay the price of a draw to receive one position at random. - The grade is the ETH the depositor escrows with the position. It sets the odds, and it funds a standing bid the winner may take instead of the shares. - Core contract: 0x32E8D5b0b8643dC002864a2F5e4481E59eb714CB - Basket NFT: 0xF0261Fb8A53e5463944215CC5BA57B8A20522a75 - Deposit here: https://stockrip.com/create (reads the live minimum grade and the depositable stocks from chain) - Pool table with every position's grade and odds: https://stockrip.com/ - Full documentation: https://stockrip.com/docs THE RULES THAT DECIDE EVERYTHING 1. Odds are proportional to 1 / grade. A position graded at half of another is drawn twice as often. The lowest grades in the pool take the most draws. 2. The price of one draw is the pool's expected value (the harmonic mean of all grades) plus a surcharge, so the average return on a draw is 1 / (1 + surcharge) whatever anyone deposits. Depositing changes the shape of outcomes (how often a draw pays more than it cost, how much a losing draw loses), never the average. 3. A position is worth what it holds. The winner keeps the shares or takes the standing bid (a fixed share of the grade), whichever is worth more to them. Grade above the value of the shares and the winner takes the bid at the depositor's cost. Grade below it and the winner keeps shares worth more than the grade paid for the odds. Grade at the value of the contents. 4. A depositor's income is the fee share. Every draw is priced above its expected return, and after a bounded protocol cut and the crown tithe each draw's fee is split equally across every active position, whatever its grade, for as long as it sits in the pool. Being drawn is not the income and not a loss: if the winner takes the shares the grade comes back to the depositor in ETH; if the winner takes the standing bid the depositor gets the position back for most of its grade and keeps the rest. Depositors want many draws across the whole pool, which means a pool that stays worth playing. THE TARGET SHELF (the everyday run of grades) Thirteen levels. The share is the percentage of the ETH grade you commit to the run, and the shares sum to 100%. Positions at a level = capital at that level / grade. Level Grade (ETH) Share of grade capital 1 0.0128 4.48% 2 0.0136 4.78% 3 0.0145 5.30% 4 0.0155 5.66% 5 0.0165 6.26% 6 0.0176 6.68% 7 0.0188 7.39% 8 0.0200 7.88% 9 0.0214 8.71% 10 0.0228 9.28% 11 0.0243 10.24% 12 0.0259 11.29% 13 0.0276 12.04% RULES FOR STOCKING IT - Stock every level at once, in these proportions. Put more capital into each level as you go up, as the table does. - Restock a level as it is drawn. A missing level bends the odds onto its neighbours. - Re-check after stock prices move. The grade is set in ETH and the contents are stocks. Withdraw and relist a position whose grade has drifted from what it holds. - Do not grade at the minimum (0.01 ETH at the time of writing; read the live floor on the Create page). The floor soaks up draws while paying the least. - Do not grade above 0.0276 ETH unless you mean to stock prizes. Prizes are rarer, dearer and drawn seldom; the run is what players experience. - Do not concentrate into one level. Do not grade above the value of the contents. - Capital: a position costs its grade plus the shares inside it, worth about the same again. Committing X ETH of grade takes about 2X ETH of capital in total. Apply the shares above to the grade side only. HOW TO CHECK THE POOL IS SHAPED WELL (from the pool table of grades and odds) - Win rate: the sum of the odds of every position graded above the price of a draw. - Busiest level: the largest share of odds sitting on any one grade. A large share on one grade means the spread has collapsed. - Floor share: the odds sitting on the minimum grade. Any meaningful share is capital farming the pool rather than stocking it. TASK Given my ETH budget and the stocks I hold or intend to buy, produce a deposit plan: for each of the thirteen levels, the grade in ETH, the number of positions, the value of shares to place in each position, and the total capital needed including the shares. Keep the proportions above, round position counts down, and flag any level that would get fewer than one position at my budget.
Three facts that decide everything
Odds follow the inverse of the grade, not the count. A position graded at half of another is drawn twice as often. Stocking many cheap positions does not give a player many chances at a good draw; it gives them many chances at your cheapest one. Whatever sits lowest in the pool takes the most draws, and a position on the minimum grade takes the most of all.
The average return on a draw is fixed by the surcharge. The price of a draw is the pool’s expected value plus the surcharge, so across the whole pool, before the randomness fee,
- the odds of drawing position i
- that position’s grade, which is what a draw of it is worth
- the price of one draw
- the surcharge
Nothing a depositor grades moves that number. What depositing moves is the shape: how often a draw pays more than it cost, and how much a losing draw loses. That is the entire job.
A position is worth what it holds, so the grade and the contents should match. A winner keeps the shares or takes your standing bid, whichever is worth more to them. Grade above the value of the shares and the winner takes the bid: you pay most of the grade for shares worth less. Grade below it and the winner keeps the shares: you handed over more than the odds were paid for. Both mistakes are yours to pay, so grade at the value of what is inside.
Why one cheap level breaks the pool
Because odds follow the inverse of the grade, a pool where most capital sits on the floor spends most of its draws there. Every draw is then a near-total loss against the price, the average is unchanged, and the machine feels rigged even though the arithmetic says it is fair. Players stop, draws stop, and the fee share every depositor lives on stops with them. The floor is also where a small amount of capital absorbs a large share of every draw, which is exactly why a healthy shelf does not sit on it.
How to shape a shelf
Think in levels, not in positions. Choose a run of grades from a little above the floor to a little above the current price of a draw, and stock every level at once. The levels below the price are the near-misses; the levels above it are the wins. Both halves are needed: without the low end there is no margin for anyone, and without the high end there is no reason to play.
Put more capital into each level as you go up. Cheaper levels are drawn more often per position, so they fill their share of draws with less capital; the dearer levels need more capital to be drawn at all. A shelf whose weight rises toward the top of the run keeps every level in play. Concentrating into one level because it looks efficient is the failure mode, not a strategy.
The shelf, level by level
This is the spread that holds the pool at its target shape, as of September 2026: thirteen grades, each about 6% above the last, and the share of your committed capital that goes to each. The shares sum to 100%, so the table serves any size of deposit. A level’s position count follows on its own, as capital divided by grade.
| Level | Grade (ETH) | Share of capital |
|---|---|---|
| 1 | 0.0128 | 4.48% |
| 2 | 0.0136 | 4.78% |
| 3 | 0.0145 | 5.30% |
| 4 | 0.0155 | 5.66% |
| 5 | 0.0165 | 6.26% |
| 6 | 0.0176 | 6.68% |
| 7 | 0.0188 | 7.39% |
| 8 | 0.0200 | 7.88% |
| 9 | 0.0214 | 8.71% |
| 10 | 0.0228 | 9.28% |
| 11 | 0.0243 | 10.24% |
| 12 | 0.0259 | 11.29% |
| 13 | 0.0276 | 12.04% |
The run starts above the floor on purpose. The minimum grade is 0.01 ETH at the time of writing, and the floor is where draws pile up. It ends at 0.0276 ETH because everything above it is the prize end: rarer, dearer, and drawn seldom. Prizes are what players chase; the run is what they experience, and it is where a new depositor does the most good.
Any number of depositors can run the same shelf at any size. If each keeps the proportions, the pool keeps its shape whoever deposits and whoever leaves.
Keeping it stocked
- Restock a level as it is drawn. A missing level bends the odds onto its neighbours.
- Re-check after prices move. The grade is set in ETH and the contents are stocks, so a shelf that matched last week may not match today. Withdraw and relist a position whose grade has drifted from what it holds.
- Never grade at the floor. It soaks up draws while paying the least, and it is the single easiest way to spoil the pool for everyone, yourself included.
- Never overgrade. Grade above the contents and the standing bid is the winner’s better exit, at your cost.
How to tell it is working
The table on the pool page lists every position’s grade and odds, which is all you need. Three readings say whether the pool is shaped well:
- Win rate: add up the odds of every position graded above the price of a draw. That is how often a draw pays back more than it cost.
- The busiest level: the largest share of odds sitting on any one grade. If a single grade takes a large share of all draws, the spread has collapsed, whatever the average says.
- The floor’s share: the odds sitting on the minimum grade. Any meaningful share here is capital farming the pool rather than stocking it.
Staking & card rewards
$RIP locked inside a Stockrip NFT is staked, and earns ETH while it sits there.
This is what a Stockrip NFT earns while you hold it. Lock $RIP into the card alongside your NFT and that $RIP is staked automatically: there is no second transaction, no separate staking screen, and nothing to opt into. From the moment the card is minted it is earning.
Rewards are paid in ETH and come from protocol revenue. Rewards are paid into the staking hub and stream out second by second over the following day, so your balance climbs continuously rather than jumping once a day.
Your share is your share of the total staked. Two cards holding the same amount of $RIP earn the same, whether they were minted this morning or last month. Nothing is locked up: the $RIP comes back out whenever you decide to take it.
Getting your ETH out
Claim takes the ETH your card has earned and leaves everything else untouched: the card, its $RIP, its other assets. You can claim whenever you like; nothing expires and nothing is forfeited by waiting. Exit unstakes the $RIP and pays out the earnings together.
The maths
Each reward payment is spread evenly across the seconds of its payout window. Writing for the amount paid in and for the payout window in seconds, the stream releases
- the stream rate: wei released each second
- the reward amount paid in, in wei
- the payout window in seconds (86,400 for a day)
Each second is split between the cards staked at that moment. With your stake and everything staked, your slice of that second is , and both move as people stake and leave. Your earnings are that slice added up over every second you held:
- the ETH your card earns over the interval
- the stretch of time your card was staked across
- your card’s stake: the $RIP locked inside it
- everything staked at that instant, which moves as others stake and leave
- the stream rate, as above
That integral is the point. Rewards are time-weighted: you earn for the seconds you actually held, so a card staked at noon earns half what a card staked at midnight earns that day, and staking just before a top-up to leave just after earns almost nothing.
Worked through with round numbers: a reward payment of 0.64 ETH against 166,000,000 $RIP staked, holding 1,000,000 $RIP for the whole day:
Listed cards keep earning
Putting a card into the acquisition pool does not stop it. While the pool holds your card it carries on accruing, and when someone rips it the ETH it earned in the meantime comes out with everything else. A card is never idle just because it is on the market.
What to expect
The rate is not fixed and is not promised. It moves with two things: how much protocol revenue is paid into the staking hub, and how much $RIP is staked across every card. A well-funded day with few stakers pays well; a lightly funded day with many stakers pays little. Some days may pay nothing at all: rewards are funded from protocol revenue as it is directed to staking, and nothing is guaranteed.
- Vault card collection0xbFBBd2…67d4De
- Staking hub0x42Ab8F…cDd315
Fees & protocol revenue
Fees split across every active position.
After the cold-pool $RIP slice, a bounded protocol cut and a 1% crown tithe, each acquisition fee splits equally across all active positions. Fees accrue while a position rests in the pool, so the longer it sits, the more it earns.
Top deposit reward
One crowned deposit accrues the tithe pot.
The single top-backed deposit holds the crown and accrues the tithe pot. Challengers must beat the current grade by 10% to take it, which stops trivial flipping.
$RIP
$RIP bootstraps both sides of the market.
$RIP is the fixed-supply reward token that pays both sides for showing up early and ties protocol revenue to buy pressure. Supply is 1,000,000,000: half seeded one-sided into the Uniswap v4 pool (the ETH side fills only as buyers arrive), 30% funding the emission module, the rest held for operations.
Emissions on this deployment run for a fixed 15-day window: 10M $RIP per day streams to depositors pro-rata by the square root of backed value (claim any time), and 10M $RIP per day fills a daily pot split across that day’s draws, ten rips earning ten shares, claimable once the day closes and its draws settle.
The pool charges a 1% fee in both directions, and external buys are open: $RIP is earned through the protocol or bought on the open market. Beyond trading, $RIP has a working role: stake it on a Stockrip NFT and the card earns from the vault’s ETH reward stream, pro-rata by stake. In steady state a config switch routes a share of protocol fees into rate-limited buybacks split 40% to depositors, 40% to purchaser pots, 20% burned; the switch is currently off. When the pool goes cold, part of the surcharge slides toward a $RIP allowance for the next purchaser.
Safety
What the protocol guarantees, and what it does not.
The grade is escrowed per position, so a standing bid can always be paid. Draw order is fixed at request time. Settlement windows guarantee liveness.
Randomness comes from a keeper-revealed hash chain: no draw’s result can change once requested, reveals are served strictly in order, every outcome is recomputable from the chain by anyone, and a listing about to be drawn cannot be withdrawn out from under the request.
How the randomness works
A reverse hash chain, mixed with a block that does not exist yet.
- 1Before you playThe deck gets sealed
A long stack of secret numbers is sealed in order. Only the top seal is published on-chain. Every number inside stays hidden.
- 2You buyA future block is marked
Your draw is tied to a block five ahead: one nobody has produced yet, and a block that does not exist cannot be read. These are Ethereum blocks (~12s), not Robinhood's (~0.1s).
- 3~1 minute laterThe two halves meet
The block lands and the next seal is broken. Those two numbers, stirred together, decide which position you get.
- 4Forever afterAnyone can re-check it
Both halves are public once revealed, so the result can be recomputed by anyone, you included, straight from the chain.
The keeper generates a secret x₀ and hashes it forward a million times: xᵢ₊₁ = keccak256(xᵢ). Only the tip x_N is published on-chain. Each draw then consumes one preimage walking backward: a reveal is accepted only if it hashes to the stored head, and that preimage becomes the new head. The chain is a pre-committed sequence of one-time values served in strict FIFO: the keeper cannot skip a draw, reorder two, or substitute a value it likes better, because anything but the exact next preimage fails the hash check.
A committed sequence alone would still be known to the keeper, so each word also mixes in entropy that exists for nobody at purchase time: when a draw is requested, the coordinator pins seedBlock = block.number + 2, a block two ahead. Its hash cannot be known when the purchase is signed, and it is fixed at request, so the keeper cannot shop for a favorable one by timing its reveal. Revealing before that block exists simply reverts.
Which two blocks, though? Robinhood is an Arbitrum-style L2 and it has two different block numbers, which is the single easiest thing to misread here. The chain’s own blocks land about every 0.1 seconds. But inside a contract, Solidity’s block.number is not that number: it reports the parent Ethereum block, which advances roughly every 12 seconds. Measured live on this chain: about 125 Robinhood blocks per one block.number.
blockhash can only index that space, so +2 is two ~12-second ticks, not two 0.1-second ones. A draw therefore takes about half a minute (~24–36s) to reveal, not half a second. Everything else — the deadline your purchase must settle within, the deposit and listing windows — counts in real Robinhood blocks read from the chain itself, which is why the acquisition deadline is 3600 blocks yet only ~6 minutes long.That is also the honest reason a draw is not instant. Any scheme that answers immediately is one whose answer was knowable in advance; the wait is the guarantee, and it is priced in Ethereum blocks because that is the only clock blockhash can read.
word = keccak256(preimage, userSeed, requestId)
The pool consumes the word as word % totalWeight, then walks a weighted segment tree to the position it lands on, odds exactly proportional to each position’s inverse-grade weight. Every reveal emits requestId, the word, seedBlock and its hash, so anyone can recompute both keccaks from public data and audit every draw ever made from calldata alone. Nothing about fairness is taken on trust.
Liveness has two backstops. A draw whose seed ages out of the readable window (a keeper outage) can be skipped past by anyone, and the purchase refunds on the protocol’s own deadline: no stuck draw wedges the queue. And the coordinator carries an optional keeper bond field: ETH that, when posted, makes a deliberately withheld reveal slashable in favor of the affected purchaser. The coordinator itself speaks the Chainlink VRF v2.5 interface, so if a canonical VRF ever deploys on this chain, swapping to it is a single, publicly time-locked address change.
Parameters
The knobs, and their bounds.
Surcharge owner-set (currently 5.5%), standing-bid payout 80–95% of grade (currently 95%), crown tithe 1%, crown overtake threshold 110%, swap fee 1% (hardcoded), batch cap 25 draws per transaction, minimum grade currently 0.01 ETH (operator-set: the deposit page reads the live floor from chain), winner’s exclusive window 24 hours, finalization after 7 days. The purchaser-set accepted drop defaults to 40% and dials from 10% to 100%. The settlement knobs are bounded on chain (standing bid 80–95%, owner settlement fee ≤5%, every basis-point cut capped at 100%); the surcharge and the minimum grade are operator-set without a hard ceiling.
Randomness: seed pinned 2 Ethereum blocks after the request (~12s each, so about half a minute to reveal); optional keeper bond, slashable after 30 unrevealed Ethereum blocks (~6 min), 3-day exit notice.
Block counts on this page name their clock, because Robinhood has two. Windows measured in Robinhood blocks (~0.1s): acquisition deadline 3600 (~6 min). Windows measured in Ethereum blocks (~12s, what Solidity’s block.number reports here): the randomness seed delay and its slash grace.