High-performance Rust bot that monitors wallets and DEX activity on Solana and automatically copies/snipes trades. PumpFun, PumpSwap, Raydium launchpad, Raydium Cpmm, Raydium Amm, Meteora DBC and Meteora Damm. It integrates a configurable selling engine with dynamic trailing stops. Jupiter is used for token liquidation. Recommended hosting service 👉 TradoxVPS
- Real-time monitoring: Yellowstone gRPC stream, parallel task processing
- Protocols: PumpFun (trade), PumpSwap (notify-only by default)
- Copy trading: Follow one or many target wallets with exclusions
- Risk & selling: Take profit, stop loss, dynamic trailing stop, copy-selling of existing balances
- Tx landing: Zeroslot or normal mode, configurable priority fees
- Utilities: Wrap/unwrap SOL, close empty token accounts, sell all tokens via Jupiter
- Load
.env, buildConfigand initialize clients (RPC, Yellowstone, ZeroSlot, wallet). - Start the
BlockhashProcessor, token-account cache, and cache maintenance. - Initialize
SellingEnginefrom env and optionally start copy-selling for existing tokens. - Launch two monitors in parallel:
- Target wallet monitoring (
processor/sniper_bot.rs) - DEX monitoring (
processor/sniper_bot.rs), protocol auto-detection or preference
- Target wallet monitoring (
- Parse candidate transactions/logs, filter excluded addresses and apply limits.
- Execute swaps. Apply slippage and priority-fee settings; optionally use ZeroSlot mode.
- Manage positions with the selling strategy (TP/SL/dynamic trailing). Liquidation paths use Jupiter.
- Maintain a per-token 20-slot time-series (price, buy/sell volume) to detect post-drop bottoms, enabling sniper entries and informed copy trades.
flowchart TD
A[Start] --> B[Load .env]
B --> C[Init RPC, Yellowstone, ZeroSlot, Wallet]
C --> D[Start Blockhash Processor]
D --> E[Init Token Account Cache]
E --> F[Start Cache Maintenance]
F --> G[Init Selling Engine]
G --> H{Run monitors in parallel}
H --> I[Target Wallet Monitoring]
H --> J[DEX Monitoring]
I --> K[Parse txs/logs]
J --> K
K --> L{Protocol match}
L --> |PumpFun| M[Execute swap]
L --> |PumpSwap| N[Notify only]
M --> O[Update selling / copy-sell]
O --> P[Dynamic trailing / TP / SL]
P --> Q[Jupiter sell path]
K --> R[Update 20-slot time series]
R --> S{Bottom detected?}
S --> |Yes| M
S --> |No| H
N --> Q
src/
common/ # config, constants, logger, caches
common/timeseries.rs # 20-slot price & volume time-series, bottom detection
library/ # blockhash processor, jupiter client, rpc, zeroslot
processor/ # monitoring, swap/execution, selling, risk mgmt, parsing
dex/ # protocol adapters: pump_fun.rs, pump_swap.rs, raydium_launchpad.rs
block_engine/ # helpers for token accounts & txs
error/ # error types
main.rs # entrypoint & CLI helpers (wrap/unwrap/sell/close)
Important files:
src/main.rs: starts services, parallel monitors, CLI helpers (--wrap,--unwrap,--sell,--close).src/common/config.rs: loads env, buildsConfig, RPC/yellowstone clients, wallet, slippage, fees.src/processor/sniper_bot.rs: wallet/DEX monitoring orchestration.src/processor/selling_strategy.rs: selling engine with dynamic trailing stop.src/library/jupiter_api.rs: quotes and executes swaps for liquidation.src/library/blockhash_processor.rs: keeps recent blockhashes updated.
Prerequisites:
- Rust toolchain (stable), Cargo
- Access to a Solana RPC (
RPC_HTTP) and Yellowstone gRPC endpoint
- Clone and create env file
cp src/env.example .env
# Edit .env with your keys and endpoints- Build
cargo build --release- Run
cargo run --releaseCLI helpers (run one at a time):
cargo run --release -- --wrap # Wrap WRAP_AMOUNT SOL to WSOL
cargo run --release -- --unwrap # Unwrap WSOL back to SOL
cargo run --release -- --sell # Sell all tokens via Jupiter
cargo run --release -- --close # Close all token accounts (excl. WSOL with balance)Copy from src/env.example and adjust. Key settings (not exhaustive):
-
Targeting & trading
COPY_TRADING_TARGET_ADDRESS: comma-separated wallet list to followIS_MULTI_COPY_TRADING:true/falseEXCLUDED_ADDRESSES: comma-separated addresses to ignoreCOUNTER_LIMIT: max number of tradesTOKEN_AMOUNT: buy amount (qty ifSwapInType::Qty)SLIPPAGE: basis points (e.g. 3000 = 30%)TRANSACTION_LANDING_SERVICE:0|zeroslotor1|normal
-
Fees & priority
SELLING_UNIT_PRICE: priority fee for selling txs (default 4_000_000)SELLING_UNIT_LIMIT: compute units for sellingZERO_SLOT_TIP_VALUE: tip used in zeroslot mode
-
Selling strategy
COPY_SELLING_LIMIT: initial multiple to start copy-sellingTAKE_PROFIT,STOP_LOSS,MAX_HOLD_TIMEDYNAMIC_TRAILING_STOP_THRESHOLDS: e.g.20:5,50:10,100:30,200:100,500:100,1000:100DYNAMIC_RETRACEMENT_PERCENTAGE,RETRACEMENT_PNL_THRESHOLD,RETRACEMENT_THRESHOLDMIN_LIQUIDITY- Time-series bottom detection (optional, future envs):
BOTTOM_MIN_DROP_PCT,BOTTOM_SELL_DECLINE_PCT,BOTTOM_STABILIZE_SLOTS
-
Sniper focus
FOCUS_DROP_THRESHOLD_PCT: fraction drop to mark token as droppedFOCUS_TRIGGER_SOL: buy trigger size after drop (in SOL)
-
Endpoints
RPC_HTTP: HTTP RPC endpointRPC_WSS: optional WSS endpointYELLOWSTONE_GRPC_HTTP: Yellowstone gRPC URLYELLOWSTONE_GRPC_TOKEN: Yellowstone tokenZERO_SLOT_URL,ZERO_SLOT_HEALTH: ZeroSlot endpoints
-
Wallet
PRIVATE_KEY: base58-encoded keypair stringWRAP_AMOUNT: SOL amount for--wrap
Example .env snippet:
RPC_HTTP=https://rpc.shyft.to?api_key=YOUR_API_KEY
YELLOWSTONE_GRPC_HTTP=https://grpc.ny.shyft.to
YELLOWSTONE_GRPC_TOKEN=YOUR_GRPC_TOKEN
PRIVATE_KEY=YOUR_BASE58_PRIVATE_KEY
COPY_TRADING_TARGET_ADDRESS=ADDRESS1,ADDRESS2
IS_MULTI_COPY_TRADING=true
EXCLUDED_ADDRESSES=675kPX9MHTj...,CPMMoo8L3F...
TOKEN_AMOUNT=0.001
SLIPPAGE=3000
TRANSACTION_LANDING_SERVICE=zeroslot
SELLING_UNIT_PRICE=4000000
SELLING_UNIT_LIMIT=2000000
ZERO_SLOT_TIP_VALUE=0.0025
TAKE_PROFIT=8.0
STOP_LOSS=-2
MAX_HOLD_TIME=3600
DYNAMIC_TRAILING_STOP_THRESHOLDS=20:5,50:10,100:30,200:100,500:100,1000:100- PumpSwap is configured as notification-only by default. Extend
dex/pump_swap.rsto enable execution. - Ensure your
PRIVATE_KEYis a base58 string of sufficient length; the app validates it at startup. - If
SLIPPAGEexceeds 10000 (100%), it is capped.
This software is provided "as is" without warranty. Use at your own risk. Always conduct thorough testing before deploying to mainnet. Some implementation details may be omitted for security reasons.
For more detailed information, advanced configuration, or collaboration inquiries, please reach out to me directly. https://github.com/AlphaFox000/
If you find it useful! Your support helps us continue developing and improving this tool.