Skip to content

Latest commit

 

History

History
294 lines (210 loc) · 7.24 KB

File metadata and controls

294 lines (210 loc) · 7.24 KB

🔄 PumpSwap 自动交易示例

在 PumpSwap 上使用多个 SWQoS 实现自动化的买入-等待-卖出循环交易策略

Rust 示例:在 PumpSwap 外盘上自动买入 → 等待约 30 秒 → 卖出(默认 1 轮,可在 src/run.rs 调整)。支持多 SWQoS 并发提交。

GitHub stars GitHub forks

Rust Solana PumpSwap

中文 | English | 官网 | Telegram | Discord

提示:若代币仍在 PumpFun 内盘(未毕业到 PumpSwap),请使用同仓库下的 pumpfun_trade / pumpfun_trade_with_safekey


← 返回仓库总览


📋 目录


✨ 功能特性

  1. 自动化交易循环:买入 → 等待约 30 秒 → 卖出;默认 1 轮(修改 src/run.rsROUNDSREST_SECS
  2. 多 SWQoS 支持:向多个 MEV 保护服务并发提交交易
  3. Durable Nonce:多 SWQoS 场景下的交易重放保护
  4. 灵活配置:支持 YAML 配置文件和环境变量
  5. 环境变量优先级:环境变量可覆盖配置文件中的敏感信息
  6. 跨平台构建:支持 Linux 部署的构建脚本
  7. 明确交易意图:买入使用 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

🛠️ 配置

运行前必做(隐私)

仓库跟踪你的 .envconfig/**/solana.yamlconfig/**/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 文件(推荐)

  1. 复制 .env.example.env
  2. 将你的私钥添加到 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 服务

支持以下 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

脚本会:

  • .envconfig/dev/solana.yaml 加载配置
  • 以 release 模式构建并运行交易机器人
  • 通过 APP_ENV 变量支持开发/生产环境

使用命令行参数运行

./pumpswap_trade <MINT_ADDRESS>

使用环境变量运行

MINT=<MINT_ADDRESS> ./pumpswap_trade

使用 .env 文件运行

# 在 .env 中设置 MINT 或作为参数传入
./pumpswap_trade

使用不同环境运行

APP_ENV=prod ./pumpswap_trade <MINT_ADDRESS>

🔧 构建

本地开发构建

cargo build --release

本仓库在 .cargo/config.toml 中设置了 target-dir = "build-cache",二进制路径为 build-cache/release/pumpswap_trade

构建 Linux Release

./build-linux-release.sh

该脚本会:

  1. 交叉编译为 Linux 二进制(x86_64-unknown-linux-gnu)
  2. 打包二进制文件和配置到 linux-release/deploy.tar.gz

输出:

linux-release/
├── x86_64-unknown-linux-gnu/release/pumpswap_trade
└── deploy.tar.gz

📄 许可证

MIT License


💬 联系方式