অধ্যায় 36 of 36

সংক্ষিপ্ত সংস্করণ

28 এপ্রিল, 2026 তারিখে, Polymarket Polygon-এ তাদের settlement জামানত (collateral) USDC.e (ব্রিজ করা USDC টোকেন, contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) থেকে pUSD-তে স্থানান্তর করে, যা Polymarket-ইস্যুকৃত একটি স্টেবলকয়েন (stablecoin), native USDC-এর বিপরীতে 1:1 অনুপাতে redeemable। Web-app ট্রেডারদের কিছুই করতে হয়নি - snapshot block-এ balances এবং positions স্বয়ংক্রিয়ভাবে convert হয়েছে। API এবং bot operator-দের আপডেট করতে হবে: প্রতিটি CLOB order signature-এর ভেতরে থাকা collateral asset address বদলে গেছে, USDC.e-এর বিরুদ্ধে signed পুরনো order বাতিল হয়ে গেছে, এবং py-clob-client 0.40 বা তার নতুন সংস্করণ প্রয়োজন। এই গাইডে bot-কে cutover-এর সময় এবং পরে চালু রাখতে প্রয়োজনীয় exact code, contract, এবং approval পরিবর্তনগুলো দেখানো হয়েছে।

আপনি কী শিখবেন: কেন Polymarket USDC.e থেকে সরে এসেছে, contract পর্যায়ে কী বদলেছে, py-clob-client আপগ্রেডের সঠিক পথ, নতুন collateral-এর জন্য allowance কীভাবে re-approve করবেন, swap-এর পর আপনার balance কীভাবে verify করবেন, এবং বেশিরভাগ account এখন যে legacy USDC.e dust ধরে রেখেছে তা কীভাবে handle করবেন।
পূর্বশর্ত: আপনার আগে থেকেই একটি কাজ করা Polymarket account, Polygon contract সম্পর্কে প্রাথমিক ধারণা, এবং April 28, 2026-এর আগের একটি existing bot বা manual API workflow থাকা উচিত। আপনি যদি আজ একেবারে নতুন করে শুরু করেন, তাহলে শুধু latest SDK install করুন এবং Chapter Four-এ চলে যান - তখন আর USDC.e-তে কখনও হাত দিতে হবে না।
01
অধ্যায় এক

অংশ ১: তিনটি স্টেবলকয়েন, একটি Polygon

মাইগ্রেশনের আগে, Polygon-এ Polymarket-এর পরিমণ্ডলে তিনটি USD স্টেবলকয়েন ছিল। পার্থক্যটি জানা হলো Polymarket কেন ভেন্যু বদলেছে তা বোঝার প্রথম ধাপ।

টোকেনইস্যুকারীPolygon-এ কনট্র্যাক্টরিজার্ভের ধরন
USDC.ePolygon PoS bridge0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Ethereum mainnet থেকে ব্রিজ করা
USDC (native)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Native, সরাসরি Polygon-এ ইস্যু করা
pUSDPolymarket TreasurySee docs.polymarket.com/pusdnative USDC দ্বারা 1:1 সমর্থিত, মাসিক attestation

Polymarket শুরুতে USDC.e বেছে নিয়েছিল, কারণ 2020 সালে লঞ্চের সময় Polygon-এ সেটিই ছিল প্রধান USDC ভ্যারিয়েন্ট। পরে Circle native USDC সরাসরি Polygon-এ ইস্যু করে এবং ব্রিজ করা ভ্যারিয়েন্টের ভবিষ্যতে ধীরে ধীরে বন্ধ হয়ে যাওয়ার ইঙ্গিত দেয়। প্রতিটি মার্কেট USDC.e-তে সেটল করা চালিয়ে গেলে Polymarket হঠাৎ ব্রিজ বন্ধ হয়ে যাওয়ার দীর্ঘমেয়াদি ঝুঁকির মুখে পড়ত। Polymarket-নিয়ন্ত্রিত স্টেবলকয়েনে মাইগ্রেট করলে সেই ঝুঁকি দূর হয় এবং ভবিষ্যতের প্রোডাক্ট ফিচারগুলোও উন্মুক্ত হয় (যেমন, perps margin, vault deposits, cross-chain receipts), যেগুলো একই অ্যাকাউন্টিং ইউনিট ভাগ করে নেয়।

