পলিমার্কেট বট টিউটোরিয়াল ·

পলিমার্কেট বট প্রমাণীকরণ ও ওয়ালেট সেটআপ: প্রক্সি ওয়ালেট বনাম EOA, SDK-এর মাধ্যমে API কি তৈরি, Gnosis Safe-এর জন্য sigType 2, কি সংরক্ষণের সেরা অনুশীলন, এবং Magic-থেকে-Privy স্থানান্তর।

এই অধ্যায়ে কী আছে

পলিমার্কেটের ওয়ালেট-মডেলে তিনটি চলমান অংশ আছে: একটি externally owned account (EOA) যা অর্ডার স্বাক্ষর করে, একটি স্মার্ট-কন্ট্রাক্ট প্রক্সি যা তহবিল ধরে রাখে, এবং পলিমার্কেট CLOB API কি যা HTTP অনুরোধ প্রমাণীকরণ করে। এই তিনটি ঠিকভাবে যুক্ত করা নতুন নির্মাতাদের জন্য প্রথম দিনের সবচেয়ে সাধারণ ব্যর্থতা, এবং আগস্ট 2025-এর Magic Labs থেকে Privy স্থানান্তরের পর এটা আরও বিভ্রান্তিকর হয়ে গেছে। এই অধ্যায়ে সেটআপের ক্রম অনুযায়ী প্রতিটি অংশ ধাপে ধাপে দেখানো হয়েছে, প্রোডাকশন কোডের জন্য প্রয়োজনীয় নির্দিষ্ট এনভায়রনমেন্ট ভেরিয়েবল ও signature-type ফ্ল্যাগসহ।

  • প্রক্সি ওয়ালেট বনাম EOA: কোনটা দিয়ে বট করা উচিত
  • API কি তৈরি করা (SDK ধাপ)
  • sigType 2 এবং POLY_FUNDER_ADDRESS (Gnosis Safe)
  • কি সংরক্ষণ: .env, ভল্ট, KMS
  • Magic Labs থেকে Privy স্থানান্তর
  • USDC/pUSD খরচের অনুমোদন দেওয়া
  • ওয়ালেট পুনরুদ্ধার ও ব্যাকআপ

প্রক্সি ওয়ালেট বনাম EOA: কোনটা দিয়ে বট করা উচিত

পলিমার্কেট একটি স্মার্ট-কন্ট্রাক্ট প্রক্সি-ওয়ালেট প্যাটার্ন ব্যবহার করে। আপনার EOA - অর্থাৎ প্রাইভেট কি-র সঙ্গে যুক্ত ঠিকানা - লেনদেন ও অর্ডার স্বাক্ষর করে। একটি নির্দিষ্ট নির্ধারক ঠিকানায় মোতায়েন করা Gnosis Safe আসল pUSD এবং ফলাফল-শেয়ার ধরে রাখে। প্রক্সি ঠিকানাই পলিমার্কেট UI-এর "wallet" প্যানেলে দেখা যায়; EOA-ই স্বাক্ষর দেয়।

বটের জন্য, আপনি সবসময় EOA (PRIVATE_KEY env-এ) দিয়ে স্বাক্ষর করবেন এবং CLOB ক্লায়েন্ট কনফিগে প্রক্সি ঠিকানাকে POLY_FUNDER_ADDRESS হিসেবে উল্লেখ করবেন। funder হিসেবে EOA দিয়ে অর্ডার পাঠালে প্রক্সি তহবিলপূর্ণ থাকলেও "insufficient balance" ত্রুটি হয়।

কেবল EOA দিয়ে বট করা যায় না - পলিমার্কেটের ওয়েব-প্রবাহ সাইন-আপের সময় সবসময় একটি প্রক্সি তৈরি করে। CLI থেকে polymarket wallet show দিয়ে দুই ঠিকানা নিশ্চিত করুন, অথবা পলিমার্কেট UI-এর সেটিংস থেকে প্রক্সি ঠিকানা পড়ে নিন।

API কি তৈরি করা (SDK ধাপ)

CLOB API-এর জন্য তিনটি ক্রেডেনশিয়াল লাগে: key, secret, passphrase। এগুলো আপনার ওয়ালেট প্রাইভেট কি নয় - এগুলো আপনার ওয়ালেটের সঙ্গে আবদ্ধ একটি HMAC-ধাঁচের ক্রেডেনশিয়াল সেট, যা কেবল HTTP অনুরোধ প্রমাণীকরণে ব্যবহৃত হয়।

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)

