Polymarket Bot Tutorial · Sura ya 3 kati ya 32
Chagua stack ya Polymarket bot yako: Python (py-clob-client 0.34.6), Node.js (@polymarket/clob-client-v2 v1.0.6), au Rust (hakuna SDK rasmi, jenga kwenye ethers-rs). Faida, hasara, latency, code samples.
Sura hii inafunika nini
Uchaguzi wa lugha ni muhimu kidogo kuliko builders wengi wanavyofikiri. Polymarket inafichua endpoints zile zile za REST na WebSocket kwa kila lugha; uchaguzi wa SDK kwa kawaida unaamua glue code ngapi unaandika mwenyewe. Python na Node zote zina SDKs zinazohifadhiwa rasmi; Rust hana, lakini inawezekana kwa hot path. Sura hii inapitia trade-offs, inaonyesha task ile ile ya "fetch order book" katika kila lugha ili diff iwe concrete, na inamaliza na mixed-stack pattern ambayo production bots wengi hatimaye huingia.
- Decision framework
- Python (chaguo la default)
- Node.js (full-stack devs)
- Rust (latency-critical hot path)
- Setup commands kwa kila stack
- Code skeleton: fetch order book katika lugha 3
- Wakati wa kuchanganya stacks (Python control plane + Rust hot path)
Decision framework
Maswali matatu yanatatua 90% ya uchaguzi wa stack.
- Una ujuzi wenye nguvu uliopo? Ukiandika Python kila siku, andika bot katika Python. Ukiandika TypeScript kila siku, andika bot katika Node. Tofauti za ubora wa SDK hapa chini ni za kweli lakini ndogo kuliko gharama ya kupigana na lugha isiyojulikana.
- Je, strategy ni latency-critical? Ikiwa edge yako inategemea kuitikia chini ya 50ms (5-minute crypto markets, market-making wakati wa news), hot path inafaidika na Rust au Go. Strategies nyingi haziitaji hii.
- Utaendesha zaidi ya strategy moja? Mchakato mmoja wa Python unaweza kushughulikia masoko 10-20. Zaidi ya hapo, async Node au Python split-process inascale vizuri.
Default ya kweli kwa bot ya kwanza ni Python. Badilisha tu wakati constraint iliyopimwa inafurusu.
Python (chaguo la default)
Python ni default kwa sababu SDK ndiyo iliyokamilika zaidi na iteration loop ni ya haraka zaidi. py-clob-client kwenye version 0.34.6 (Mei 2026) inafunika kila CLOB v2 endpoint inayohesabu: market na limit orders, FOK/FAK/GTC variants, order book reads, balance/allowance reads, na direct chain operations kupitia web3.py.
Faida: SDK iliyopevuka, data analysis rahisi na pandas, community kubwa, web3.py kwa on-chain reads. Hasara: ergonomics za async ni za ajabu ikilinganishwa na JavaScript, GIL inazuia multi-core speedups (mara chache inahesabu kwa bot iliyofungwa kwa I/O), startup time kwenye cold containers ni polepole.
Imependekezwa kwa: 80% ya builders. Hasa mtu yeyote ambaye strategy yake inahusisha backtesting, statistical analysis, au kazi yoyote ya data pamoja na execution.
Node.js (full-stack devs)
Node.js ni stack ya pili-bora-kuungwa mkono. @polymarket/clob-client-v2 kwenye version 1.0.6 inafunika endpoints sawa na Python SDK na TypeScript types kote. Async ni native na ya haraka; WebSocket handling ni bora kabisa.
Faida: story bora ya async, native TypeScript types, ecosystem kubwa kwa HTTP + WS, deploy rahisi kwenye Node runtime ile ile kama web dashboard. Hasara: usahihi wa nambari unahitaji BigInt au string handling kwa token IDs kubwa (ERC-1155 IDs ni 256-bit), pandas-equivalent data tools ni dhaifu.
Imependekezwa kwa: builders ambao tayari wanahifadhi JavaScript stack na wanataka runtime moja. Pia: mtu yeyote anayejenga dashboard pamoja na bot - kushiriki types kati ya bot core na Next.js dashboard kunatoa class ya bugs.
Rust (latency-critical hot path)
Rust haina SDK rasmi ya Polymarket. Unajenga dhidi ya V2 REST na WebSocket APIs moja kwa moja ukitumia reqwest (HTTP), tokio-tungstenite (WebSocket), na ethers-rs au alloy kwa signing. Takriban siku mbili za kazi ya setup vs dakika 30 katika Python.
Faida: native EIP-712 signing bila JS subprocess, sub-millisecond order construction, deterministic memory profile chini ya load, hakuna GC pauses. Hasara: hakuna SDK inamaanisha unarei-implement kile ambacho Python users wanapata bure (clobToken ID parsing, response schema validation, salt/nonce management). Win katika latency ni 20-100ms dhidi ya tuned Python, ambayo inahesabu tu kwa sub-second strategies.
Imependekezwa kwa: hot path ya market-making bot, au trade-firing leg ya news-arb bot. Karibu kamwe bot nzima.
Setup commands kwa kila stack
Minimum commands kwa signed order inayofanya kazi dhidi ya mainnet (single CLOB v2 endpoint).
Python:
python -m venv venv && source venv/bin/activate
pip install py-clob-client==0.34.6 web3 python-dotenv
# Set POLYGON_RPC, PRIVATE_KEY, POLY_FUNDER in .env
Node:
npm init -y
npm install @polymarket/[email protected] ethers dotenv
# Set POLYGON_RPC, PRIVATE_KEY, POLY_FUNDER in .env
Rust:
cargo new --bin pmt
cd pmt
cargo add tokio reqwest serde serde_json ethers alloy tungstenite tokio-tungstenite
# Hand-write signer + endpoint client; no SDK shortcut.
Time-to-first-order: ~dakika 10 Python, ~dakika 15 Node, ~masaa 4-8 Rust.
Code skeleton: fetch order book katika lugha 3
Task ile ile - fetch order book kwa Polymarket token - katika kila stack. Zote tatu zinagonga CLOB v2 REST endpoint ile ile.
Python (py-clob-client):
from py_clob_client.client import ClobClient
client = ClobClient(host="https://clob.polymarket.com", chain_id=137)
book = client.get_order_book("<token_id>")
print(book.bids[:3], book.asks[:3])
Node (@polymarket/clob-client-v2):
import { ClobClient } from "@polymarket/clob-client-v2";
const c = new ClobClient({ host: "https://clob.polymarket.com", chain: 137 });
const book = await c.getOrderBook("<token_id>");
console.log(book.bids.slice(0,3), book.asks.slice(0,3));
Rust (HTTP moja kwa moja):
let url = format!("https://clob.polymarket.com/book?token_id={}", token);
let book: serde_json::Value = reqwest::get(&url).await?.json().await?;
println!("{:?} {:?}", &book["bids"][..3], &book["asks"][..3]);
Response shape ile ile katika zote tatu. Gharama ya Rust iko kila mahali pengine - signing, order construction, error handling - sio katika read path.
Wakati wa kuchanganya stacks (Python control plane + Rust hot path)
Pattern ambayo production bots wengi huingia: Python kwa kila kitu kinachohusisha decisions, Rust kwa millisecond execution leg.
Architecture: Python process inasoma market state, inaendesha strategy logic, na inaandika command file ndogo (mfano {"action":"buy","token":"...","size":10,"price":0.45}) kwa Unix socket. Rust daemon inasikiliza kwenye socket hiyo, inasaini order, na inaipost kwa CLOB. Python process inaweza kuwa polepole na rahisi; Rust daemon ni ya haraka na ndogo.
Handoff ni ufunguo: kwa kutenga signed-order step, Python crash budget inarejeshwa bila kutoa latency. Tunatumia exactly pattern hii katika production bots zetu - Python inatoa intentions, Node daemon kwenye /tmp/clob.sock inashughulikia signing. Toleo la Node la daemon ni sawa kwa sub-100ms; Rust inalipa kazi yake tu chini ya 50ms.












