DocumentationYour guide to PonziHooks.
PonziHooks is the first ponzi protocol built on Uniswap v4 hooks, on Robinhood Chain. Every coin it launches trades in its own ETH pool, every swap in that pool pays a tax in ETH, and every buy pays everyone who bought before. $PONZI stakers take the house cut.
Explore the guides
How it works
1. Launch a ponzi. Anyone calls launch(name, symbol, taxBps) on the factory. In one transaction it creates a coin with a fixed supply of 1,000,000,000 (no owner, no mint), opens a Uniswap v4 pool of ETH against the coin that runs through the hook, and puts the whole supply in one position. The factory has no function to remove that position, so the liquidity is locked for good and nobody holds coins outside the pool. Rounding dust is burned.
2. Take your place in line. Your first buy in a pool gives you a place: #1, #2, and so on. It never changes, even if you sell everything.
3. Earn from every buy after you. Every swap pays a tax in ETH. 80% of it is shared by everyone in line, pro rata to their share.
4. Claim. What you earned waits in the hook as ETH. Claim it any time, from several pools in one transaction.
Risk, as a fact: later buyers pay earlier buyers, and when buying stops, payouts stop. Prices can go to zero, and most later buyers lose money. Nothing is promised. The Terms carry the full notice.
The line
Your share is the coins you bought through the pool minus the coins you sold back into it. Coins you receive by transfer do not count, and coins you send away still count until you sell. A buy pays the line before the buyer joins it, and a sell takes the seller out before the ones who stay are paid, so nobody earns from their own tax.
The hook counts the wallet that signs the transaction (tx.origin), so swaps work through Uniswap's Universal Router and any other router without the router taking anyone's place.
The tax
Each pool has one tax, set at launch between 2% and 20% (10% by default), and it can never change. It is always taken in ETH: on a buy from the ETH you pay, on a sell from the ETH you receive. The pool itself has no LP fee.
- 80% to everyone already in line, pro rata to their share. While the line is empty (the very first buy), this part goes to the creator.
- 10% to the coin's creator.
- 10% to the house: $PONZI stakers, in ETH. Until the staking sink is set, it waits in the hook.
Example: a 0.1 ETH buy in a 10% pool pays 0.01 ETH of tax: 0.008 ETH to the line, 0.001 ETH to the creator, 0.001 ETH house cut. 0.09 ETH goes into the pool for coins.
Claims
claim(poolIds) pays you everything you earned in those pools. claimCreator(poolId) pays a creator its share. forwardHouse() sends the house cut to the $PONZI stakers once the sink is set; anyone can call it. Claims pull ETH: nothing is pushed, nothing expires.
The numbers
The price only moves with buys and sells. With X ETH net in a pool, the price per coin is (1/√P₀ + X/L)², Uniswap v4's own liquidity math for a single position, where P₀ is the opening price and L the position's liquidity.
Contracts
All on Robinhood Chain (chain id 4663), sources verified on Sourcify.
API for agents
Three JSON endpoints, no key. Amounts are strings in wei (ETH) or coin units (18 decimals); prices are ETH per coin.
GET /api/ponzis
Every coin the factory launched, newest first, with the totals.
curl https://ponzihooks.com/api/ponzis
{ "ok": true,
"totals": { "launched": 1, "volumeEth": "180000000000000", "toHolders": "8000000000000", "places": 2 },
"ponzis": [ { "coin": "0xA4D0…79b3", "id": "0x40d8…5403", "name": "First in Line", "symbol": "FIRST",
"creator": "0x…", "taxBps": 1000, "at": 1793251198, "priceEth": 1.0047e-9,
"volumeEth": "…", "toHolders": "…", "creatorOwed": "…", "entrants": 2, "totalShares": "…" } ] }GET /api/ponzis/[coin]
One pool, its line (every wallet by place, coins still in line, ETH earned, claimable, claimed) and its last 100 trades.
curl https://ponzihooks.com/api/ponzis/0xA4D0482d7580B75a33D0E52756ceFb98641679b3
{ "ok": true, "ponzi": { …summary,
"line": [ { "place": 1, "wallet": "0x…", "shares": "…", "claimable": "…", "claimed": "0", "earned": "…" } ],
"trades": [ { "buy": true, "wallet": "0x…", "eth": "…", "coins": "…", "tax": "…", "toHolders": "…", "tx": "0x…" } ] } }POST /api/swap/preview
Runs a buy or sell on the live chain with eth_simulateV1, from the wallet that will sign, and returns the tax in ETH, what comes out and the place in line. Nothing is sent. Only PonziHooks pools.
curl -X POST https://ponzihooks.com/api/swap/preview -H 'content-type: application/json' \
-d '{ "coin": "0xA4D0482d7580B75a33D0E52756ceFb98641679b3", "side": "buy", "amountIn": "10000000000000000", "from": "0xYourWallet" }'
{ "ok": true, "side": "buy", "amountOut": "8878605673966704009071093", "tax": "1000000000000000",
"toLine": "800000000000000", "toCreator": "100000000000000", "toHouse": "100000000000000",
"place": 3, "newPlace": true, "as": "your wallet" }Sending the transactions
Launch: factory.launch(name, symbol, taxBps), with name up to 32 bytes, symbol up to 12, taxBps from 200 to 2000. Buy: Universal Router execute with one V4_SWAP command (SWAP_EXACT_IN_SINGLE, SETTLE_ALL, TAKE_ALL) on the key { currency0: 0x0, currency1: coin, fee: 0, tickSpacing: 200, hooks: hook }, zeroForOne true, ETH as value. Sell: approve Permit2, approve the router on Permit2, then the same swap with zeroForOne false. Claim: hook.claim([poolId]).



