Be the keeper.
When a position runs out of FUN, someone has to close it, and whoever does keeps the bounty. Liquidate from this page with one click, let this tab do it for you, or run the keeper on your own machine.
Live positions
Run the keeper here
OffThis tab watches every position and, when one can be liquidated or a stop has crossed, opens your wallet to send it. You approve each one. The bounty lands in your wallet.
How the keeper works
Nothing on Fun Coupons runs by itself. A position past its liquidation price, or past its take-profit or stop-loss, stays open until someone sends the transaction that closes it. That someone is the keeper, and it can be anyone.
- 1Watch every positionEvery few seconds the keeper reads each open position and asks the Trading contract two questions: can it be liquidated, and has a stop crossed? The contract answers, not the keeper's own math.
- 2Liquidate firstAn underwater position keeps costing the pool until it closes, so liquidations go out first, up to 25 in one
liquidateManytransaction. Stops follow withexecuteTrigger. - 3Simulate, then sendEach call is simulated before it is signed. A position someone else already took comes back refused and costs nothing.
- 4Get paid in the same transactionThe bounty or fee moves to the sender's wallet as part of the call. There is nothing to claim later.
Keepers race. Fun Coupons runs its own keeper around the clock, and anyone else can run one too. Whoever lands first gets paid. A transaction that arrives second reverts and costs its gas, which on Robinhood Chain is a few cents.
A keeper can't squeeze a trader. The contract decides when a position is liquidatable. What the trader gets back is priced at most 1% past the reference price, so moving the pool price before liquidating buys a keeper nothing. A liquidatable position can't be closed through its stop for the smaller fee either: the contract sends it to liquidation.
Run it on your machine
The same keeper Fun Coupons runs. It keeps going with this page closed, batches liquidations, and can send alerts to Telegram.
- 1Install Node.js 22.18 or newerCheck with
node --version. Get it from nodejs.org if you don't have it. - 2Unzip and install
cd fun-coupons-keeper npm install
- 3Make a wallet just for the keeperThe key sits in your shell, so never use a wallet that holds anything else. This prints a fresh key and its address:Send it some ETH on Robinhood Chain for gas. 0.05 ETH covers about 2,000 transactions.
node -e 'import("viem/accounts").then(({ generatePrivateKey, privateKeyToAddress }) => { const k = generatePrivateKey(); console.log("key: ", k); console.log("address:", privateKeyToAddress(k)); })' - 4Start itIt prints a line for everything it sends. Bounties arrive in the keeper wallet as FUN.
export RPC_URL=https://rpc.mainnet.chain.robinhood.com export TRADING_ADDRESS=0x683412cC8369fEF5dbf1b4D6eBEc99b51EE34123 export KEEPER_PRIVATE_KEY=0x... # the key from step 3 npm start
0x683412cC8369fEF5dbf1b4D6eBEc99b51EE34123Explorer (opens in a new tab)Use your own RPC for a keeper you leave on. It polls every 3 seconds, and the public endpoint rate-limits. Alchemy, QuickNode and dRPC all serve Robinhood Chain.
One process per wallet. Two keepers signing with the same key fight over nonces. Different people with different wallets is fine.
The README in the download covers the optional settings: poll interval, batch size, Telegram alerts, an uptime heartbeat, and clearing a stuck transaction.