আউটপুটটি একটি JSON ফাইলে সংরক্ষণ করুন এবং বট চালুর সময় প্রতিবার লোড করুন; প্রতি সেশনে পুনরায় তৈরি করবেন না - API সার্ভার ক্রেডেনশিয়াল সেট ক্যাশ করে রাখে, এবং বারবার ঘোরালে রেট-লিমিট যুক্তি ট্রিগার হতে পারে। ক্রেডেনশিয়াল কখনও স্বয়ংক্রিয়ভাবে মেয়াদোত্তীর্ণ হয় না। শুধু ফাঁসের সন্দেহ হলে ঘোরান।

sigType 2 এবং POLY_FUNDER_ADDRESS (Gnosis Safe)

signature_type আর্গুমেন্ট নিয়ন্ত্রণ করে CLOB কীভাবে আপনার অর্ডার-স্বাক্ষর যাচাই করবে। তিনটি মান আছে; এর মধ্যে দুটি বাস্তব:

  • 0 / EOA: EOA-ই স্বাক্ষরকারী ও funder, এমন অস্বাভাবিক সেটআপের জন্য যেখানে ব্যবহারকারী সরাসরি প্রাইভেট কি আমদানি করেছে।
  • 1 / POLY_PROXY: লিগ্যাসি Magic Labs প্রক্সি কন্ট্রাক্ট। বেশিরভাগ 2025-পূর্ব অ্যাকাউন্ট।
  • 2 / POLY_GNOSIS_SAFE: বর্তমান মান। তহবিল Gnosis Safe-এ থাকে, EOA স্বাক্ষর করে।

আগস্ট 2025-এর পরে তৈরি যেকোনো অ্যাকাউন্টের জন্য (Privy স্থানান্তর) অথবা পলিমার্কেট UI-তে Gnosis Safe ঠিকানা দেখা গেলে signature_type=2 ব্যবহার করুন। POLY_FUNDER_ADDRESS env var অবশ্যই Safe ঠিকানা হবে, EOA নয়। funder ধরনের সঙ্গে অমিল signature_type নীরবে অর্ডার-প্রত্যাখ্যান তৈরি করে, যা "insufficient allowance" বা "balance: 0"-এর মতো দেখায় - ত্রুটি-বার্তাটি বিভ্রান্তিকর।

কি সংরক্ষণ: .env, ভল্ট, KMS

EOA প্রাইভেট কি সংরক্ষণের তিনটি যুক্তিসঙ্গত স্তর।

  1. .env ফাইল (একক-মেশিন উন্নয়ন)। ফাইল VPS-এ থাকে, বট চালুর সময় পড়ে, কি হোস্টের বাইরে যায় না। <$1k ওয়ালেটের জন্য যথেষ্ট। chmod 600 .env দিন এবং নিশ্চিত করুন আপনার রিপোর .gitignore এটি বাদ দেয়।
  2. স্ব-হোস্টেড ভল্ট (HashiCorp Vault, age-এনক্রিপ্টেড ফাইল, বা systemd-creds)। বট চালুর সময় একটি আনলক ধাপ যোগ হয়। $1k-$10k পরিসরের ওয়ালেটের জন্য উপযুক্ত।
  3. ক্লাউড KMS (AWS KMS, GCP KMS)। বট মেমরিতে কি ডিক্রিপ্ট করতে KMS কল করে; কি কখনও ডিস্ক স্পর্শ করে না। এর পরিচালনাগত জটিলতা কেবল $10k-এর ওপরে বা বহু-বট ফ্লিটের জন্য উপযুক্ত।

যা কখনও করবেন না: প্রাইভেট কি git-এ কমিট করা, চ্যাটে পেস্ট করা, লোকাল-অনলি মোড ছাড়া ক্লাউড সার্ভিসে সিঙ্ক হয় এমন পাসওয়ার্ড ম্যানেজারে সংরক্ষণ করা। পলিমার্কেট EOA ফাঁসের অন-চেইন ক্ষতির পরিধি হলো আপনার পুরো pUSD ব্যালান্স এবং ফলাফল-শেয়ার ইনভেন্টরি।

Magic Labs থেকে Privy স্থানান্তর

আগস্ট 2025-এ পলিমার্কেট তাদের প্রধান এমবেডেড-ওয়ালেট প্রদানকারী Magic Labs থেকে Privy-তে স্থানান্তরিত হয়। বটের দৃষ্টিকোণ থেকে এর প্রভাব ছোট, তবে নির্দিষ্ট।

