पॉलीमार्केट बॉट ट्यूटोरियल · अध्याय 6 / 32
पॉलीमार्केट बॉट ऑथेंटिकेशन और वॉलेट सेटअप: प्रॉक्सी वॉलेट बनाम EOA, SDK के जरिए API key बनाना, Gnosis Safe के लिए sigType 2, key स्टोरेज की बेहतरीन आदतें, और Magic-to-Privy माइग्रेशन।
यह अध्याय क्या कवर करता है
पॉलीमार्केट का वॉलेट मॉडल तीन हिस्सों में बँटा है: एक externally owned account (EOA) जो ऑर्डर्स को साइन करता है, एक smart-contract प्रॉक्सी जो फंड्स रखती है, और पॉलीमार्केट CLOB API key जो HTTP requests को ऑथेंटिकेट करती है। इन तीनों को सही तरीके से आपस में जोड़ना नए बिल्डरों के लिए सबसे आम Day 1 वाली नाकामी है, और अगस्त 2025 की Magic Labs से Privy माइग्रेशन के बाद यह और भी उलझन भरा हो गया। यह अध्याय सेटअप के क्रम में हर हिस्से को कदम-दर-कदम समझाता है, उन खास environment variables और signature-type flag के साथ जिनकी production code को ज़रूरत होती है।
- प्रॉक्सी वॉलेट बनाम EOA: किसके साथ बॉट चलाएँ
- API key बनाना (SDK के चरण)
- sigType 2 और POLY_FUNDER_ADDRESS (Gnosis Safe)
- Key storage: .env, vault, KMS
- Magic Labs से Privy माइग्रेशन
- USDC/pUSD spending को approve करना
- वॉलेट रिकवरी और बैकअप
प्रॉक्सी वॉलेट बनाम EOA: किसके साथ बॉट चलाएँ
पॉलीमार्केट एक smart-contract प्रॉक्सी वॉलेट पैटर्न इस्तेमाल करता है। आपका EOA - यानी वह ऐड्रेस जो आपकी private key से जुड़ा है - transactions और ऑर्डर्स को साइन करता है। एक Gnosis Safe, जो deterministic ऐड्रेस पर deploy होता है, असली pUSD और परिणाम शेयर रखता है। प्रॉक्सी ऐड्रेस वही है जो पॉलीमार्केट UI के वॉलेट पैनल में दिखता है; EOA वही है जो साइन करता है।
बॉट्स के लिए, आप हमेशा EOA (PRIVATE_KEY in env) से साइन करते हैं और CLOB क्लाइंट config में प्रॉक्सी ऐड्रेस को POLY_FUNDER_ADDRESS के रूप में देते हैं। EOA को funder बनाकर ऑर्डर्स भेजने पर "insufficient balance" errors आते हैं, भले ही प्रॉक्सी में फंड मौजूद हो।
आप केवल EOA के साथ बॉट नहीं चला सकते - पॉलीमार्केट का web फ़्लो signup के समय हमेशा एक प्रॉक्सी बना देता है। दोनों ऐड्रेस की पुष्टि CLI से polymarket wallet show चलाकर करें, या पॉलीमार्केट UI की सेटिंग्स से प्रॉक्सी ऐड्रेस पढ़ें।
API key बनाना (SDK के चरण)
CLOB API को तीन credentials चाहिए: key, secret, passphrase। ये आपकी वॉलेट की private key नहीं हैं - ये आपकी वॉलेट से bound एक HMAC-style credential set है, जिसे केवल HTTP request ऑथेंटिकेशन के लिए इस्तेमाल किया जाता है।
SDK के साथ इन्हें एक बार बनाएँ:
# 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 फ़ाइल में store करें और हर बार बॉट शुरू होने पर load करें; हर सेशन में दोबारा न बनाएँ - API server credential set को cache करता है, और बार-बार rotate करने से rate-limit logic trigger हो सकता है। ये credentials अपने आप expire नहीं होते। इन्हें केवल तब rotate करें जब आपको लीक का शक हो।
sigType 2 और POLY_FUNDER_ADDRESS (Gnosis Safe)
signature_type argument यह तय करता है कि CLOB आपके order सिग्नेचर को कैसे validate करता है। तीन values मौजूद हैं; इनमें दो असल में काम की हैं:
- 0 / EOA: EOA ही signer भी है और funder भी। उन असामान्य setups में इस्तेमाल होता है जहाँ users ने private key सीधे import की हो।
- 1 / POLY_PROXY: पुराना Magic Labs प्रॉक्सी contract। ज़्यादातर pre-2025 अकाउंट्स।
- 2 / POLY_GNOSIS_SAFE: मौजूदा standard। फंड्स Gnosis Safe में रहते हैं, EOA साइन करता है।
अगस्त 2025 (Privy माइग्रेशन) के बाद बने किसी भी अकाउंट, या ऐसे अकाउंट के लिए जहाँ आपको पॉलीमार्केट UI में Gnosis Safe ऐड्रेस दिखे, signature_type=2 इस्तेमाल करें। POLY_FUNDER_ADDRESS env var Safe ऐड्रेस होना चाहिए, EOA नहीं। funder type के साथ बेमेल signature_type चुपचाप order rejections देता है जो "insufficient allowance" या "balance: 0" जैसे लगते हैं - error message भ्रामक होता है।
Key storage: .env, vault, KMS
EOA private key स्टोरेज के तीन ठीकठाक tiers।
- .env फ़ाइल (single-machine development)। यह फ़ाइल VPS पर रहती है, बॉट शुरू होने पर इसे read करता है, key host से कभी बाहर नहीं जाती। <$1k वॉलेट के लिए पर्याप्त।
chmod 600 .envकरें और पक्का करें कि आपके repo की .gitignore इसे exclude करती है। - Self-hosted vault (HashiCorp Vault, age-encrypted file, या systemd-creds)। बॉट शुरू होने पर एक unlock step जोड़ता है। $1k-$10k range के वॉलेट के लिए फ़ायदेमंद है।
- Cloud KMS (AWS KMS, GCP KMS)। बॉट key को memory में decrypt करने के लिए KMS call करता है; key कभी disk को नहीं छूती। इसकी operational जटिलता केवल $10k से ऊपर या कई-बॉट वाले fleets के लिए ही सही बैठती है।
क्या कभी नहीं करना चाहिए: private key को git में commit करना, इसे chat में paste करना, या इसे ऐसे पासवर्ड manager में रखना जो local-only mode के बिना cloud services से sync करता हो। पॉलीमार्केट EOA लीक का on-chain असर आपकी पूरी pUSD बैलेंस और परिणाम शेयर inventory तक फैलता है।
Magic Labs से Privy माइग्रेशन
अगस्त 2025 में पॉलीमार्केट ने अपने मुख्य embedded-wallet provider को Magic Labs से Privy में माइग्रेट किया। बॉट पर पड़ने वाला असर छोटा है लेकिन खास है।
माइग्रेशन से पहले बने अकाउंट्स (Magic के जरिए बनाए गए) आम तौर पर signature_type=1 (POLY_PROXY) इस्तेमाल करते हैं। माइग्रेशन के बाद बने अकाउंट्स signature_type=2 (POLY_GNOSIS_SAFE) इस्तेमाल करते हैं। कुछ users ने अपना पुराना अकाउंट माइग्रेट किया; कुछ ने असली को ही रखा। Public API से यह जानने का कोई तरीका नहीं है कि आपका अकाउंट कौन-सा type इस्तेमाल करता है - आप order साइन करने की कोशिश करके और rejection देखकर पता लगाते हैं।
माइग्रेशन ने UI में funder ऐड्रेस दिखाने का तरीका भी बदल दिया। पुराने पॉलीमार्केट UI फ़्लो dashboard में प्रॉक्सी ऐड्रेस दिखाते थे; मौजूदा फ़्लो इसे अकाउंट सेटिंग्स में छिपा देता है। CLI command polymarket wallet show दोनों values की पुष्टि करने का सबसे साफ़ तरीका है, चाहे अकाउंट कभी भी बना हो।
USDC/pUSD spending को approve करना
order match होने पर CLOB को आपका pUSD move करने के लिए, प्रॉक्सी ने पॉलीमार्केट exchange contracts को spender के रूप में approve किया होना चाहिए। पॉलीमार्केट UI पहली deposit के दौरान ये approvals set कर देता है। जो बॉट्स प्रॉक्सी को सीधे fund करते हैं, उनके लिए आपको ये खुद set करने होंगे।
हर वॉलेट के लिए एक बार set की जाने वाली तीन approvals:
- pUSD (ERC-20) → exchange contract
- Conditional Tokens (ERC-1155) → exchange contract (शेयर बेचने के लिए)
- Conditional Tokens (ERC-1155) → NegRisk exchange contract (NegRisk शेयर बेचने के लिए)
पहली बार setup पर CLI से polymarket approve चलाएँ। Transaction की लागत कुछ cents जितना MATIC gas होती है। polymarket approve check से जाँचें - तीनों को "approved" return करना चाहिए। नए बिल्डरों के लिए सबसे आम चुपचाप वाला bug है missing NegRisk approval, जो केवल multi-outcome markets से शेयर बेचते समय fail होता है और बैलेंस error जैसा दिखता है।
वॉलेट रिकवरी और बैकअप
बॉट वॉलेट में दो चीज़ें recover की जा सकती हैं: EOA private key, और पॉलीमार्केट अकाउंट पासवर्ड (जो web UI के जरिए access को रोकता है, लेकिन SDK के जरिए नहीं)।
बॉट के लिए EOA private key ही सबसे ज़रूरी चीज़ है। इसका खो जाना = प्रॉक्सी में मौजूद सब कुछ खो जाना। Cold backup: इसे कागज़ पर लिखें, envelope में सील करें, और कहीं बाहर (offsite) रखें। Hot backup: encrypted USB stick। इसे कभी ईमेल न करें; कभी भी बिना encryption वाले cloud स्टोरेज में न रखें।
पॉलीमार्केट अकाउंट पासवर्ड को Magic Labs / Privy ईमेल recovery के जरिए recover किया जा सकता है, बशर्ते आप अभी भी असली signup ईमेल को control करते हों। यह बॉट के access को नहीं रोकता - बॉट सीधे EOA private key इस्तेमाल करता है।
अगर आपको key लीक का शक है: तुरंत pUSD और outcome tokens को नए वॉलेट में withdraw करें, नया EOA बनाएँ, और नए key के साथ बॉट redeploy करें। लीक हुई key को revoke नहीं किया जा सकता; उसे केवल खाली (drain) किया जा सकता है।



