Docs
Memebox buys a box of up to 10 pons memes on Robinhood Chain in one transaction, and sells them back to ETH in one transaction. One small contract does it: it splits the ETH you send over the memes' pons bonding curves by your weights and sends every meme straight to your wallet. It never holds tokens or ETH between transactions.
Overview
On pons every meme trades on its own bonding curve until it graduates to Uniswap. Buying ten memes normally means ten transactions, ten confirmations and prices that move while you click. A box puts all ten buys into one transaction, so every leg lands in the same block at the prices you were shown.
Buying a box
buy(curves, weights, minOuts, to) is payable. It takes the ETH you send, keeps the fee, and calls buy(ethIn, minTokensOut, to) on each pons curve with that curve's share of the ETH. Each curve mints or transfers the meme directly to to, normally your own address.
- 1 to 10 curves, no curve twice.
- Every weight above zero, all weights adding up to exactly 10,000 (basis points).
- One minimum out per curve.
Weights and rounding
Each leg gets (ETH after fee) × weight / 10,000. The last leg takes whatever is left after the others, so no wei stays behind. Example: 0.05 ETH, 0.5% fee, five memes at 30/25/20/15/10 gives 0.014925, 0.0124375, 0.00995, 0.0074625 and 0.004975 ETH.
Minimums and slippage
Before you sign, the app asks each curve how many tokens that leg would buy right now (a simulated call, nothing is sent) and sets the leg's minimum to that number less your slippage: 5%, 10% or 20%. The curve itself refuses to fill under the minimum, so if one meme pumps between the quote and your transaction by more than your slippage, the whole box reverts and you keep your ETH. Memes move fast; 10% is the default.
Selling back
sell(curves, tokens, amounts, minOuts, to) takes amounts of each meme from you, sells each on its curve and sends the total ETH, less the fee, to to in one payment. Each leg must return at least its own minimum in ETH. The app sells everything you hold of each ticked meme and sets each minimum from the live curve price less your slippage and the pons fee and tax.
The contract pulls the memes with transferFrom, so each meme needs a one-time approval for the Memebox contract. The app asks for it the first time and skips it afterwards.
Which memes
Any pons meme whose curve is quoted in ETH and has not graduated. The app reads the list from GeckoTerminal (pons curves on Robinhood Chain, sorted by 24h volume) and leaves out USDG-quoted curves and graduated ones. Graduated memes trade on Uniswap, which this contract does not route. You can still paste any curve address in the search box.
Presets: Top 5 and Top 10 by 24h volume, and Fresh 5: memes launched in the last 24 hours with the most buys.
Fees
| Memebox | 0.5% of the ETH side, on buys and on sells (owner can set 0 to 1%) |
| pons | the curve's trade fee, 1%, on every leg |
| Creator tax | whatever each meme's creator set, usually 0 to 3% |
| Gas | a box of 10 is a few hundred thousand gas, well under a cent on Robinhood Chain |
A round trip on two real memes on a fork of mainnet: 0.01 ETH in, 0.00946 ETH back right away, all fees included.
Who holds what
You do. Bought memes go straight from the curve to your wallet. During a sell the memes pass through the contract inside the same transaction and are sold at once. The contract keeps no balances and has no function that moves anyone's tokens.
The app
- Buy a box: tap memes in the list (up to 10), adjust the weights or split evenly, enter the ETH and the slippage, then one signature.
- Sell my memes: the list switches to the live memes you hold. Tick them, approve each once, then one signature.
- The landing page links straight to today's top 5 box.
For bots
// a box of two memes, 60/40, 0.02 ETH
await wallet.writeContract({ address: MEMEBOX, abi, functionName: "buy",
args: [[CURVE_A, CURVE_B], [6000, 4000], [minA, minB], me], value: 20_000000000000000n });
// sell both back
await wallet.writeContract({ address: MEMEBOX, abi, functionName: "sell",
args: [[CURVE_A, CURVE_B], [TOKEN_A, TOKEN_B], [balA, balB], [minEthA, minEthB], me] });
Quote a leg with a simulated curve.buy(ethIn, 0, me) sent with value = ethIn.
Events
BoxBought(buyer, to, ethIn, curves, got)BoxSold(seller, to, curves, amounts, ethOut)Config(treasury, feeBps)
Owner limits
The owner can set the fee, at most 1%, and the treasury address. Nothing else: no pause, no list of allowed memes, no function that touches user funds.
Risks
- Memes can go to zero. A box spreads the risk over several memes; it does not remove it.
- The curve address is whatever you pass. The app only offers pons curves from GeckoTerminal; a bot passing a wrong address risks only its own ETH.
- A meme can graduate between the quote and your transaction; then its leg fails and the box reverts.
- The contract is unaudited.
Token
The Memebox token launches on pons. Its address will be listed here and on the home page.
Contracts
| Memebox | opening soon |
Memebox