Polymarket Bot Tutorial · Chapter 6 of 32
Polymarket bot authentication and wallet setup: proxy wallets vs EOA, API key generation via SDK, sigType 2 for Gnosis Safe, key storage best practices, and the Magic-to-Privy migration.
এই chapter-এ কী কী covered আছে
Polymarket-এর wallet model-এ তিনটি moving part আছে: একটি externally owned account (EOA) যা orders sign করে, একটি smart-contract proxy যা funds hold করে, এবং Polymarket CLOB API key যা HTTP requests authenticate করে। এই তিনটি ঠিকভাবে wire করা নতুন builders-এর জন্য Day 1-এ সবচেয়ে common failure, এবং August 2025-এর Magic Labs থেকে Privy migration-এর পর এটা আরও confusing হয়ে গেছে। এই chapter-এ setup order অনুযায়ী প্রতিটি piece walk through করা হয়েছে, production code-এর জন্য প্রয়োজনীয় specific environment variables এবং signature-type flag সহ।
- Proxy wallet vs EOA: কোনটা দিয়ে bot করা উচিত
- API key generate করা (SDK steps)
- sigType 2 এবং POLY_FUNDER_ADDRESS (Gnosis Safe)
- Key storage: .env, vault, KMS
- Magic Labs থেকে Privy migration
- USDC/pUSD spending approve করা
- Wallet recovery এবং backup
Proxy wallet vs EOA: কোনটা দিয়ে bot করা উচিত
Polymarket একটি smart-contract proxy wallet pattern ব্যবহার করে। আপনার EOA - অর্থাৎ private key-এর সাথে যুক্ত address - transactions এবং orders sign করে। একটি নির্দিষ্ট deterministic address-এ deploy করা Gnosis Safe actual pUSD এবং outcome shares hold করে। proxy address-ই Polymarket UI-এর "wallet" panel-এ দেখা যায়; EOA-ই signature দেয়।
Bot-এর জন্য, আপনি সবসময় EOA (PRIVATE_KEY env-এ) দিয়ে sign করবেন এবং CLOB client config-এ proxy address-কে POLY_FUNDER_ADDRESS হিসেবে reference করবেন। funder হিসেবে EOA দিয়ে orders পাঠালে proxy funded থাকলেও "insufficient balance" error হয়।
শুধু EOA দিয়ে bot করা যায় না - Polymarket-এর web flow signup-এর সময় সবসময় একটি proxy create করে। CLI থেকে polymarket wallet show দিয়ে উভয় address confirm করুন, অথবা Polymarket UI-এর settings থেকে proxy address পড়ে নিন।
API key generate করা (SDK steps)
CLOB API-এর জন্য তিনটি credential লাগে: key, secret, passphrase। এগুলো আপনার wallet private key নয় - এগুলো আপনার wallet-এর সাথে bound থাকা একটি HMAC-style credential set, যা শুধু HTTP request authentication-এর জন্য ব্যবহৃত হয়।
SDK দিয়ে একবার generate করুন:
# Python
from py_clob_client.client import ClobClient
c = ClobClient(host="https://clob.polymarket.com", chain_id=137,
key="<PRIVATE_KEY>", signature_type=2,
funder="<PROXY_ADDRESS>")
creds = c.create_or_derive_api_creds()
print(creds.api_key, creds.api_secret, creds.api_passphrase)
Output-টি একটি JSON file-এ store করুন এবং bot start-এর সময়마다 load করুন; প্রতি session-এ regenerate করবেন না - API server credential set cache করে রাখে, এবং বারবার rotate করলে rate-limit logic trigger হতে পারে। Credential কখনও auto-expire হয় না। শুধু leak-এর সন্দেহ হলে rotate করুন।
sigType 2 এবং POLY_FUNDER_ADDRESS (Gnosis Safe)
signature_type argument CLOB কীভাবে আপনার order signature validate করবে তা control করে। তিনটি value আছে; এর মধ্যে দুটি বাস্তব:
- 0 / EOA: EOA-ই signer এবং funder, এমন unusual setup-এর জন্য যেখানে user সরাসরি private key import করেছে।
- 1 / POLY_PROXY: legacy Magic Labs proxy contract। বেশিরভাগ pre-2025 account।
- 2 / POLY_GNOSIS_SAFE: current standard। Funds Gnosis Safe-এ থাকে, EOA sign করে।
August 2025-এর পরে তৈরি হওয়া যেকোনো account-এর জন্য (Privy migration) অথবা Polymarket UI-তে Gnosis Safe address দেখা গেলে signature_type=2 ব্যবহার করুন। POLY_FUNDER_ADDRESS env var অবশ্যই Safe address হবে, EOA নয়। funder type-এর সাথে mismatched signature_type নীরবে order rejection তৈরি করে, যা "insufficient allowance" বা "balance: 0" এর মতো দেখায় - error messageটি বিভ্রান্তিকর।
Key storage: .env, vault, KMS
EOA private key সংরক্ষণের তিনটি reasonable storage tier।
- .env file (single-machine development). File VPS-এ থাকে, bot start হওয়ার সময় read করে, key host-এর বাইরে যায় না। <$1k wallet-এর জন্য যথেষ্ট।
chmod 600 .envদিন এবং নিশ্চিত করুন আপনার repo-এর .gitignore এটি exclude করে। - Self-hosted vault (HashiCorp Vault, age-encrypted file, বা systemd-creds)। Bot start-এর সময় unlock step যোগ হয়। $1k-$10k range-এর wallet-এর জন্য worth it।
- Cloud KMS (AWS KMS, GCP KMS)। Bot memory-তে key decrypt করার জন্য KMS call করে; key কখনও disk-এ touch করে না। Operational complexity শুধু $10k-এর উপরে বা multi-bot fleet-এর জন্য worth it।
যা কখনও করবেন না: private key git-এ commit করা, chat-এ paste করা, local-only mode ছাড়া cloud services-এ sync হয় এমন password manager-এ store করা। Polymarket EOA leak-এর on-chain blast radius হলো আপনার পুরো pUSD balance এবং outcome share inventory।
Magic Labs থেকে Privy migration
August 2025-এ Polymarket তাদের primary embedded-wallet provider Magic Labs থেকে Privy-তে migrate করে। Bot-এর দৃষ্টিকোণ থেকে এর effect ছোট, তবে নির্দিষ্ট।
Pre-migration account (Magic দিয়ে created) সাধারণত signature_type=1 (POLY_PROXY) ব্যবহার করে। Post-migration account signature_type=2 (POLY_GNOSIS_SAFE) ব্যবহার করে। কিছু user তাদের পুরোনো account migrate করেছে; কিছু original account রেখে দিয়েছে। Public API থেকে আপনার account কোন type ব্যবহার করছে তা বোঝার উপায় নেই - order sign করার চেষ্টা করে rejection দেখে check করতে হয়।
Migration UI-তে funder address প্রকাশ করার ধরনও বদলেছে। Older Polymarket UI flow dashboard-এ proxy address দেখাত; current flow account settings-এ তা লুকিয়ে রাখে। account কখন তৈরি হয়েছে তা নির্বিশেষে, polymarket wallet show CLI command-ই উভয় value confirm করার সবচেয়ে পরিষ্কার উপায়।
USDC/pUSD spending approve করা
CLOB-কে order match-এর সময় আপনার pUSD move করতে হলে, proxy-কে অবশ্যই Polymarket exchange contracts-কে spender হিসেবে approve করতে হবে। Polymarket UI প্রথম deposit-এর সময় এই approvals সেট করে। Bot যদি proxy directly fund করে, আপনাকে manually সেট করতে হবে।
Per wallet একবার করে তিনটি approval সেট করতে হবে:
- pUSD (ERC-20) → exchange contract
- Conditional Tokens (ERC-1155) → exchange contract (shares sell করার জন্য)
- Conditional Tokens (ERC-1155) → NegRisk exchange contract (NegRisk shares sell করার জন্য)
First setup-এর সময় CLI থেকে polymarket approve run করুন। Transaction-এর gas cost কয়েক সেন্ট MATIC-এ। polymarket approve check দিয়ে verify করুন - তিনটিই "approved" ফেরত দেওয়া উচিত। নতুন builders-এর সবচেয়ে common silent bug হলো NegRisk approval missing থাকা, যা শুধু multi-outcome market থেকে shares sell করার সময় fail করে এবং balance error-এর মতো দেখায়।
Wallet recovery এবং backup
Bot-এর wallet-এ দুটি recoverable element আছে: EOA private key, এবং Polymarket account password (যা web UI দিয়ে access gate করে, SDK দিয়ে নয়)।
Bot-এর জন্য EOA private key-ই একমাত্র গুরুত্বপূর্ণ বিষয়। এটি হারালে proxy-তে থাকা সবকিছু হারিয়ে যাবে। Cold backup: কাগজে লিখে envelope-এ seal করুন, অন্য স্থানে store করুন। Hot backup: encrypted USB stick। নিজেকে email করবেন না; cloud storage-এ unencrypted store করবেন না।
Polymarket account password এখনও Magic Labs / Privy email recovery-এর মাধ্যমে recover করা যায়, যতক্ষণ আপনি original signup email control করেন। এটি bot access gate করে না - bot সরাসরি EOA private key ব্যবহার করে।
Key leak সন্দেহ হলে: অবিলম্বে pUSD এবং outcome tokens নতুন wallet-এ withdraw করুন, নতুন EOA generate করুন, নতুন key দিয়ে bot redeploy করুন। Leaked key revoke করা যায় না; শুধু drain করা যায়।












