🌊 Tide Auto Bot — Auto Farming Tide Protocol (SUI Testnet)
Bot tự động farming điểm cho dự án Tide Protocol trên mạng SUI Testnet. Hỗ trợ đa tài khoản, đa proxy, chạy 24/7 hoàn toàn tự động.
📸 Preview


✨ Tính năng chính
💧 Faucet — Tự động claim SUI testnet từ cả 2 nguồn: SuiLearn (nhanh, không captcha) + SUI Official (captcha + PoW)
💰 Deposit (10 điểm) — Nạp SUI vào Tide Protocol
🎫 Mint Pass — Mint Supporter Pass NFT
🔄 Trade Pass (30 điểm) — Mua (15đ) + Bán (15đ) pass trên marketplace, lặp N lần
🔀 Cross Trade — Giao dịch chéo giữa các tài khoản (auto-mint pass, retry khi bị snipe)
🏦 Borrow/Repay (45 điểm) — Vay (20đ) + Trả (25đ) SUI, lặp N lần
🎁 Claim Rewards (5 điểm) — Tự động nhận thưởng từ Supporter Pass
🔗 Referral — Tự động link mã giới thiệu
♻️ Daily Loop — Lặp lại farming mỗi X giờ (mặc định 6h = 4 chu kỳ/ngày)
🆘 Rescue SUI — Tự động cứu hộ ví thiếu SUI (chỉ khi faucet thất bại, chuyển đúng số thiếu)
📦 Collect SUI — Gom tất cả SUI từ mọi ví về 1 ví đích
🔧 Tính năng nâng cao
🧵 Multi-thread — Chạy song song nhiều tài khoản cùng lúc (
threads)🌐 Multi-proxy — Hỗ trợ 2 chế độ: proxy tĩnh (
proxy.txt) và proxy xoay (rotating-proxies.txt)🔄 Rotating Proxy — Mỗi key xoay = 1 luồng độc lập, tự đổi IP qua API trước mỗi chu kỳ
🛡️ Anti-detect — Device fingerprint ngẫu nhiên cho mỗi request
🔄 Auto-retry — Tự động thử lại khi gặp lỗi mạng/RPC
💡 Smart Faucet — Chạy 2 nguồn độc lập (SuiLearn + Official), bật/tắt từng nguồn riêng qua
faucet.sources→ Rescue nếu cả 2 fail📊 Live Stats — Hiển thị điểm, rank, tier, multiplier realtime
⚡ PoW Worker Pool — Proof of Work đa luồng thực (Worker Threads), cấu hình số worker qua
powThreads🔑 Multi Captcha — Hỗ trợ 3 dịch vụ captcha đồng thời, mỗi dịch vụ có API key riêng
🆘 Smart Rescue — Chỉ rescue khi faucet thất bại, chuyển đúng số SUI cần thiết (không partial)
📦 Consolidate SUI — Thu gom toàn bộ SUI về 1 ví chỉ định
🛒 On-chain Validation — Marketplace validate listing trên chain trước khi mua, tracking dead listing
📋 Yêu cầu
Node.js >= 18
Captcha API Key (cho tính năng faucet): hỗ trợ
2captcha/capmonster/capsolverProxy (khuyến nghị): HTTP / HTTPS / SOCKS4 / SOCKS5
🚀 Cài đặt
# 1. Cài dependencies
npm install
# 2. Thêm tài khoản vào accounts.txt (mỗi dòng 1 ví)
# Hỗ trợ: Private key (hex) hoặc Seed phrase (12/24 từ)
# 3. Thêm proxy vào proxy.txt (tùy chọn, mỗi dòng 1 proxy)
# Định dạng: protocol://user:pass@host:port
# 4. Chỉnh config.json theo nhu cầu (xem bên dưới)
# 5. Chạy bot
npm start⚙️ Cấu hình (config.json)
Bot tự tạo config.json với giá trị mặc định nếu file chưa tồn tại. Bạn chỉ cần sửa những gì cần thiết.
{
"threads": 5, // Số luồng chạy song song
"powThreads": 10, // Số worker thread cho PoW (mặc định: auto = CPU cores, max 8)
"delay": { "min": 3000, "max": 7000 }, // Delay ngẫu nhiên giữa các action (ms)
// === Bật/tắt tính năng ===
"features": {
"faucet": true, // Claim SUI testnet (SuiLearn + Official)
"deposit": true, // Nạp SUI vào Tide
"mintPass": true, // Mint Supporter Pass
"claimRewards": true, // Nhận thưởng
"borrow": true, // Vay & trả SUI
"tradePass": true, // Mua/bán pass trên marketplace
"crossTrade": false, // Khuyến nghị Tắt -> chức năng không ổn định
"dailyLoop": true // Lặp lại hàng ngày (24/7)
},
// === Proxy ===
"proxy": {
"enabled": true, // Bật/tắt proxy
"mode": "static", // "static" (proxy.txt) | "rotating" (rotating-proxies.txt)
"protocol": "http", // http | https | socks4 | socks5 (chỉ dùng khi mode=static)
"randomProxy": true // Random proxy cho mỗi request (chỉ dùng khi mode=static)
},
// === Proxy xoay (chỉ áp dụng khi mode="rotating") ===
"rotatingProxy": {
"changeIpDelay": 5000, // ms chờ sau khi đổi IP để ổn định
"minIntervalMs": 65000 // ms tối thiểu giữa 2 lần đổi IP (≥ 60000 theo giới hạn provider)
},
// === Captcha (bắt buộc cho faucet Official) ===
// Hỗ trợ 3 dịch vụ, mỗi dịch vụ có API key riêng
"captcha": {
"service": "capmonster", // capsolver | 2captcha | capmonster
"apiKey2Captcha": "", // API key cho 2captcha.com
"apiKeyCapsolver": "", // API key cho capsolver.com
"apiKeyCapmonster": "" // API key cho capmonster.cloud
},
// === Faucet ===
"faucet": {
"maxClaims": 5, // Số lần claim tối đa/phiên (~5 lần/ngày)
"delayBetween": 5000, // Delay giữa mỗi lần claim (ms)
"sources": {
"suilearn": true, // Bật/tắt nguồn SuiLearn (nhanh, không captcha)
"official": true // Bật/tắt nguồn SUI Official (captcha + PoW)
}
},
// === Deposit ===
"deposit": {
"amountSUI": 2 // Số SUI nạp vào Tide (tối thiểu 1 SUI)
},
// === Marketplace ===
"marketplace": {
"maxBuyPrice": 35000000000, // Giá mua tối đa (MIST) — 35 SUI
"sellPrice": 999000000000, // Giá bán (MIST) — 999 SUI
"repeatCount": 5, // Số lần lặp buy→sell mỗi chu kỳ
"crossPrice": 100000000, // Giá giao dịch chéo (MIST) — 0.1 SUI (tối thiểu)
"crossRepeat": 3 // Số lần giao dịch chéo
},
// === Loan ===
"loan": {
"borrowAmount": 0.5, // Số SUI vay mỗi lần
"repeatCount": 3 // Số lần lặp borrow→repay
},
// === Referral ===
"referral": {
"enabled": true,
"code": "TIDE-249BF61FYYCX"
},
// === Rescue SUI (cứu hộ ví thiếu SUI) ===
// Chỉ kích hoạt khi faucet thất bại, chuyển đúng số SUI cần thiết
"rescue": {
"enabled": true, // Bật/tắt rescue
"minBalance": 1.0, // Ví có balance < minBalance sẽ được rescue (SUI)
"reserveBalance": 1.0, // Giữ lại ít nhất X SUI trong ví donor
"maxTransfer": 50.0 // Tối đa chuyển X SUI mỗi lần
},
// === Collect SUI (gom SUI về 1 ví) ===
"collect": {
"targetIndex": 0, // Ví đích (index trong accounts.txt, 0 = ví đầu tiên)
"targetAddress": "", // Hoặc chỉ định địa chỉ ví đích (ưu tiên hơn targetIndex)
"minKeep": 0.01 // Giữ lại tối thiểu X SUI trong mỗi ví nguồn
},
// === Schedule ===
"schedule": {
"intervalHours": 6 // Lặp lại mỗi X giờ (6h = 4 chu kỳ/ngày)
},
"randomOrder": false // Xáo trộn thứ tự tài khoản
}📁 Định dạng file
accounts.txt
# Mỗi dòng 1 tài khoản — hỗ trợ private key hoặc seed phrase
0xabc123def456...
word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12
proxy.txt — Proxy tĩnh (dùng khi mode: "static")
# Mỗi dòng 1 proxy — hỗ trợ nhiều định dạng
http://user:pass@host:port
socks5://user:pass@host:port
host:port:user:pass
rotating-proxies.txt — Proxy xoay (dùng khi mode: "rotating")
# Mỗi dòng 1 key = 1 luồng độc lập
# Format cơ bản (dùng delay mặc định từ rotatingProxy trong config.json):
http://user:pass@host:port|API_KEY
# Format đầy đủ (override delay cho từng key riêng):
http://user:pass@host:port|API_KEY|changeIpDelay|minIntervalMs
# Ví dụ:
http://user1:user1@hndc43.proxyxoay.net:26209|9f3c1e72-5b8a-4d9f-a2c7-3e6145b8f2ad
http://user2:pass2@hndc44.proxyxoay.net:26210|3b8e5751-32fg-5286-c752-7c078427422g|8000|70000
Provider hỗ trợ: proxyxoay.net
API đổi IP:GET https://proxyxoay.net/api/rotating-proxy/change-key-ip/{API_KEY}
Giới hạn: tối thiểu 1 phút giữa 2 lần đổi IP mỗi key
🎮 Chế độ chạy
Farming đầy đủ (mặc định)
npm start
# hoặc
node src/index.jsBot sẽ chạy toàn bộ tính năng đã bật, lặp lại theo schedule.intervalHours. Rescue chỉ kích hoạt khi faucet thất bại.
Chỉ Faucet
npm run faucet
# hoặc
node src/index.js --faucetChỉ claim faucet SUI cho tất cả tài khoản, không farming.
Gom SUI về 1 ví (Collect)
npm run collect
# hoặc
node src/index.js --collectGom tất cả SUI từ mọi ví về ví đích (theo cấu hình collect trong config.json).
Tuỳ chọn CLI:
# Gom về địa chỉ cụ thể
node src/index.js --collect --to=0xABC123...
# Giữ lại 0.5 SUI trong mỗi ví nguồn
node src/index.js --collect --keep=0.5
# Kết hợp
node src/index.js --collect --to=0xABC123... --keep=0.5🔄 Proxy xoay (Rotating Proxy) -> https://proxyxoay.net/
Thay vì chia sẻ pool proxy tĩnh cho tất cả tài khoản, proxy xoay cho phép mỗi key có 1 luồng riêng biệt với IP thay đổi theo API.
Chế độ so sánh
Proxy tĩnh (mode: "static")
Nguồn:
proxy.txtLuồng: N tài khoản chạy song song qua
threadsIP: Cố định (pool), random hoặc round-robin
Cấu hình:
proxy.protocol,randomProxy
Proxy xoay (mode: "rotating")
Nguồn:
rotating-proxies.txtLuồng: M key → M luồng độc lập, mỗi luồng tuần tự từng account
IP: Đổi qua API trước mỗi chu kỳ, mỗi key tự quản lý
Cấu hình:
rotatingProxy.changeIpDelay,minIntervalMs
Cách bật
// config.json
"proxy": {
"enabled": true,
"mode": "rotating" // ← đổi từ "static" sang "rotating"
}Luồng hoạt động (1 key)
Luồng khởi động
↓
Đổi IP (lần đầu) → chờ changeIpDelay ổn định
↓
┌── VÒNG LẶP ──────────────────────────────┐
│ Farm account 1 (faucet → deposit → ...) │
│ Farm account 2 │
│ Farm account N (tuần tự) │
│ ↓ │
│ Kiểm tra minIntervalMs → đổi IP │
│ Chờ changeIpDelay → chu kỳ tiếp │
└───────────────────────────────────────────┘Nhiều key chạy song song
rotating-proxies.txt dòng 1 → Luồng 1: IP riêng → farm tuần tự
rotating-proxies.txt dòng 2 → Luồng 2: IP riêng → farm tuần tự
rotating-proxies.txt dòng N → Luồng N: IP riêng → farm tuần tự⚠️ Mỗi luồng chỉ chạy 1 tài khoản tại một thời điểm — không dùng
threadssong song trong cùng 1 key.
💧 Hệ thống Faucet kép
Bot hỗ trợ 2 nguồn faucet độc lập, có thể bật/tắt từng nguồn trong config.json:
"faucet": {
"sources": {
"suilearn": true, // Bật/tắt SuiLearn
"official": true // Bật/tắt SUI Official
}
}1. SuiLearn Faucet
Không cần captcha — Nhanh chóng, ~1-2 giây/claim
Không cần PoW — Không tốn CPU
Giới hạn: 5 claims/ngày/IP (rate limit theo IP, tự skip khi hết)
Nguồn:
faucet.suilearn.ioHiển thị: TX hash + số SUI nhận (balance diff)
Tắt:
"faucet": { "sources": { "suilearn": false } }
2. SUI Official Faucet
Cần captcha — Turnstile (capsolver / 2captcha / capmonster)
Cần PoW — Giải bằng Worker Threads Pool
Không giới hạn: Chỉ cần captcha + PoW thành công
Nguồn:
faucet.testnet.sui.ioTắt:
"faucet": { "sources": { "official": false } }
Luồng hoạt động
claimFaucet()
├── 1. SuiLearn (nhanh, miễn phí) → claim
├── 2. Official (captcha + PoW) → claim
│
├── ✅ Cả 2 OK → Cộng dồn SUI (SuiLearn + Official)
├── ✅ 1 trong 2 OK → Vẫn tính thành công
└── ❌ Cả 2 thất bại → Rescue (nếu bật)🆘 Cơ chế cứu hộ SUI (Rescue)
Khi chạy nhiều tài khoản, một số ví có thể hết SUI và faucet cũng thất bại. Hệ thống Rescue tự động giải quyết vấn đề này:
Cách hoạt động
Kích hoạt khi faucet thất bại — Rescue chỉ chạy khi cả SuiLearn lẫn Official faucet đều fail
Tìm donor tốt nhất — Quét tất cả ví trong batch hiện tại, chọn ví có balance cao nhất (trừ
reserveBalance)Chuyển đúng số thiếu — Tính chính xác số SUI cần thiết (
minBalance - currentBalance), không chuyển dưChỉ rescue ví trong batch — Chỉ rescue các ví đang chạy trong batch hiện tại (theo
threads), không quét toàn bộ
Chuỗi fallback khi cần SUI
SuiLearn + Official Faucet (chạy cả 2)
↓ cả 2 thất bại
Rescue (chuyển từ ví giàu)
↓ thất bại
Bỏ qua tài khoảnCấu hình
"rescue": {
"enabled": true, // Bật/tắt rescue
"minBalance": 1.0, // Ngưỡng cần rescue (ví < 1.0 SUI → cần cứu)
"reserveBalance": 1.0, // Giữ lại tối thiểu trong ví donor
"maxTransfer": 50.0 // Tối đa chuyển mỗi lần (SUI)
}⚡ Worker Threads PoW Pool
Faucet SUI Official yêu cầu giải Proof of Work (PoW) — một bài toán tính toán nặng CPU.
Giải pháp: Worker Threads Pool
Đa luồng thực — Mỗi worker là 1 OS thread riêng biệt, chạy song song thực sự
Cấu hình linh hoạt — Số worker qua
powThreadstrong config (mặc định:min(CPU cores, 8))WASM PoW — Mỗi worker load riêng WASM module (
wasm_pow_bg.wasm)Timeout 25 giây — PoW chạy quá lâu sẽ bị terminate, lấy challenge mới và retry
Auto-retry — Nếu PoW timeout, reuse captcha token + lấy challenge mới (tối đa 2 retry)
Job queue — Nhiều request cùng lúc sẽ được xếp hàng, dispatch tự động khi worker rảnh
Auto-replace — Worker bị terminate/crash sẽ tự động tạo worker mới thay thế
Kiến trúc
┌─────────────┐ ┌──────────────┐
│ faucet.js │────▶│ powPool.js │── solvePoWParallel()
│ (pLimit N) │ │ (PoWPool) │
└─────────────┘ └──────┬───────┘
│ dispatch job
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Worker 1 │ │ Worker 2 │ │ Worker N │ (OS Threads)
│ WASM PoW │ │ WASM PoW │ │ WASM PoW │
└──────────┘ └──────────┘ └──────────┘📦 Gom SUI (Collect)
Thu hồi toàn bộ SUI từ tất cả ví về 1 ví đích — hữu ích khi muốn tập trung SUI hoặc kết thúc farming.
Cách hoạt động
Quét balance tất cả ví
Xác định ví đích (theo
targetIndexhoặctargetAddress)Chuyển toàn bộ SUI (trừ
minKeep+ phí gas) từ mọi ví → ví đíchHiển thị tổng kết: bao nhiêu ví đã chuyển, tổng SUI thu được
Cấu hình
"collect": {
"targetIndex": 0, // Index ví đích (0 = ví đầu tiên trong accounts.txt)
"targetAddress": "", // Hoặc chỉ định trực tiếp địa chỉ (ưu tiên hơn targetIndex)
"minKeep": 0.01 // Giữ lại tối thiểu X SUI mỗi ví nguồn
}CLI
npm run collect # Theo config mặc định
node src/index.js --collect --to=0xABC... # Gom về địa chỉ cụ thể
node src/index.js --collect --keep=0.5 # Giữ lại 0.5 SUI/ví⚠️ Lưu ý quan trọng
KHÔNG chia sẻ file
accounts.txtcho bất kỳ aiBot chạy trên SUI Testnet — không liên quan đến token/tiền thật
Khuyến nghị dùng proxy khi chạy nhiều tài khoản để tránh bị rate-limit
Cần có Captcha API Key (capsolver/2captcha/capmonster) để sử dụng faucet Official (SuiLearn không cần)
Mỗi dịch vụ captcha dùng API key riêng:
apiKey2Captcha,apiKeyCapsolver,apiKeyCapmonsterĐảm bảo mỗi ví có đủ SUI (tối thiểu ~1-2 SUI) để thực hiện giao dịch
Hệ thống Rescue sẽ tự động cứu hộ khi faucet thất bại — không cần nạp thủ công
Proxy xoay: mỗi key chỉ tạo 1 request tại một thời điểm — không spam Enoki API → tránh lỗi 429
Proxy xoay: nếu
rotating-proxies.txttrống khimode=rotating→ bot báo lỗi và thoát ngay
🆘 Xử lý lỗi thường gặp
Không đủ SUI để trả phí gas → Ví hết SUI → Bật faucet + rescue, hoặc nạp thêm SUI
ChallengeExpired → PoW chạy quá lâu (>30s) → Worker Pool tự động retry với challenge mới
PoW Timeout (25s) → Worker bị kẹt → Tự động terminate worker + tạo mới + retry
Rescue: không tìm thấy donor → Tất cả ví đều thiếu SUI → Claim faucet thủ công cho ít nhất 1 ví
Lỗi giải captcha → API key sai/hết credit → Kiểm tra captcha API key và credit
Không kết nối được server → Mạng/proxy lỗi → Kiểm tra proxy hoặc kết nối mạng
Bị giới hạn tần suất → Quá nhiều request → Tăng delay hoặc dùng proxy
LoanVault paused → Contract tạm dừng → Tự động bỏ qua, chờ mở lại
Listing FINALIZED → Listing đã hoàn tất → Tự động bỏ qua deposit/mint
Đổi IP lỗi 500 liên tục → Proxy xoay server lỗi → Tự động retry tối đa 5 lần (30s/lần)
Đổi IP lỗi 400 (quá nhanh) → Chưa đủ
minIntervalMs→ Tự động chờ đủ thời gian rồi retryMuốn tắt nguồn faucet cụ thể → Đặt
faucet.sources.suilearn: falsehoặcfaucet.sources.official: false
📞 Liên hệ & Hỗ trợ
💬 Telegram: @R1zaX040

