Skip to content
0xleventisPublic

About

PON BOT ($POT) — instant-snipe trading bot for new token launches on Pons (ponsfamily.com), Robinhood Chain

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Pons snipe bot

Watches ponsfamily.com (Pons, a token launchpad on Robinhood Chain, chain ID 4663) for newly launched tokens and snipes them at the moment of launch, then sells automatically once the price hits your take-profit target.

How it works

  1. Detect — polls the Pons factory contract for TokenLaunched events every FACTORY_POLL_MS (default 2s) — no waiting to observe buy activity first, every fresh launch is immediately actionable.
  2. Filter — only buys if the token's current market cap (price × total supply, in USD) is between MIN_MARKET_CAP_USD and MAX_MARKET_CAP_USD at the moment of the snipe attempt.
  3. Buy — wraps native ETH into the pool's pair token, approves the router, and swaps in ~BUY_AMOUNT_USD worth (1% fee tier, SwapRouter02's exactInputSingle).
  4. Sell — sells the full position the moment price reaches TAKE_PROFIT_MULTIPLEx entry (default 3x = +200%). That's the only automatic exit — no stop-loss, no inactivity timeout. Positions that are flat, losing, or have gone quiet are left open for you to close manually (e.g. via npm run status to check unrealized P&L, then a manual sell).

State (seen tokens, open/closed positions, last-scanned blocks) is kept in state.json so the bot can be restarted without re-processing history or losing track of open positions.

Why this can't just use Bankr

Bankr's wallet API only signs/submits transactions on Ethereum, Polygon, Base, and Unichain (chain IDs 1, 137, 8453, 130). Robinhood Chain (4663) isn't one of them, so this bot holds and signs its own key for that chain specifically, using viem directly against Pons's contracts.

Setup

npm install
cp .env.example .env
npm run gen-wallet   # generates a fresh burner keypair and prints setup steps

gen-wallet prints an address and private key, and refuses to run again once PRIVATE_KEY is already set in .env (so it won't clobber a funded wallet). Paste the private key into .env, then send a small amount of ETH to the printed address on Robinhood Chain — enough to cover gas plus however many $1 buys you expect to make concurrently (e.g. $10-20 to start).

Edit .env to taste. Key parameters:

Var Meaning Default
BUY_AMOUNT_USD Size of each buy 1
FACTORY_POLL_MS How often to check for new launches (lower = closer snipe, more RPC load) 2000
MAX_CONCURRENT_POSITIONS Caps simultaneous open positions 3
TAKE_PROFIT_MULTIPLE Sell trigger, as a multiple of entry price 3 (= +200%)
STOP_LOSS_PCT Unused — no automatic stop-loss (kept for reference) 0
MIN_MARKET_CAP_USD / MAX_MARKET_CAP_USD Only buy if current market cap falls in this range (no floor by default — new launches start near zero) 0 / 6000
SLIPPAGE_BPS Slippage tolerance on buy/sell swaps 3000 (30%)
DRY_RUN If true, logs intended trades without spending anything true

Running

npm start

Leave DRY_RUN=true for your first run and watch the logs for a while:

  • [detect] new launch: ... — a new token was picked up
  • [detect] buy signal: ... — it crossed the buy-count threshold
  • [dry-run] would BUY ... / [dry-run] would SELL ... — what the bot would have done

Once the detection logic looks sane, set DRY_RUN=false to let it actually trade. The process needs to keep running (it's a local script, not a hosted job) — use pm2, a background terminal, Windows Task Scheduler, or similar if you want it to survive terminal closes/reboots.

Real risks, read this before funding it

  • New/low-liquidity tokens are frequently rugs or go to zero. The "N buys in a window" signal is a weak proxy for legitimacy — it can be gamed by a deployer buying their own token with multiple wallets. Keep BUY_AMOUNT_USD small; that's your real risk control here, not the signal. Ponsfamily allows anyone to launch a token and there's no vetting process, so expect a high rate of tokens that never recover.
  • Honeypots / transfer taxes. Some tokens make selling revert or heavily tax it. The bot doesn't detect this ahead of time; a stuck position will just never hit the sell condition (or the sell tx will revert, logged as an error, and it'll retry next poll cycle).
  • Slippage estimate is approximate. estimateMinOut prices off the pool's current spot price, not a true pre-trade quote, so it doesn't account for this trade's own price impact on very shallow pools. That's why the default tolerance is generous (30%); tightening it risks failed buys on legitimately volatile new pools, loosening it risks worse fills.
  • Router is confirmed SwapRouter02 (verified source on robinhoodchain.blockscout.com), which is why swapRouterAbi omits the deadline field the original SwapRouter has — including it produces a selector matching no real function and reverts every swap. Confirmed working with real transactions as of this fix.
  • Market cap gating uses a rough spot-price estimate, not a true pre-trade quote — same caveats as the slippage estimate below.
  • Only fund what you can afford to lose. This is a burner wallet for a bot trading unvetted new tokens on a new chain — treat it accordingly.

Files

  • src/config.ts — env-driven configuration
  • src/abis.ts — factory/pool/router/ERC20 ABIs
  • src/chain.ts — viem public/wallet clients for Robinhood Chain
  • src/generateWallet.ts — burner wallet generator (npm run gen-wallet)
  • src/state.ts — JSON state persistence
  • src/priceOracle.ts — ETH/USD pricing (for sizing the $ buy amount)
  • src/detector.ts — factory log polling, new-launch detection
  • src/trader.ts — buy/sell execution and take-profit monitoring
  • src/index.ts — main loop wiring it all together

About

PON BOT ($POT) — instant-snipe trading bot for new token launches on Pons (ponsfamily.com), Robinhood Chain

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages