API · রেফারেন্স
পলিমার্কেট বাজার-ডেটা পড়তে কোনো কি লাগে না। অর্ডার দেওয়া বা বাতিল করতে দুই স্তরের প্রমাণীকরণ লাগে: আপনার API ক্রেডেনশিয়াল তৈরি করতে একটি L1 ওয়ালেট স্বাক্ষর (EIP-712), এবং প্রতিটি প্রমাণীকৃত অনুরোধে একটি L2 HMAC স্বাক্ষর। এই পাতা দুটোই কভার করে, প্লাস চারটি স্বাক্ষর-ধরন ও funder ঠিকানা - যে দুটো জিনিস বেশিরভাগ অথ-ত্রুটির কারণ।
- পড়া (Gamma, Data, পাবলিক CLOB) - কোনো অথ নয়।
- L1 - API ক্রেডেনশিয়াল তৈরি বা উদ্ভূত করতে আপনার ওয়ালেট একটি EIP-712 বার্তা (ClobAuth ডোমেইন সংস্করণ
"1") স্বাক্ষর করে। - L2 - প্রতিটি অর্ডার-অনুরোধ
api_key/api_secret/api_passphrase-এর একটি HMAC দিয়ে স্বাক্ষরিত হয়।
আপনার API ক্রেডেনশিয়াল তৈরি বা উদ্ভূত করুন (L1)
আপনার ওয়ালেট একবার স্বাক্ষর করে একটি নির্ধারক API ক্রেডেনশিয়াল-সেট তৈরি (বা পুনরায় উদ্ভূত) করে। V2 SDK
ব্যবহার করুন - V1 py-clob-client (0.34.x) সংরক্ষণাগারভুক্ত ও অকার্যকর।
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
# L1: your wallet signs to derive API credentials
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key() # api_key, api_secret, api_passphrase
# L1 + L2: rebuild the client WITH creds for authenticated calls (no set_api_creds in v2)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY, creds=creds)
// polymarket_client_sdk_v2 - official Rust client (repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::SignatureType;
let client = Client::new("https://clob.polymarket.com", Config::default())?
.authentication_builder(&signer)
.funder(deposit_wallet) // deposit wallets work in Rust today
.signature_type(SignatureType::Poly1271)
.authenticate().await?;
তিনটি মান সিক্রেট (env var) হিসেবে সংরক্ষণ করুন। বাজার-ডেটা পড়তে কখনও এগুলো লাগে না।
স্বাক্ষর-ধরন (0-3)
স্বাক্ষর-ধরন এক্সচেঞ্জকে বলে আপনার অর্ডার-স্বাক্ষর তহবিল-ধারী ওয়ালেটের (funder) সঙ্গে কীভাবে মেলে। আপনার অ্যাকাউন্ট যেভাবে তৈরি হয়েছে তার সঙ্গে মেলে এমনটি বাছুন।
| ধরন | নাম | কখন |
|---|---|---|
| 0 | EOA | একটি সাধারণ ওয়ালেট (যেমন MetaMask) যা স্বাক্ষর করে ও তহবিল ধরে - দুটোই। |
| 1 | POLY_PROXY | ইমেল / Magic.link সাইন-আপ - একটি প্রক্সি ওয়ালেট তহবিল ধরে; আপনার কি তার পক্ষে স্বাক্ষর করে। |
| 2 | POLY_GNOSIS_SAFE | একটি Gnosis Safe তহবিল ধরে; একটি স্বাক্ষরকারী কি তার জন্য স্বাক্ষর করে। |
| 3 | POLY_1271 | একটি ডিপোজিট ওয়ালেট (EIP-1271 স্মার্ট-কন্ট্রাক্ট স্বাক্ষর)। |
যখন স্বাক্ষরকারী কি তহবিল-ধারী ঠিকানা থেকে আলাদা হয় (ধরন 1-3), আপনাকে প্রাইভেট কি এবং
funder ঠিকানা দুটোই দিতে হবে।
py-clob-client-v2) ও TypeScript (@polymarket/clob-client-v2) ক্লায়েন্টে একটি
খোলা বাগ আছে: L1 অথ API কি-কে ডিপোজিট ওয়ালেটের বদলে আপনার EOA-তে বাঁধে, ফলে অর্ডার
প্রত্যাখ্যাত হয় ("maker address not allowed, please use the deposit wallet flow")। অফিসিয়াল
Rust ক্লায়েন্ট EIP-1271 ডিপোজিট-ওয়ালেট স্বাক্ষর সঠিকভাবে সামলায়। Rust-বহির্ভূত এড়ানোর উপায়: একটি
ইমেল/Magic অ্যাকাউন্ট ব্যবহার করে signature_type = POLY_PROXY (ধরন 1) দিয়ে স্বাক্ষর করুন। ফিক্সের জন্য
পলিমার্কেট issues #70 (Python) / #65 (TS) আবার দেখুন।অনুরোধ স্বাক্ষর করা (L2)
প্রতিটি প্রমাণীকৃত অনুরোধ আপনার API সিক্রেট প্লাস অনুরোধ-মেথড, পাথ, বডি ও একটি টাইমস্ট্যাম্প থেকে তৈরি একটি HMAC স্বাক্ষর বহন করে। V2 SDK আপনার জন্য এই হেডারগুলো তৈরি করে। দুটো জিনিস ঠিক রাখুন:
- ঘড়ি - ~60 সেকেন্ডের বেশি ড্রিফট আপনার স্বাক্ষর প্রত্যাখ্যাত করে। NTP দিয়ে সিঙ্ক করুন।
- ডোমেইন - L2/ClobAuth EIP-712 ডোমেইন সংস্করণ
"1"থাকে; কেবল V2 Exchange (অর্ডার) ডোমেইন"2"-তে গেছে। একটি V1 ক্লায়েন্ট ভুল অর্ডার-ডোমেইন স্বাক্ষর করে ও ব্যর্থ হয় - দেখুন order_version_mismatch।
কি-নিরাপত্তা
- প্রাইভেট কি বা API সিক্রেট কখনও হার্ডকোড করবেন না - এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন; কখনও কমিট করবেন না।
- যেখানে পারেন, আপনার স্বাক্ষরকারী কি ও funder ঠিকানা আপনার দৈনন্দিন ওয়ালেট থেকে আলাদা রাখুন।
- শুধু-পড়া বটের কোনো ক্রেডেনশিয়ালই লাগে না - সেখান থেকে শুরু করুন।
এরপর: CLOB API: একটি অর্ডার দিন · একটি অথ-ত্রুটি ঠিক করুন · v1 → v2 স্থানান্তর করুন।



