一個支持多錢包的自動刷量機器人,使用 Jupiter Exchange API 在 Solana 主網上執行 SOL ↔ USDC 交易循環。
- ✅ 多錢包支持:可同時管理多個錢包進行交易
- ✅ Jupiter Ultra API 整合:使用最優化的交易路徑
- ✅ 自動循環交易:SOL → USDC → SOL 自動循環
- ✅ 靈活排程:支持單次執行或 24 小時自動排程
- ✅ 錯誤處理:交易失敗自動重試(最多 3 次)
- ✅ 完整日誌:所有交易記錄到文件並輸出到控制台
- ✅ 安全性:私鑰從
.env讀取,不硬編碼
- Python 3.10 或更高版本
- uv(Python 套件管理工具)
- Solana Mainnet 錢包(含足夠的 SOL)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"cd swap先開啟虛擬環境
uv venv使用 uv 安裝所有依賴:
uv pip install -e .或手動安裝:
uv pip install solana solders aiohttp python-dotenv apscheduler base58複製範例配置文件:
cp .env.example .env編輯 .env 文件,填入你的配置:
# RPC Endpoint(可使用公共 RPC 或付費 RPC)
RPC_ENDPOINT=https://api.mainnet-beta.solana.com
# Jupiter API
JUPITER_API_URL=https://quote-api.jup.ag/v6
# 錢包私鑰(Base58 格式)
WALLET_1_PRIVATE_KEY=your_private_key_here
# WALLET_2_PRIVATE_KEY=another_private_key_here
# 交易參數
CYCLES_PER_RUN=5 # 每次執行的循環次數
SLIPPAGE_BPS=50 # 滑點 0.5%
SWAP_AMOUNT_SOL=0.1 # 每次交換 0.1 SOL
# 重試配置
MAX_RETRIES=3 # 最大重試次數
RETRY_DELAY=5 # 重試延遲(秒)
# 排程配置
RUN_INTERVAL_HOURS=24 # 24 小時執行一次- 請確保
.env文件已加入.gitignore,絕對不要提交到 Git - 私鑰必須是 Base58 格式(從 Phantom/Solflare 錢包匯出)
- 確保錢包有足夠的 SOL(建議至少 1 SOL)
使用 uv 運行:
uv run python main.py或直接運行:
python main.py程式啟動時會詢問:
❓ 是否開啟 24 小時自動排程?(y/n):
- 輸入
y:立即執行一次,然後每 24 小時自動執行 - 輸入
n:只執行一次後結束
- 按
Ctrl+C可安全停止程式 - 排程模式下會等待當前交易完成後退出
swap/
├── main.py # 主程式入口
├── config.py # 配置管理
├── jupiter_client.py # Jupiter API 客戶端
├── wallet_manager.py # 錢包管理
├── scheduler.py # 排程功能
├── logger.py # 日誌系統
├── .env # 環境變數(需自行創建)
├── .env.example # 環境變數範例
├── .gitignore # Git 忽略文件
├── pyproject.toml # uv 專案配置
├── README.md # 本文件
└── logs/ # 日誌目錄
└── bot_YYYY-MM-DD.log
每個「循環」包含兩個步驟:
- Swap A:將 0.1 SOL 兌換成 USDC
- Swap B:將所有 USDC 兌換回 SOL
範例:如果設定 CYCLES_PER_RUN=5,每個錢包會執行:
- 5 次 SOL → USDC 交易
- 5 次 USDC → SOL 交易
- 總共 10 筆交易
日誌會同時輸出到:
- 控制台:即時顯示執行狀態
- 日誌文件:
logs/bot_YYYY-MM-DD.log
日誌包含:
- ✅ 交易成功的簽名
- ❌ 交易失敗的原因
- 💰 錢包餘額
- 📊 執行統計
範例日誌:
2025-12-10 18:00:00 - INFO - ✅ 交易成功 | 錢包: AbC1...XyZ9 | 類型: SOL->USDC | 數量: 0.100000 SOL | 簽名: 5Gz7...
2025-12-10 18:00:15 - INFO - ✅ 交易成功 | 錢包: AbC1...XyZ9 | 類型: USDC->SOL | 數量: 0.099500 USDC | 簽名: 3Hj9...
每個循環(2 筆交易)的成本:
- 交易費用:約 0.00001 SOL
- 滑點損失:根據
SLIPPAGE_BPS設定 - USDC Token 帳戶租金(首次):約 0.00203928 SOL
建議:
- 每個錢包至少保留 0.5 SOL 以支付手續費
- 使用付費 RPC 可提高交易成功率
原因:SOL 餘額不足以支付交易數量和手續費
解決方案:
- 確保錢包有足夠的 SOL(建議至少 0.5 SOL)
- 減少
SWAP_AMOUNT_SOL的值
原因:公共 RPC 有速率限制
解決方案:
- 使用付費 RPC(Helius、QuickNode 等)
- 增加
RETRY_DELAY時間
原因:市場波動導致價格滑點超過設定值
解決方案:
- 增加
SLIPPAGE_BPS(例如從 50 改為 100) - 減少交易數量
原因:首次使用需要創建 USDC Token 帳戶
解決方案:
- 程式會自動處理(通過
wrapAndUnwrapSol: true) - 確保錢包有足夠的 SOL 支付租金(約 0.002 SOL)
- 絕對不要將
.env文件提交到 Git - 絕對不要分享你的私鑰
- 建議先在 Devnet 測試(需修改 RPC endpoint)
- 使用小額 SOL 測試(0.01 SOL)
- 定期檢查日誌文件
- 使用專用錢包,不要使用存有大量資產的主錢包
編輯 .env:
# Helius
RPC_ENDPOINT=https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY
# QuickNode
RPC_ENDPOINT=https://your-project.quiknode.pro/YOUR_TOKEN/根據市場情況調整:
# 較大的滑點容忍度(1%)
SLIPPAGE_BPS=100
# 更多重試次數
MAX_RETRIES=5
# 較長的重試延遲
RETRY_DELAY=10如需在 Devnet 測試,修改 .env:
RPC_ENDPOINT=https://api.devnet.solana.com
# 使用 Devnet 的測試代幣地址如遇到問題:
- 檢查
logs/目錄中的日誌文件 - 確認
.env配置正確 - 驗證錢包有足夠的 SOL
- 檢查 RPC endpoint 是否正常
- 本程式僅供教育和研究用途
- 使用本程式進行交易存在風險,可能導致資金損失
- 作者不對任何損失承擔責任
- 請在充分理解風險的情況下使用
- 請遵守當地法律法規
MIT License
祝交易順利! 🚀