# 🎯 Pump.fun Sniper Bot Pump.fun 新币狙击交易机器人 — 基于 Bonding Curve 数学模型的自动化交易系统。 ## ⚠️ 风险警告 > **本项目仅供学习和研究使用。链上交易存在极高风险,99%+ 的 Pump.fun 代币归零。 > 永远不要投入你无法承受全部损失的资金。** --- ## 一、系统架构 | Layer | 模块 | 职责 | |-------|------|------| | 1 | 事件检测 (detection/) | Yellowstone gRPC / RPC 轮询 → 新币创建 / 进度更新 / 毕业 | | 2 | 决策引擎 (decision/) | Rug 过滤 → 信号评分 → 仓位计算 → GO/NO-GO | | 3 | 交易执行 (execution/) | 交易构建 → 模拟预检 → 多中继提交 (RPC + Jito) | | 4 | 仓位管理 (position/) | 止盈(分批) → 止损 → 时间止损 → 毕业处理 | | 5 | 风控 (risk/) | 熔断器 → 日亏损限制 → 连续失败保护 | | 6 | 监控 (monitoring/) | Prometheus 指标 → 日志 → 告警 | --- ## 二、环境要求 ### 2.1 系统要求 | 组件 | 最低要求 | 推荐 | |------|---------|------| | OS | Linux (Ubuntu 22.04+) / Windows 11 | Linux 裸金属 | | CPU | 4 核 | 8 核+ (低延迟) | | RAM | 8 GB | 16 GB+ | | 磁盘 | 20 GB SSD | NVMe SSD | | 网络 | 100 Mbps | 1 Gbps+ (共置) | ### 2.2 软件要求 | 软件 | 版本 | 安装方式 | |------|------|---------| | **Rust** | 1.75+ | `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh` | | **Solana CLI** | 1.18+ | `sh -c "$(curl -sSfL https://release.solana.com/stable/install)"` | | **Git** | 2.0+ | 系统包管理器 | ### 2.3 Rust 工具链安装 ```bash # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env # 验证 rustc --version # >= 1.75 cargo --version # 安装 Solana CLI sh -c "$(curl -sSfL https://release.solana.com/stable/install)" solana --version ``` ## 三、安装步骤 ### 3.1 克隆项目 ```bash cd pumpfun-sniper-bot ``` ### 3.2 配置环境变量 ```bash cp .env.example .env # 编辑 .env 填入真实配置 ``` ### 3.3 配置 TOML ```bash # 编辑 config/mainnet.toml # 关键配置项: # - detection.yellowstone_grpc_url: 你的 gRPC 端点 # - execution.rpc_url: 你的 RPC 端点 # - execution.jito_block_engine_url: Jito 端点 # - position.max_position_sol: 单次最大仓位 # - risk.daily_loss_limit_sol: 日亏损限制 ``` ### 3.4 创建钱包 ```bash # 创建钱包目录 mkdir -p wallets # 生成钱包 (建议 3-5 个轮换) solana-keygen new -o wallets/wallet_0.json solana-keygen new -o wallets/wallet_1.json solana-keygen new -o wallets/wallet_2.json # 查看地址 solana-keygen pubkey wallets/wallet_0.json # 转入 SOL (仅使用你能承受损失的资金!) solana transfer 1.0 --url mainnet-beta ``` ### 3.5 编译 ```bash # 开发编译 cargo build # 生产编译 (优化) cargo build --release # 运行测试 cargo test # 运行基准测试 cargo bench ``` ### 3.6 运行 ```bash # 开发模式 (dry_run = true, 不实际交易) cargo run -- config/mainnet.toml # 生产模式 (修改 config 中 dry_run = false) ./target/release/sniper config/mainnet.toml ``` ## 四、SDK 安装 (后期) 当前项目使用内置实现,不依赖外部 SDK。当你准备好后,可以安装以下 SDK 获得更好的性能: ### 4.1 sol-trade-sdk (交易构建) ```bash # Cargo.toml 中取消注释: sol-trade-sdk = "2.0" ``` 安装后替换 `src/execution/tx_builder.rs` 中的手动指令构建为: ```rust use sol_trade_sdk::protocols::pumpfun::{self, PumpFunBuyParams}; let params = PumpFunBuyParams { bonding_curve: bonding_curve_pubkey, user: wallet.pubkey(), mint: mint_pubkey, sol_amount: lamports, slippage_bps, }; let buy_ix = pumpfun::build_buy(¶ms)?; ``` ### 4.2 solana-streamer-sdk (事件流) ```bash # Cargo.toml 中取消注释: solana-streamer-sdk = { version = "2.0", features = ["sdk-parse-zero-copy"] } ``` 安装后替换 `src/detection/streamer.rs` 中的 RPC 轮询为 gRPC 流: ```rust use solana_streamer_sdk::prelude::*; let streamer = SolanaStreamer::builder() .grpc_endpoint(&config.yellowstone_grpc_url) .x_token(config.yellowstone_x_token.as_deref()) .subscribe_program(PUMP_FUN_PROGRAM_ID) .order_mode(OrderMode::Unordered) .build()?; ``` ## 五、配置说明 ### 5.1 关键参数 | 参数 | 默认值 | 说明 | 建议 | |------|-------|------|------| | bot.mode | "sniper" | 运行模式 | 新手用 "sniper" | | bot.dry_run | true | 模拟模式 | 首次必须 true | | position.max_position_sol | 0.1 | 单次最大仓位 | 总资金的 1-2% | | position.stop_loss_pct | 0.3 | 止损比例 | 30% | | risk.daily_loss_limit_sol | 1.0 | 日亏损限制 | 总资金的 5% | | risk.max_consecutive_failures | 5 | 熔断阈值 | 5 次 | | decision.min_score_threshold | 60.0 | 最低评分 | 60-70 | | decision.slippage_bps | 1000 | 滑点 (10%) | 新币需要高滑点 | ### 5.2 推荐 RPC 服务 | 服务 | 用途 | 价格 | |------|------|------| | Helius | RPC + gRPC | $49-$499/月 | | QuickNode | RPC | $49-$299/月 | | Triton | Yellowstone gRPC | 联系销售 | | Jito | Block Engine | 免费 (tip 另算) | ## 六、项目结构 ``` pumpfun-sniper-bot/ ├── Cargo.toml # 项目配置 ├── .env.example # 环境变量模板 ├── README.md # 本文档 ├── config/ │ └── mainnet.toml # 主网配置 ├── wallets/ # 钱包文件 (不要提交到 git!) │ ├── wallet_0.json │ ├── wallet_1.json │ └── wallet_2.json ├── scripts/ # 辅助脚本 ├── src/ │ ├── main.rs # 主入口 + 事件循环 │ ├── config.rs # 配置加载 │ ├── error.rs # 统一错误类型 │ ├── bonding_curve/ # Bonding Curve 数学模型 │ │ ├── mod.rs │ │ ├── math.rs # 核心公式 (含测试) │ │ ├── account.rs # 链上账户解析 (含测试) │ │ └── simulator.rs # 交易模拟器 (含测试) │ ├── detection/ # 事件检测 │ │ ├── mod.rs │ │ ├── streamer.rs # gRPC / RPC 事件流 │ │ └── bonding_curve_monitor.rs # 曲线状态监控 │ ├── decision/ # 决策引擎 │ │ ├── mod.rs │ │ ├── rug_filter.rs # Rug Pull 过滤 │ │ ├── scorer.rs # 信号评分 │ │ └── position_sizer.rs # 仓位计算 │ ├── execution/ # 交易执行 │ │ ├── mod.rs │ │ ├── tx_builder.rs # 交易构建 │ │ ├── submitter.rs # 多中继提交 │ │ └── jito.rs # Jito Bundle │ ├── position/ # 仓位管理 │ │ ├── mod.rs │ │ ├── manager.rs # 仓位管理器 │ │ └── exit_strategy.rs # 退出策略 │ ├── risk/ # 风控 │ │ ├── mod.rs │ │ └── circuit_breaker.rs # 熔断器 │ └── monitoring/ # 监控 │ ├── mod.rs │ └── metrics.rs # Prometheus 指标 └── tests/ # 集成测试 ``` ## 七、开发路线图 | 阶段 | 状态 | 内容 | |------|------|------| | Phase 1: 数学模型 | ✅ | Bonding Curve 公式 + 账户解析 + 模拟器 | | Phase 2: 事件检测 | ✅ | RPC 轮询 (gRPC 待 SDK 安装) | | Phase 3: 决策引擎 | ✅ | Rug 过滤 + 评分 + 仓位计算 | | Phase 4: 交易执行 | ✅ | 交易构建 + 多中继 + Jito | | Phase 5: 仓位管理 | ✅ | 止盈止损 + 退出策略 | | Phase 6: 风控 | ✅ | 熔断器 + 日亏损限制 | | Phase 7: 监控 | ✅ | Prometheus + 日志 | | Phase 8: SDK 集成 | ⏳ | 安装 sol-trade-sdk + solana-streamer-sdk | | Phase 9: 优化 | ⏳ | 预构建模板 + PDA 缓存 + 延迟优化 | | Phase 10: 实盘 | ⏳ | Devnet 测试 → Mainnet 小资金 | ## 八、安全注意事项 - 永远不要将 `wallets/` 目录提交到 Git - 永远不要在代码中硬编码私钥 - 永远先在 devnet 测试 2 周以上 - 永远先使用 `dry_run = true` 验证逻辑 - 永远设置日亏损限制和熔断器 - 定期检查钱包余额和交易记录 ```gitignore # .gitignore 必须包含: wallets/ .env *.json # 钱包文件 ``` ## 九、常见问题 **Q:** 编译报错 solana-sdk 版本冲突? **A:** 确保 solana-sdk 和 solana-client 版本一致 (都是 3.x)。 **Q:** 如何获取 Yellowstone gRPC 端点? **A:** 推荐使用 Triton 或 Helius 的 gRPC 服务。 **Q:** Jito tip 应该设多少? **A:** 起步 10,000 lamports (0.00001 SOL),根据网络拥堵动态调整。 **Q:** 为什么 dry_run 模式下交易不发送? **A:** 这是安全设计。确认策略逻辑正确后,将 bot.dry_run 改为 false。 ## 十、许可证 MIT License - 仅供学习研究,使用风险自担。 --- ## 19. `.gitignore` ```gitignore # 钱包 (绝对不能提交!) wallets/ *.json !Cargo.lock # 环境变量 .env # 编译产物 target/ # IDE .idea/ .vscode/ *.swp *.swo # 日志 logs/ *.log # OS .DS_Store Thumbs.db ``` ## 总结 - 安装 Rust 工具链:rustup + cargo - 编译验证:cargo build 确认无编译错误 - 运行测试:cargo test 确认数学模型正确 - 配置环境:复制 .env.example → .env,填入你的 RPC/gRPC 端点 - Dry Run:cargo run -- config/mainnet.toml(默认 dry_run=true) - 后期安装 sol-trade-sdk 和 solana-streamer-sdk 后,只需替换 tx_builder.rs 和 streamer.rs 中标记了 TODO 的部分即可。架构不需要改动。