How Larderhood works
Larderhood is one public contract on Robinhood Chain (chain id 4663). It holds ETH and Robinhood stock tokens. ETH inside it can leave only three ways: as the next stock on a fixed list, as a 0.1% tip to whoever calls sling(), or as a pro-rata share paid to someone who burns $LARDER.
What the larder is
The larder is the contract's balance: up to twelve Robinhood stock tokens, plus any USDG and ETH waiting to be used. Anyone can send ETH to it. The team intends to send the $LARDER creator fees to it by hand.
Two public functions move value out:
- sling() spends some of the ETH on the next stock in the rotation, at most once every 5 minutes. Anyone can call it.
- redeem() burns your $LARDER and pays you your share of everything in the larder, in the same call.
There is no withdraw function, no owner and no admin after setToken() binds the coin once at launch.
The 12 stops
The list is fixed at deploy and cannot be changed. The constructor checked every row on chain (pool exists, token order, tick spacing, the stock token's code hash). Prices below are spot, from the Uniswap V3 pool on Robinhood Chain.
| # | Stock | Spot | Token | Pool (vs USDG) | Fee |
|---|---|---|---|---|---|
| Loading the stops… | |||||
sling() rules
- Interval
- At most once every 300 seconds (5 minutes), counted from the last successful call. Anyone can call it. If nobody calls, the stop waits.
- Spend
- min(ETH in the larder, 0.25 ETH, max(0.002 ETH, ETH in the larder ÷ 12)): each sling takes 1/12 of the larder, never less than 0.002 ETH and never more than 0.25 ETH, so a deposit is spread over at least 12 slings. Below 0.002 ETH the call reverts with NothingToSling.
- Tip
- 0.1% of the ETH spent goes to the caller (paid from the larder). If the tip transfer fails, it stays in the larder.
- Path
- ETH → USDG on the WETH/USDG 0.01% pool, then USDG → the stock on its own V3 pool, both through SwapRouter02.
- Price guard
- Each leg must be within 1.5% of the pool's 30-minute TWAP; the minimum output is the TWAP quote minus the pool fee minus 1.5%. Callers may pass tighter floors.
- Skip rules
- If a stop's pool is out of range, its TWAP cannot be read, its token is paused by the issuer, or the swap fails, that stop is skipped (event Skipped) and the next one is tried. If all twelve fail, the whole call reverts (AllStopsFailed) and the ETH stays in the larder for the next try. One bad stop never stalls the rotation.
- Keeper
- The team runs a small keeper wallet that calls sling() when it can. It may stop at any time; the function stays open to everyone.
redeem() math
redeem(amount, skipMask) moves amount $LARDER from you to the dead address 0x…dEaD and pays you, for every asset in the larder:
share = balance × amount ÷ (totalSupply − balanceOf(dead))
The denominator is read before your burn. Coins still in the bonding curve or the pool count in it, so a burner can never take more than their fraction of all coins that exist; the share that belongs to coins nobody has burned stays in the larder. Stocks are paid in raw token units, then USDG, then ETH last. Dust rounds down to zero (the larder keeps it).
If a stock is paused by its issuer it cannot be transferred, so you may set its bit (0–11) in skipMask: your share of that stock stays in the larder. Bit 12 skips USDG the same way. quoteRedeemMasked(amount, mask) shows the result first. With mask 0 and a paused stock, the call reverts and the site tells you which one.
"Backing per coin right now" = larder value ÷ (supply − dead). It rises only when deposits and slings outpace burns, and falls with stock prices. It is a reading, not a promise.
What the contract guarantees, and what the team only intends
- No withdraw path: ETH inside can only become stock (sling), a tip to the caller, or a redemption.
- The 12-stop list is immutable.
- Interval, spend limits, tip and price guard are constants set at deploy.
- No admin after setToken(): no pause, no rescue, no parameter change, no owner.
- Every burner gets the same share per coin.
- The creator fees go to the team's wallet. The team intends to send them to the larder by hand. No schedule and no amount is promised.
- The team runs a small keeper that slings when the larder holds enough ETH. It may stop.
- A stop may stay empty if nobody slings. The deposits table on the home page lists every transfer in.
Risks
- Issuer powers. Every Robinhood stock token is an upgradeable proxy whose issuer can pause it, burn balances (adminBurn), change its display multiplier and use an access-control registry. Tokens held by the larder are exposed to all of that. Transfers to and from a contract work today; that is all we can say.
- Pool liquidity. Prices come from thin Uniswap V3 pools on Robinhood Chain. A sling is capped at 0.25 ETH and guarded by the TWAP, but pools can drain or drift.
- Quiet coin, thin larder. The larder is only what was sent to it. If little trading happens, little is sent.
- Manual fees. Sending the creator fees is a team action, not code. You can check every deposit, and nothing more.
- Unaudited. The contract is fork-tested and its source is verified on Sourcify (exact match), but it has not been audited.
- Valuation. USD figures are spot prices from on-chain pools, not a market quote you can necessarily sell at.
Addresses
| Loading… |
Contract source: verified on Sourcify (exact match).
API
Read-only JSON at https://larderhood.xyz/api/…, CORS open, times in unix seconds (UTC).
- GET /api/larder
- Mode, next stop and its timer, the 12 holdings with spot prices, USDG/ETH waiting, total, supply − dead, backing per coin, totals, the creator-fee estimate.
- GET /api/deposits
- Every deposit: tx, block, time, sender, ETH.
- GET /api/slings?limit=50
- Each sling: stock, caller, ETH spent, USDG, stock bought, price paid, tip, skipped stops.
- GET /api/redeems
- Each redemption: burner, amount burned, share, what was paid.
- GET /api/quote?burn=1000000
- What burning that many $LARDER returns right now (quoteRedeem).
- GET /api/stream
- Server-sent events: hello, sling, deposit, redeem, prices, ping.
- GET /api/health
- Indexer, RPC and keeper status.
Not financial advice. Unaudited contract. Robinhood stock tokens are held by the contract and can be paused or burned by their issuer. The larder's value is only what the chain shows at that moment.