স্থানান্তর-পূর্ব অ্যাকাউন্ট (Magic দিয়ে তৈরি) সাধারণত signature_type=1 (POLY_PROXY) ব্যবহার করে। স্থানান্তর-পরবর্তী অ্যাকাউন্ট signature_type=2 (POLY_GNOSIS_SAFE) ব্যবহার করে। কিছু ব্যবহারকারী তাদের পুরোনো অ্যাকাউন্ট স্থানান্তর করেছেন; কিছু মূল অ্যাকাউন্ট রেখে দিয়েছেন। পাবলিক API থেকে আপনার অ্যাকাউন্ট কোন ধরন ব্যবহার করছে তা বোঝার উপায় নেই - অর্ডার স্বাক্ষরের চেষ্টা করে প্রত্যাখ্যান দেখে যাচাই করতে হয়।

স্থানান্তর funder ঠিকানা প্রকাশের ধরনও বদলেছে। পুরোনো পলিমার্কেট UI প্রবাহ ড্যাশবোর্ডে প্রক্সি ঠিকানা দেখাত; বর্তমান প্রবাহ অ্যাকাউন্ট সেটিংসে তা লুকিয়ে রাখে। অ্যাকাউন্ট কখন তৈরি হয়েছে তা নির্বিশেষে, polymarket wallet show CLI কমান্ডই দুই মান নিশ্চিত করার সবচেয়ে পরিষ্কার উপায়।

USDC/pUSD খরচের অনুমোদন দেওয়া

CLOB-কে অর্ডার মিলের সময় আপনার pUSD সরাতে হলে, প্রক্সিকে অবশ্যই পলিমার্কেট এক্সচেঞ্জ কন্ট্রাক্টগুলোকে খরচকারী হিসেবে অনুমোদন দিতে হবে। পলিমার্কেট UI প্রথম জমার সময় এই অনুমোদন সেট করে। বট যদি সরাসরি প্রক্সি তহবিলপূর্ণ করে, তাহলে আপনাকে ম্যানুয়ালি সেট করতে হবে।

প্রতি ওয়ালেটে একবার করে তিনটি অনুমোদন সেট করতে হবে:

  1. pUSD (ERC-20) → এক্সচেঞ্জ কন্ট্রাক্ট
  2. Conditional Tokens (ERC-1155) → এক্সচেঞ্জ কন্ট্রাক্ট (শেয়ার বিক্রির জন্য)
  3. Conditional Tokens (ERC-1155) → NegRisk এক্সচেঞ্জ কন্ট্রাক্ট (NegRisk শেয়ার বিক্রির জন্য)

প্রথম সেটআপের সময় CLI থেকে polymarket approve চালান। লেনদেনের গ্যাস-খরচ কয়েক সেন্ট MATIC। polymarket approve check দিয়ে যাচাই করুন - তিনটিই "approved" ফেরত দেওয়া উচিত। নতুন নির্মাতাদের সবচেয়ে সাধারণ নীরব বাগ হলো NegRisk অনুমোদন অনুপস্থিত থাকা, যা কেবল বহু-ফলাফল বাজার থেকে শেয়ার বিক্রির সময় ব্যর্থ হয় এবং ব্যালান্স-ত্রুটির মতো দেখায়।

ওয়ালেট পুনরুদ্ধার ও ব্যাকআপ

বটের ওয়ালেটে দুটি পুনরুদ্ধারযোগ্য উপাদান আছে: EOA প্রাইভেট কি, এবং পলিমার্কেট অ্যাকাউন্ট পাসওয়ার্ড (যা ওয়েব UI-এর অ্যাক্সেস আটকায়, SDK-এর নয়)।

বটের জন্য EOA প্রাইভেট কি-ই একমাত্র গুরুত্বপূর্ণ বিষয়। এটি হারালে প্রক্সিতে থাকা সবকিছু হারিয়ে যাবে। কোল্ড ব্যাকআপ: কাগজে লিখে খামে সিল করুন, অন্য স্থানে সংরক্ষণ করুন। হট ব্যাকআপ: এনক্রিপ্টেড USB স্টিক। নিজেকে ইমেল করবেন না; ক্লাউড স্টোরেজে এনক্রিপশন ছাড়া সংরক্ষণ করবেন না।