02
দ্বিতীয় অধ্যায়

অংশ 2: pUSD কী (এবং কী নয়)

pUSD হলো একটি স্ট্যান্ডার্ড Polygon-এ ERC-20 টোকেন (chain id 137), 6 দশমিকসহ, USDC-এর মতোই একই নির্ভুলতা। এটি শুধুমাত্র Polymarket Treasury কনট্র্যাক্ট দ্বারা মিন্ট করা যায় এবং যেকোনো সময় নেটিভ USDC-এর বিপরীতে 1:1 অনুপাতে রিডিম করা যায়, কনভার্সনে কোনো ফি নেই (নেটওয়ার্ক গ্যাস অবশ্যই প্রযোজ্য)। pUSD-কে সমর্থনকারী রিজার্ভ সেগ্রিগেটেড অ্যাকাউন্টে রাখা হয় এবং তৃতীয় পক্ষের অ্যাটেস্টেশনসহ মাসিকভাবে রিপোর্ট করা হয়।

pUSD কোনো অ্যালগরিদমিক স্টেবলকয়েন নয়, ক্রিপ্টো দিয়ে অতিরিক্ত-কল্যাটারালাইজড নয়, এবং এতে কোনো ইয়িল্ড নেই। আপনি যদি Polymarket-এর বাইরে pUSD রাখেন, তাহলে এটিকে নেটিভ USDC-এর জন্য Polymarket-ইস্যু করা একটি IOU হিসেবে ভাবা উচিত - প্ল্যাটফর্মের ভেতরে এটি কাজে লাগে, চাহিদামতো রিডিম করা যায়, কিন্তু বাহ্যিক ওয়ালেটে দীর্ঘমেয়াদে ধরে রাখার কোনো সুবিধা নেই।

অডিট এবং রিজার্ভ: pUSD স্মার্ট কনট্র্যাক্টটি Polymarket-এর স্থায়ী অডিটরদের দ্বারা অডিট করা হয়েছে। রিজার্ভ অ্যাটেস্টেশন রিপোর্ট প্রতি মাসে docs.polymarket.com/pusd-audit-এ প্রকাশিত হয়। বড় ব্যালেন্স দীর্ঘমেয়াদে ধরে রাখার আগে দুটোই যাচাই করুন।
03
তৃতীয় অধ্যায়

পার্ট 3: ওয়েব-অ্যাপ ট্রেডাররা যা দেখেছিলেন

আপনি যদি শুধুমাত্র polymarket.com-এর মাধ্যমে ট্রেড করেন, তাহলে মাইগ্রেশনটি ছিল অদৃশ্য। 2026 সালের 28 এপ্রিলের স্ন্যাপশট ব্লকে:

  • Polymarket proxy wallet-এ থাকা প্রতিটি USDC.e ব্যালান্স 1:1 অনুপাতে তাৎক্ষণিকভাবে pUSD-তে রূপান্তরিত হয়।
  • খোলা পজিশনগুলোর একই ডলার মান, একই আউটকাম odds, এবং একই expiry বজায় থাকে। conditional token IDs পরিবর্তন হয়নি।
  • USDC.e-তে denominated resting orders স্ন্যাপশটে বাতিল করা হয়। মাইগ্রেশন-পরবর্তী নতুন অর্ডারগুলো স্বয়ংক্রিয়ভাবে pUSD-এর বিরুদ্ধে sign করে।
  • বাহ্যিক ওয়ালেটে withdrawal USDC.e পাঠানোর বদলে native USDC পাঠাতে স্যুইচ করে (অথবা, অনুরোধ করলে, raw pUSD - অধিকাংশ ব্যবহারকারীর কখনও এর প্রয়োজন হয় না)।

