Rust 示例:在 PumpSwap 外盘上自动买入 → 等待约 30 秒 → 卖出(默认 1 轮,可在 src/run.rs 调整)。支持多 SWQoS 并发提交。
中文 | English | 官网 | Telegram | Discord
提示:若代币仍在 PumpFun 内盘(未毕业到 PumpSwap),请使用同仓库下的
pumpfun_trade/pumpfun_trade_with_safekey。
- 自动化交易循环:买入 → 等待约 30 秒 → 卖出;默认 1 轮(修改
src/run.rs中ROUNDS、REST_SECS) - 多 SWQoS 支持:向多个 MEV 保护服务并发提交交易
- Durable Nonce:多 SWQoS 场景下的交易重放保护
- 灵活配置:支持 YAML 配置文件和环境变量
- 环境变量优先级:环境变量可覆盖配置文件中的敏感信息
- 跨平台构建:支持 Linux 部署的构建脚本
- 明确交易意图:买入使用
SimpleBuyParams + BuyAmount::WithMaxInput,卖出使用SellAmount::ExactInput;买卖滑点默认均为 500 bps(5%)。只有业务必须固定花费 quote 时才改用ExactInput。
git clone https://github.com/0xfnzero/fnzero-examples.git
cd fnzero-examples/pumpswap_trade确保已安装 Rust 和 Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh仓库不跟踪你的 .env、config/**/solana.yaml、config/**/trading.yaml(见根目录 README_CN.md「运行前准备与隐私」)。首次使用请执行:
cp .env.example .env
cp config/dev/solana.yaml.example config/dev/solana.yaml
cp config/dev/trading.yaml.example config/dev/trading.yaml再编辑上述文件填入私钥、RPC、SWQoS token 等;切勿 git add 这些文件。
根据 .env.example 创建 .env 文件:
# 环境:dev 或 prod
APP_ENV=prod
# 代币 mint 地址(也可作为命令行参数传入)
MINT=
# 钱包私钥(支持 base58 或标准 64 字节数组 JSON 格式)
PRIVATE_KEY=
# RPC 地址
SOLANA_RPC_URL=http://your-rpc-endpoint.com
# 买入 SOL 数量
BUY_SOL_AMOUNT=0.01
# SWQoS 区域
SWQOS_REGION=Frankfurt
# SWQoS 提供商 token
SWQOS_ASTRALANE_TOKEN=
SWQOS_BLOCKRAZOR_TOKEN=
SWQOS_JITO_TOKEN=
SWQOS_ZEROSLOT_TOKEN=
# ... 等等
# Durable nonce 账户(使用 2 个及以上 SWQoS 时必需)
NONCE_ACCOUNT=本项目支持直接配置私钥。你可以通过以下两种方式配置钱包:
- 复制
.env.example为.env - 将你的私钥添加到
PRIVATE_KEY变量
cp .env.example .env编辑 .env:
PRIVATE_KEY=你的私钥私钥格式支持:
- Base58 格式:标准的 Solana 私钥字符串(例如来自
solana-keygen new) - 64 字节数组 JSON:某些钱包导出的
[1,2,3,...64]格式
你也可以直接在配置文件中设置私钥:
# config/dev/solana.yaml 或 config/prod/solana.yaml
private_key: "你的私钥"安全提示:
- 永远不要将
.env文件提交到版本控制 - 在生产环境中使用环境变量以获得更好的安全性
- 妥善保管你的私钥,切勿泄露
本地配置文件(由 .example 复制而来,勿提交)建议组织为:
config/
├── dev/
│ ├── solana.yaml # 本地:RPC、私钥、SWQoS、nonce
│ └── trading.yaml # 本地:交易参数、gas
└── prod/
├── solana.yaml
└── trading.yaml
仓库中仅保留对应的 *.yaml.example 模板。
环境变量覆盖:
- 配置文件中的所有敏感值都可以被环境变量覆盖
.env中的值优先级高于配置文件- 适合将敏感信息排除在版本控制之外
支持以下 SWQoS 服务:
| 服务 | 必需参数 |
|---|---|
| Astralane | API Key |
| BlockRazor | API Key |
| Jito | UUID |
| NextBlock | API Key |
| Bloxroute | API Key |
| ZeroSlot | API Key |
| Temporal | API Key |
| FlashBlock | API Key |
| Node1 | API Key |
申请 API 密钥:https://fnzero.dev/swqos
直接运行脚本:
./run.sh脚本会:
- 从
.env和config/dev/solana.yaml加载配置 - 以 release 模式构建并运行交易机器人
- 通过
APP_ENV变量支持开发/生产环境
./pumpswap_trade <MINT_ADDRESS>MINT=<MINT_ADDRESS> ./pumpswap_trade# 在 .env 中设置 MINT 或作为参数传入
./pumpswap_tradeAPP_ENV=prod ./pumpswap_trade <MINT_ADDRESS>cargo build --release本仓库在 .cargo/config.toml 中设置了 target-dir = "build-cache",二进制路径为 build-cache/release/pumpswap_trade
./build-linux-release.sh该脚本会:
- 交叉编译为 Linux 二进制(x86_64-unknown-linux-gnu)
- 打包二进制文件和配置到
linux-release/deploy.tar.gz
输出:
linux-release/
├── x86_64-unknown-linux-gnu/release/pumpswap_trade
└── deploy.tar.gz
MIT License
- 官方网站:https://fnzero.dev/
- 项目仓库:https://github.com/0xfnzero/fnzero-examples
- Telegram 群组:https://t.me/fnzero_group
- Discord:https://discord.gg/vuazbGkqQE