971ef41fad
- Add `mev_protection: bool` to `TradeConfig` and `InfrastructureConfig` (default: false) - Astralane QUIC: switches to port 9000 (MEV-protected endpoint) when enabled - BlockRazor HTTP: uses `mode=sandwichMitigation` query param when enabled - BlockRazor gRPC: uses `mode=sandwichMitigation` when enabled - Add `SWQOS_ENDPOINTS_ASTRALANE_QUIC_MEV` constants (port 9000) to `constants/swqos.rs` - Fix `astralane_quic.rs` IP candidates to use the actual port from the address (supports both 7000 and 9000) - Refactor `TradeConfig` to builder pattern via `TradeConfig::builder()` - Introduce `TradeConfigBuilder` with all optional fields and clear defaults - `TradeConfig::new()` kept as a shortcut (calls `builder().build()`) for backward compatibility - Remove old `with_wsol_ata_config` / `with_check_min_tip` / `with_swqos_cores_from_end` / `with_mev_protection` chain methods - Update all 16 examples to use `TradeConfig::builder()` with commented-out options so users can discover all available settings at a glance - Update README.md and README_CN.md code snippets to use builder pattern 🤖 Generated with [Qoder][https://qoder.com]
Solana Trading SDK - Python
Production-grade instruction builders for various Solana DEX protocols.
Supported Protocols
- PumpFun - Bonding curve trading
- PumpSwap - Pump AMM trading
- Bonk - Bonk DEX trading
- Raydium CPMM - Raydium Concentrated Product Market Maker
- Raydium AMM V4 - Raydium Automated Market Maker V4
- Meteora DAMM V2 - Meteora Dynamic AMM V2
Installation
pip install sol-trade-sdk
Quick Start
from solders.pubkey import Pubkey
from sol_trade_sdk.instruction import (
PumpFunParams,
build_pumpfun_buy_instructions,
get_bonding_curve_pda,
)
# Set up parameters
payer = Pubkey.from_string("YOUR_WALLET_ADDRESS")
output_mint = Pubkey.from_string("TOKEN_MINT_ADDRESS")
# Build parameters
params = PumpFunParams(
virtual_token_reserves=1000000000000,
virtual_sol_reserves=30000000000,
real_token_reserves=793000000000000,
creator_vault=Pubkey.from_string("CREATOR_VAULT_ADDRESS"),
token_program=Pubkey.from_string("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),
)
# Build buy instructions
instructions = build_pumpfun_buy_instructions(
payer=payer,
output_mint=output_mint,
input_amount=1000000000, # 1 SOL
params=params,
slippage_bps=500, # 5%
)
Features
- All program IDs and constants from Rust implementations
- Correct discriminators from Rust (not placeholder values)
- PDA derivation functions using solders.pubkey
build_buy_instructionsfunction for each protocolbuild_sell_instructionsfunction for each protocol- WSOL handling (wrap/close)
- ATA creation support
- Slippage calculation
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/
isort src/
License
MIT License