কোনো signature, transaction, বা settings পরিবর্তনের প্রয়োজন ছিল না। আপনার জন্য গুরুত্বপূর্ণ থাকা resting লিমিট অর্ডার (limit order)-গুলো মাইগ্রেশনের পরে ম্যানুয়ালি আবার place করা উচিত; cancellation ছিল একবারের ঘটনা।

04
চতুর্থ অধ্যায়

অংশ ৪: API এবং Bot অপারেটর - গুরুত্বপূর্ণ পরিবর্তন

এটিই সেই অংশ, যা আপনি পদক্ষেপ না নিলে একটি bot ভেঙে দেবে।

অর্ডার সিগনেচারে কী বদলেছে: CLOB অর্ডারগুলো EIP-712 এর মাধ্যমে সাইন করা হয় এবং typed data-এর অংশ হিসেবে জামানত (collateral) asset address-কে রেফারেন্স করে। মাইগ্রেশনের আগে, সেই address ছিল USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)। মাইগ্রেশনের পরে, সেটি pUSD। পুরোনো address-এর বিরুদ্ধে সাইন করা কোনো অর্ডার CLOB-এ signature verification ব্যর্থ করবে এবং "invalid মেকার (maker) asset" বা "signature mismatch" error ফেরত দেবে।

py-clob-client আপগ্রেড করুন

Polymarket কাটওভারের দুই সপ্তাহ আগে সম্পূর্ণ pUSD সাপোর্টসহ py-clob-client 0.40.0 প্রকাশ করেছে। মাইগ্রেশনের পরের দিন 0.34.x line অবসর নেওয়া হয়েছে।

# pUSD-সচেতন release-এ bump করুন
pip install --upgrade "py-clob-client>=0.40.0"

# wired collateral asset যাচাই করুন
python -c "from py_clob_client.constants import POLYGON; \
print('pUSD address:', POLYGON.get('collateral'))"

নতুন SDK startup-এর সময় chain configuration থেকে collateral address টেনে আনে, তাই আপনাকে কিছু hard-code করতে হবে না। আপনি যদি পুরোনো কোনো version fork করে থাকেন বা pin করে থাকেন, সবচেয়ে নিরাপদ উপায় হলো lockfile মুছে ফেলা, latest constants module দিয়ে reinstall করা, এবং আপনার test suite আবার চালানো।

Allowance পুনরায় approve করুন

আপনার Polymarket proxy wallet-এ আপনার trading account → CTF Exchange contract থেকে pUSD token-এর জন্য একটি ERC-20 allowance লাগবে। USDC.e-এর পুরোনো allowance এখনও on-chain আছে, কিন্তু সম্পূর্ণ অকেজো: CLOB সেটি ব্যবহার করবে না। নতুন pUSD allowance ছাড়া, প্রতিটি অর্ডার "INSUFFICIENT_ALLOWANCE" ফেরত দেয়।

from py_clob_client.client import ClobClient

client = ClobClient(
    host="https://clob.polymarket.com",
    chain_id=137,
    key=os.environ["POLY_PRIVATE_KEY"],
    funder=os.environ["POLY_FUNDER"],
    signature_type=1,  # Magic-link অ্যাকাউন্টের জন্য POLY_PROXY
)
client.set_api_creds(client.create_or_derive_api_creds())

# একবারই: CTF Exchange contract-এর জন্য pUSD approve করুন
# (সহায়ক ফাংশন py-clob-client 0.40-এ যোগ করা হয়েছে)
client.update_balance_allowance(asset_type="COLLATERAL")

API credentials রিফ্রেশ করুন

বিদ্যমান API key কাজ করতে থাকবে, কিন্তু আপনি যদি April 1-এর আগে credentials derive করে থাকেন, সতর্কতাস্বরূপ সেগুলো rotate করা উচিত: L1 ECDSA signature এখন এমন একটি domain-এর সঙ্গে bind হয়, যাতে নতুন collateral address অন্তর্ভুক্ত আছে। সবচেয়ে সহজ পথ:

creds = client.create_or_derive_api_creds()  # idempotent re-derive
client.set_api_creds(creds)

# আপনার .env-এ সংরক্ষণ করুন
print(creds.api_key, creds.api_secret, creds.api_passphrase)
05
পঞ্চম অধ্যায়

অংশ ৫: মাইগ্রেশনের পর আপনার বট যাচাই করা

আসল টাকার ওপর কোনো sizing logic ছেড়ে দেওয়ার আগে এই ন্যূনতম smoke test চালান:

# 1. proxy wallet-এ pUSD balance নিশ্চিত করুন
from py_clob_client.client import ClobClient
client = ClobClient(...)  # as above
balance = client.get_balance_allowance(params={"asset_type": "COLLATERAL"})
print("pUSD balance (raw):", balance["balance"])
print("Allowance to exchange:", balance["allowance"])

# 2. touch-এর অনেক বাইরে $1 limit order দিন
from py_clob_client.clob_types import OrderArgs
order = client.create_order(OrderArgs(
    token_id=test_token_id,
    price=0.05,        # বাজারের কাছাকাছি নয়
    size=20,           # $0.05-এ $1 notional
    side="BUY",
))
resp = client.post_order(order)
print(resp)

# 3. Cancel করুন এবং নিশ্চিত করুন
client.cancel(order_id=resp["orderID"])

এই তিনটি call-ই যদি সফল হয়, তাহলে আপনার wiring ঠিক আছে: SDK pUSD-এর বিপরীতে signed করেছে, allowance স্বীকৃত হয়েছে, এবং order ledger সামঞ্জস্যপূর্ণ। ধীরে ধীরে আবার scale up করুন।

upgrade-এর সময় সতর্কভাবে নির্ধারণ করুন: যদি আপনি snapshot block-এর মাধ্যমে bot অবিরত চালিয়ে থাকেন, তাহলে আপনার local অর্ডার বুক (order book) state সম্ভবত diverge করেছে। বড় venue change-এর পরে size quote করার আগে সবসময় REST snapshots-এর সঙ্গে reconcile করুন।
06
অধ্যায় ছয়

অংশ ৬: সাধারণ ত্রুটি ও সমাধান

ত্রুটি বা উপসর্গকারণসমাধান
signature verification failedঅর্ডারটি USDC.e EIP-712 ডোমেইনের বিরুদ্ধে সাইন করা হয়েছেpy-clob-client-কে 0.40+ এ আপগ্রেড করুন; constants মডিউল রিলোড করুন
প্রতিটি অর্ডারে INSUFFICIENT_ALLOWANCEআপনার proxy থেকে CTF Exchange-এ কোনো pUSD allowance নেইupdate_balance_allowance(asset_type="COLLATERAL") একবার চালান
invalid maker assetহার্ড-কোড করা USDC.e address এখনও আপনার config-এ আছেযেকোনো হার্ড-কোড করা collateral address-কে SDK constant দিয়ে প্রতিস্থাপন করুন
ওয়ালেটে migration-এর পর USDC.e balance > 0 দেখায়তৃতীয়-পক্ষের transfer থেকে অবশিষ্ট "dust" token পড়ে আছেCircle-এর CCTP-তে USDC.e-কে native USDC-তে bridge করুন, অথবা সেটি রেখে দিন
WebSocket reconnect করলে empty book তৈরি হয়পুরনো subscription snapshot-এর আগের stale market state ব্যবহার করেছেlocal cache বাদ দিন, REST book আবার fetch করুন, তারপর resubscribe করুন
external wallet-এ withdraw করলে USDC-এর বদলে pUSD দেখায়আপনি withdraw modal-এ "USDC"-এর বদলে "pUSD" নির্বাচন করেছেন"USDC" বাছুন - bridge pUSD → native USDC 1:1 অনুপাতে convert করে
07
অধ্যায় সাত

পর্ব 7: কন্ডিশনাল টোকেন, অর্ডার আইডি, এবং অন্য যেসব জিনিস পরিবর্তিত হয়নি

রিফ্যাক্টরের পরিসর সৎভাবে বোঝাতে, এখানে সেই শনাক্তকারীগুলোর তালিকা দেওয়া হলো যেগুলো মাইগ্রেশনের পুরোটা জুড়ে স্থিতিশীল রয়েছে:

  • কন্ডিশনাল টোকেন কনট্র্যাক্ট (CTF): একই ঠিকানা। আপনার YES / NO ERC-1155 পজিশন অপরিবর্তিত আছে।
  • condition_id এবং question_id: মার্কেট প্যারামিটার থেকে নির্ধারিত; কোল্যাটারাল সোয়াপের কারণে প্রভাবিত হয়নি।
  • token_id (outcome): condition_id + outcome index থেকে নির্ধারিত; অপরিবর্তিত।
  • Polymarket proxy wallet address: একই ঠিকানা; একই Gnosis Safe-style কোড।
  • API key, API secret, API passphrase: এখনও বৈধ (রোটেট করার সুপারিশ করা হয়; বাধ্যতামূলক নয়)।
  • WebSocket schemas: একই; নতুন asset ফিল্ড fill ইভেন্টে "USDC.e" এর বদলে "pUSD" পড়ে।
  • Gamma and Data APIs: আনঅথেনটিকেটেড, অপরিবর্তিত। তারা কখনও সরাসরি কোল্যাটারাল টোকেনকে রেফার করেনি।
একটি ছোট UI পরিবর্তন: Polymarket proxy wallet ভিউ এখন pUSD-এ ব্যালান্স দেখায়, 1:1 USD লেবেলসহ। ব্লক এক্সপ্লোরারগুলো (PolygonScan, Polygonscan API) proxy wallet-এর ট্রানজ্যাকশন হিস্টরিতে pUSD ERC-20 ট্রান্সফার দেখায়। পুরনো USDC.e ট্রান্সফারগুলো হিস্টরিতেই দৃশ্যমান থাকে; আপনার ঠিকানায় কিছু সময়ের জন্য কেবল দুটি ERC-20 টোকেন সারি থাকবে।
08
অধ্যায় আট

পার্ট 8: কর এবং হিসাবরক্ষণগত প্রভাব

বেশিরভাগ বিচারব্যবস্থায় USDC.e থেকে pUSD-এ স্বয়ংক্রিয় কনভার্সন হলো USD-পেগড স্টেবলকয়েনের 1:1 অনুপাতে like-kind swap এবং এতে কোনো করযোগ্য ঘটনা ঘটে না। আপনার cost basis এবং holding period অপরিবর্তিতভাবে বহাল থাকে।

তবে, দুটি হিসাবরক্ষণ বিষয় খেয়াল রাখা উচিত:

  1. আপনার ledger schema আপডেট করুন। যে কোনো tax tool, SQLite ledger, বা accountant export যা Polygon লেনদেনগুলোকে USDC.e contract দিয়ে filter করে, তা migration-এর পরের প্রতিটি transaction নীরবে miss করবে। pUSD contract address-টিকে একটি alias হিসেবে যোগ করুন।
  2. snapshot conversion annotate করুন। যদিও বেশিরভাগ regime-এ এটি করযোগ্য নয়, তবু আপনার records-এ conversion-টি স্পষ্টভাবে log করুন: amount, block, timestamp, এবং এটি 1:1 স্টেবলকয়েন (stablecoin) migration - এই note। আপনার বিচারব্যবস্থা পরে যদি এটি নিয়ে প্রশ্ন তোলে, আপনি একটি পরিষ্কার audit trail চান।

