Skip to content

Photon1998/jupiter-volume-bot

Repository files navigation

Solana Volume Bot

一個支持多錢包的自動刷量機器人,使用 Jupiter Exchange API 在 Solana 主網上執行 SOL ↔ USDC 交易循環。

功能特點

  • 多錢包支持:可同時管理多個錢包進行交易
  • Jupiter Ultra API 整合:使用最優化的交易路徑
  • 自動循環交易:SOL → USDC → SOL 自動循環
  • 靈活排程:支持單次執行或 24 小時自動排程
  • 錯誤處理:交易失敗自動重試(最多 3 次)
  • 完整日誌:所有交易記錄到文件並輸出到控制台
  • 安全性:私鑰從 .env 讀取,不硬編碼

系統需求

  • Python 3.10 或更高版本
  • uv(Python 套件管理工具)
  • Solana Mainnet 錢包(含足夠的 SOL)

安裝步驟

1. 安裝 uv

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

2. 克隆或下載專案

cd swap

3. 安裝依賴

先開啟虛擬環境

uv venv

使用 uv 安裝所有依賴:

uv pip install -e .

或手動安裝:

uv pip install solana solders aiohttp python-dotenv apscheduler base58

4. 配置環境變數

複製範例配置文件:

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

核心邏輯

每個「循環」包含兩個步驟:

  1. Swap A:將 0.1 SOL 兌換成 USDC
  2. Swap B:將所有 USDC 兌換回 SOL

範例:如果設定 CYCLES_PER_RUN=5,每個錢包會執行:

  • 5 次 SOL → USDC 交易
  • 5 次 USDC → SOL 交易
  • 總共 10 筆交易

日誌說明

日誌會同時輸出到:

  1. 控制台:即時顯示執行狀態
  2. 日誌文件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 可提高交易成功率

常見問題

1. 交易失敗:餘額不足

原因:SOL 餘額不足以支付交易數量和手續費

解決方案

  • 確保錢包有足夠的 SOL(建議至少 0.5 SOL)
  • 減少 SWAP_AMOUNT_SOL 的值

2. RPC 速率限制

原因:公共 RPC 有速率限制

解決方案

  • 使用付費 RPC(Helius、QuickNode 等)
  • 增加 RETRY_DELAY 時間

3. 滑點錯誤

原因:市場波動導致價格滑點超過設定值

解決方案

  • 增加 SLIPPAGE_BPS(例如從 50 改為 100)
  • 減少交易數量

4. USDC 帳戶未創建

原因:首次使用需要創建 USDC Token 帳戶

解決方案

  • 程式會自動處理(通過 wrapAndUnwrapSol: true
  • 確保錢包有足夠的 SOL 支付租金(約 0.002 SOL)

安全建議

  1. 絕對不要.env 文件提交到 Git
  2. 絕對不要分享你的私鑰
  3. 建議先在 Devnet 測試(需修改 RPC endpoint)
  4. 使用小額 SOL 測試(0.01 SOL)
  5. 定期檢查日誌文件
  6. 使用專用錢包,不要使用存有大量資產的主錢包

進階配置

使用付費 RPC

編輯 .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 的測試代幣地址

技術支援

如遇到問題:

  1. 檢查 logs/ 目錄中的日誌文件
  2. 確認 .env 配置正確
  3. 驗證錢包有足夠的 SOL
  4. 檢查 RPC endpoint 是否正常

免責聲明

⚠️ 重要提示

  • 本程式僅供教育和研究用途
  • 使用本程式進行交易存在風險,可能導致資金損失
  • 作者不對任何損失承擔責任
  • 請在充分理解風險的情況下使用
  • 請遵守當地法律法規

授權

MIT License


祝交易順利! 🚀

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages