Verify on-chain

You do not have to trust this site. Every constant can be read from the chains.

pump.fun on Solana

The Global account holds the initial reserves and the protocol fee:

curl -s https://solana-rpc.publicnode.com -X POST -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getAccountInfo","params":["4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf",{"encoding":"base64"}]}'

Decode after the first 73 bytes (discriminator, initialized flag, authority, fee recipient): five little-endian u64 values. Expect 1073000000000000 (initial virtual tokens, 6 decimals), 30000000000 (initial virtual SOL, lamports), 793100000000000 (tokens for sale), 1000000000000000 (supply) and 95 (protocol fee in basis points).

A live curve is the account at the PDA ["bonding-curve", mint] under the program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P. After the 8-byte discriminator come five u64 values: virtual tokens, virtual SOL, real tokens, real SOL, supply, then a complete byte and the creator.

The creator fee of 30 basis points appears in the trade events of any curve (creatorFeeBasisPoints).

Pons on Robinhood Chain

export RPC=https://rpc.mainnet.chain.robinhood.com
cast call --rpc-url $RPC 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e "launchFee()(uint256)"
# 500000000000000   (0.0005 ETH)
cast call --rpc-url $RPC <curve> "getReserves()(uint256,uint256)"
# (quoteReserve, tokenReserve): a fresh coin starts at 1.68 ETH and 1,000,000,000 tokens
cast call --rpc-url $RPC <curve> "graduated()(bool)"

The factory emits TokenLaunched(token indexed, curve indexed, deployer indexed, pairToken, launchConfigId, graduationThreshold). The threshold 0x3a4965bf58a40000 is 4.2 ETH.

Check the engine against a quote

For a Pons coin with reserves (q, t), a buy of e ETH with total fee f returns:

tokensOut = t - (q * t) / (q + e * (1 - f))

For pump.fun with virtual reserves (vs, vt) and total fee 1.25 %, a buy of x SOL returns:

net       = x / 1.0125
tokensOut = vt * net / (vs + net)

Run the keeper's dry runs yourself

node keeper/index.mjs newest      # reads both chains and the rate, prints the spread and the maker's decision
node keeper/check-solana.mjs      # simulates pump.fun buy, sell and create_v2 on mainnet state

On the site

The venues page does the same reads in your browser and shows whether they match the engine.