ইসরায়েলি traders-দের ITA-specific reporting-এর জন্য Tax Guide পরামর্শ করা উচিত; migration নিজে standard treatment বদলায় না, তবে automated reporting tools-এর জন্য contract-address পরিবর্তনটি গুরুত্বপূর্ণ।

09
নবম অধ্যায়

পার্ট 9: সুইচের অভিজ্ঞতা-থাকা অপারেটরদের প্রো টিপস

  1. >=0.40,<0.50 এ requirements.txt-এ py-clob-client পিন করুন। 0.40 লাইনটি হলো ন্যূনতম সংস্করণ যা pUSD অর্ডার সঠিকভাবে সাইন করে; উপরের সীমা পিন করা ভবিষ্যতের কোনো ব্রেকিং চেঞ্জ থেকে সুরক্ষা দেয়।
  2. লো-ভলিউম উইন্ডোতে আবার allowance re-approve করুন। update_balance_allowance কলটি একটিই Polygon ট্রানজ্যাকশন; দ্রুত বাজারের ওঠানামার সময় এটি করা মানে গ্যাস স্পাইক ডেকে আনা।
  3. 28 এপ্রিলের আগে আপনার USDC.e ব্যালান্সের snapshot নিন। কনভার্সন স্বয়ংক্রিয় হলেও, যাচাইযোগ্য প্রি-snapshot ব্যালান্সই যেকোনো reconciliation ইস্যু dispute করার সবচেয়ে পরিষ্কার উপায়।
  4. snapshot-এর আগে resting order গুলো ম্যানুয়ালি cancel করুন। শেষ পর্যন্ত venue-ই এগুলো cancel করত; নিজে করলে "system cancel" লাইনের বদলে আপনার কাছে একটি পরিষ্কার লেজার এন্ট্রি থাকে।
  5. পুরনো dashboard-এর দিকে নজর রাখুন। তৃতীয়-পক্ষের Polymarket dashboard (PolymarketAnalytics, Polynance, ইত্যাদি) pUSD ইভেন্ট re-parse করতে দুই থেকে তিন দিন নিয়েছিল। আপনার bot-এর local DB কয়েকদিনের জন্য public dashboard-এর চেয়ে এগিয়ে থাকতে পারে।
  6. আপনার নিজের সুবিধামতো USDC.e dust bridge করুন। বেশিরভাগ অ্যাকাউন্টে পুরনো fee rebate বা peer transfer থেকে কয়েক সেন্টের USDC.e পড়ে থাকে। Circle-এর CCTP বা standard Polygon Portal bridge ব্যবহার করুন - তাড়াহুড়োর কিছু নেই।
  7. block-explorer alert-এ পুরনো USDC.e addressটি রেখে দিন। migration-এর পর যদি কখনও USDC.e-তে আপনার proxy থেকে কিছু sweep হয়, তবে সেটি তাৎক্ষণিকভাবে তদন্ত করার মতো একটি red flag।

এরপর কী?

মূল কথা

Polymarket pUSD মাইগ্রেশন হলো যেকোনো অপারেটরের জন্য একটি কম-ঝুঁকির, একবারের রিফ্যাক্টর, যে ইতিমধ্যেই একটি Polymarket বট চালায়। py-clob-client-কে 0.40+ এ আপগ্রেড করুন, pUSD অ্যালাউয়েন্স আবার অনুমোদন করুন, একটি $1 স্মোক টেস্ট চালান, তারপর আবার শুরু করুন। নিচের অবকাঠামোটি (CTF, কন্ডিশন ID, টোকেন ID, API কী) বদলায়নি, তাই পরিবর্তনের পরিধি ছোট এবং রোলব্যাকের গল্পও পরিষ্কার।