mirror of
https://github.com/chainstacklabs/pumpfun-bonkfun-bot.git
synced 2026-11-02 06:16:10 +00:00
chore(monitoring,platforms,tools): retire the pumpportal listener (#232)
* chore(monitoring,platforms,tools): retire the pumpportal listener Remove the third-party feed from the bot, the cookbook and the listener race. It sampled rather than covered the chain, and was the one listener that could never set state_from_event, so every buy paid the pre-buy curve read. Rescope the two buy-path verifiers that used it as a stand-in for a TokenInfo without state_from_event. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * style(trading): rewrap a docstring paragraph Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ca1f8919e6
commit
b7aae5e333
@@ -49,7 +49,7 @@ trade:
|
||||
# EXTREME FAST mode: skip the curve-stabilization wait and the price check,
|
||||
# buying a fixed token amount instead. Faster, but you don't learn the price
|
||||
# you paid. With geyser/logs/blocks the bot makes no RPC call at all between
|
||||
# detecting the coin and sending the buy; pumpportal needs one read first.
|
||||
# detecting the coin and sending the buy.
|
||||
extreme_fast_mode: true
|
||||
extreme_fast_token_amount: 20 # Amount of tokens to buy
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ trade:
|
||||
# EXTREME FAST mode: skip the curve-stabilization wait and the price check,
|
||||
# buying a fixed token amount instead. Faster, but you don't learn the price
|
||||
# you paid. With geyser/logs/blocks the bot makes no RPC call at all between
|
||||
# detecting the coin and sending the buy; pumpportal needs one read first.
|
||||
# detecting the coin and sending the buy.
|
||||
extreme_fast_mode: true
|
||||
extreme_fast_token_amount: 20 # Amount of tokens to buy
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ trade:
|
||||
# EXTREME FAST mode: skip the curve-stabilization wait and the price check,
|
||||
# buying a fixed token amount instead. Faster, but you don't learn the price
|
||||
# you paid. With geyser/logs/blocks the bot makes no RPC call at all between
|
||||
# detecting the coin and sending the buy; pumpportal needs one read first.
|
||||
# detecting the coin and sending the buy.
|
||||
extreme_fast_mode: true
|
||||
extreme_fast_token_amount: 20 # Amount of tokens to buy
|
||||
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
# Parameters for one bot instance. Review the values before running.
|
||||
|
||||
# Bot identification and connection settings
|
||||
name: "bot-sniper-pumpportal"
|
||||
env_file: ".env"
|
||||
rpc_endpoint: "${SOLANA_NODE_RPC_ENDPOINT}"
|
||||
wss_endpoint: "${SOLANA_NODE_WSS_ENDPOINT}"
|
||||
private_key: "${SOLANA_PRIVATE_KEY}"
|
||||
|
||||
enabled: false # You can turn off the bot w/o removing its config
|
||||
separate_process: true
|
||||
|
||||
# Options: "pump_fun" (default), "lets_bonk"
|
||||
platform: "lets_bonk"
|
||||
|
||||
# PumpPortal configuration (optional - uses default URL if not specified)
|
||||
pumpportal:
|
||||
url: "wss://pumpportal.fun/api/data" # Default PumpPortal WebSocket URL
|
||||
|
||||
# Trade execution: amount per trade and acceptable price deviation
|
||||
trade:
|
||||
buy_amount: 0.0001 # Amount of SOL to spend when buying (in SOL)
|
||||
buy_slippage: 0.3 # Maximum acceptable price deviation (0.3 = 30%)
|
||||
sell_slippage: 0.3
|
||||
|
||||
# Exit strategy configuration
|
||||
exit_strategy: "time_based" # Options: "time_based", "tp_sl", "manual"
|
||||
take_profit_percentage: 0.1 # Take profit at 10% gain (0.1 = 10%)
|
||||
stop_loss_percentage: 0.1 # Stop loss at 10% loss (0.1 = 10%)
|
||||
max_hold_time: 15 # Maximum hold time in seconds for TP/SL strategy, for time_based - see wait_after_buy
|
||||
price_check_interval: 2 # Check price every 2 seconds
|
||||
# A tp/sl exit sell can revert when the price moves under it. The bot re-reads
|
||||
# the price and retries; after this many attempts it gives up and leaves the
|
||||
# position open, tokens still held.
|
||||
max_exit_sell_attempts: 3
|
||||
|
||||
# EXTREME FAST mode: skip the curve-stabilization wait and the price check,
|
||||
# buying a fixed token amount instead. Faster, but you don't learn the price
|
||||
# you paid. With geyser/logs/blocks the bot makes no RPC call at all between
|
||||
# detecting the coin and sending the buy; pumpportal needs one read first.
|
||||
extreme_fast_mode: true
|
||||
extreme_fast_token_amount: 20 # Amount of tokens to buy
|
||||
|
||||
# How long that read may take, in seconds, before the coin is SKIPPED. Raise
|
||||
# it to buy more coins on a slow endpoint, lower it to skip faster. Buying
|
||||
# without it reverts on-chain and still costs the fee.
|
||||
curve_refresh_budget: 2.0
|
||||
|
||||
# Set false to make every listener do the pre-buy read, giving up the
|
||||
# zero-RPC path above.
|
||||
trust_create_event: true
|
||||
|
||||
# Priority fees: transaction speed vs cost.
|
||||
# Note: dynamic mode costs an extra RPC call, which slows the buy.
|
||||
priority_fees:
|
||||
enable_dynamic: false # Use latest transactions to estimate required fee (getRecentPrioritizationFees)
|
||||
enable_fixed: true # Use fixed amount below
|
||||
fixed_amount: 200_000 # Base fee in microlamports
|
||||
extra_percentage: 0.0 # Percentage increase on riority fee regardless of the calculation method (0.1 = 10%)
|
||||
hard_cap: 200_000 # Maximum allowable fee in microlamports to prevent excessive spending
|
||||
|
||||
# Compute unit limits for transaction processing
|
||||
# Operation-specific defaults are used if not specified: buy=100K, sell=60K
|
||||
compute_units:
|
||||
# Override default CU limits for this platform
|
||||
# buy: 100_000 # Buy operations (ATA creation + trading)
|
||||
# sell: 60_000 # Sell operations (just trading)
|
||||
|
||||
# Account data size optimization (reduces CU cost and improves tx priority)
|
||||
# Reduces CU cost from 16k to ~128 CU by limiting loaded account data.
|
||||
# Default is 64MB (16k CU). Setting to 512KB significantly reduces overhead.
|
||||
# Note: Savings don't show in "consumed CU" but improve tx priority/cost.
|
||||
# Note (Nov 23, 2025): with data size set to 512KB, transactions fail - increasing to 12.5MB resolves the issue.
|
||||
# Reference: https://www.anza.xyz/blog/cu-optimization-with-setloadedaccountsdatasizelimit
|
||||
# account_data_size: 12_500_000 # Disabled: causes MaxLoadedAccountsDataSizeExceeded with Token-2022
|
||||
|
||||
# Filters for token selection
|
||||
filters:
|
||||
match_string: null # Only process tokens with this string in name/symbol
|
||||
bro_address: null # Only trade tokens created by this user address
|
||||
# PumpPortal is a third-party feed and only reports what it indexes. It does
|
||||
# not report coins whose create landed in a Solana transaction v1, while its
|
||||
# coverage of v0 creates is near-complete, and nothing in this repo can
|
||||
# recover those — the coin is never pushed. Use "geyser" or "logs" if you need
|
||||
# every coin; see tests/regression/verify_transaction_v1.py.
|
||||
listener_type: "pumpportal" # Method for detecting new tokens: "logs", "blocks", "geyser", or "pumpportal"
|
||||
max_token_age: 0.001 # Maximum token age in seconds for processing
|
||||
marry_mode: false # Only buy tokens, skip selling
|
||||
yolo_mode: false # Continuously trade tokens
|
||||
|
||||
# Retry and timeout settings
|
||||
retries:
|
||||
max_attempts: 1 # Number of attempts for transaction submission
|
||||
wait_after_creation: 15 # Seconds to wait after token creation (only if EXTREME FAST is disabled)
|
||||
wait_after_buy: 15 # Holding period after buy transaction
|
||||
wait_before_new_token: 15 # Pause between token trades
|
||||
|
||||
# Token and account management
|
||||
cleanup:
|
||||
# Cleanup mode determines when to manage token accounts. Options:
|
||||
# "disabled": no cleanup will occur.
|
||||
# "on_fail": only clean up if a buy transaction fails.
|
||||
# "after_sell": clean up after selling.
|
||||
# "post_session": clean up all empty accounts after a trading session ends.
|
||||
mode: "post_session"
|
||||
force_close_with_burn: false # Force burning remaining tokens before closing account
|
||||
with_priority_fee: false # Use priority fees for cleanup transactions
|
||||
|
||||
# Node provider configuration
|
||||
node:
|
||||
max_rps: 25 # Maximum requests per second
|
||||
@@ -108,7 +108,7 @@ filters:
|
||||
# Accepts "sol"/"usdc" aliases or raw mint addresses.
|
||||
#allowed_quote_mints: ["sol"]
|
||||
listener_type: "shreds" # Pre-execution detection; see the header of this file.
|
||||
# Supported on pump_fun only. Other options: "logs", "blocks", "geyser", "pumpportal".
|
||||
# Supported on pump_fun only. Other options: "logs", "blocks", "geyser".
|
||||
max_token_age: 0.001 # Maximum token age in seconds for processing
|
||||
marry_mode: false # Only buy tokens, skip selling
|
||||
yolo_mode: false # Continuously trade tokens
|
||||
|
||||
Reference in New Issue
Block a user