পলিমার্কেট অ্যাকাউন্ট পাসওয়ার্ড এখনও Magic Labs / Privy ইমেল-পুনরুদ্ধারের মাধ্যমে পুনরুদ্ধার করা যায়, যতক্ষণ আপনি মূল সাইন-আপ ইমেল নিয়ন্ত্রণ করেন। এটি বট-অ্যাক্সেস আটকায় না - বট সরাসরি EOA প্রাইভেট কি ব্যবহার করে।

কি ফাঁসের সন্দেহ হলে: অবিলম্বে pUSD এবং ফলাফল-টোকেন নতুন ওয়ালেটে তুলে নিন, নতুন EOA তৈরি করুন, নতুন কি দিয়ে বট আবার মোতায়েন করুন। ফাঁস হওয়া কি প্রত্যাহার করা যায় না; কেবল খালি করা যায়।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

আমার বটের জন্য কি আলাদা ওয়ালেট দরকার?
জোরালোভাবে সুপারিশ করা হয় - হ্যাঁ। একটি নতুন EOA বা নতুন ইমেল-অ্যাকাউন্ট-থেকে-উদ্ভূত প্রক্সি ওয়ালেট ব্যবহার করুন, যেখানে কেবল বটের জন্য বরাদ্দ করা পুঁজি থাকবে। বট-কি ফাঁস হলে কেবল বটের তহবিল ঝুঁকিতে থাকবে - আপনার মূল সম্পদ নিরাপদ থাকবে।
Polymarkets API-তে sigType 2 কী?
sigType 2 একটি Gnosis Safe (প্রক্সি ওয়ালেট) স্বাক্ষর বোঝায়, যা ইমেল/Google দিয়ে লগ ইন করলে এবং পলিমার্কেট আপনার জন্য প্রক্সি তৈরি করলে ব্যবহৃত হয়। sigType 2-এর ক্ষেত্রে POLY_FUNDER_ADDRESS এনভায়রনমেন্ট ভেরিয়েবল অবশ্যই PROXY ঠিকানা হতে হবে (পলিমার্কেট UI-তে দেখানো ঠিকানা), অন্তর্নিহিত EOA নয়। এটি একটি সাধারণ কনফিগারেশন বাগ।
পলিমার্কেট API কি কীভাবে তৈরি করব?
SDK ব্যবহার করুন। Python-এ: ওয়ালেট দিয়ে প্রমাণীকৃত হওয়ার পর client.create_api_key() ApiCreds ফেরত দেয়। Node.js-এ: @polymarket/clob-client-v2 client.createApiKey() এর মাধ্যমে অনুরূপ। ফেরত পাওয়া key/secret/passphrase আপনার .env-তে সংরক্ষণ করুন (কখনও git-এ কমিট করবেন না)।
পলিমার্কেট API কি কি প্রত্যাহারযোগ্য?
হ্যাঁ। SDK-এর মাধ্যমে যেকোনো সময় নতুন কি উদ্ভূত করতে পারেন; পুরোনো কি স্পষ্টভাবে client.deleteApiKey(creds) দিয়ে প্রত্যাহার না করা পর্যন্ত বৈধ থাকে। সেরা অনুশীলন হলো নিয়মিতভাবে কি ঘোরানো এবং কোনো আপসকৃত মেশিন স্পর্শ করা যেকোনো কি প্রত্যাহার করা।
পলিমার্কেট Magic Labs থেকে Privy-তে স্থানান্তরের সময় কী বদলেছে?
লগইন OTP কোড 3 অঙ্ক থেকে দীর্ঘ কোডে গেছে, সঙ্গে Privy-এর মাধ্যমে ডিভাইস-বাইন্ডিং যোগ হয়েছে। বটের জন্য বাস্তব পরিবর্তন হলো অথ-অনুষ্ঠান - SDK এর বেশিরভাগ বিমূর্ত করে দেয়। যদি আপনার বট হার্ড-কোডেড Magic Labs API এন্ডপয়েন্টের ওপর নির্ভর করত (দুর্লভ), তাহলে Privy প্রবাহে আপডেট করুন।
আমি কি কি একটি .env ফাইলে সংরক্ষণ করব?
একটি একক-VPS বটের জন্য - হ্যাঁ, যথাযথ ফাইল-অনুমতিসহ (chmod 600 .env, বট ব্যবহারকারীর মালিকানাধীন)। বহু-মেশিন সেটআপ বা প্রোডাকশন-মানের কাজের জন্য - একটি সিক্রেটস ম্যানেজারে যান (AWS Secrets Manager, Vault, doppler.com)। .env কখনও git-এ কমিট করবেন না, কখনও না।