36 میں سے 36واں باب

مختصر ورژن

28 اپریل، 2026 کو Polymarket نے Polygon پر اپنے تصفیہ کولیٹرل کو USDC.e (بریج کیا ہوا USDC ٹوکن، کنٹریکٹ 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) سے pUSD میں منتقل کر دیا، جو Polymarket کا جاری کردہ اسٹیبل کوائن ہے اور native USDC کے بدلے 1:1 ریڈی ایم کیا جا سکتا ہے۔ ویب ایپ کے ٹریڈرز نے کچھ نہیں کیا - بیلنس اور پوزیشنز snapshot block پر خودکار طور پر convert ہو گئیں۔ API اور bot operators کو اپ ڈیٹ کرنا ہوگا: ہر CLOB order signature کے اندر ضمانت (collateral) asset address بدل گیا، پرانے آرڈرز جو USDC.e کے خلاف sign کیے گئے تھے cancel ہو گئے، اور py-clob-client 0.40 یا اس سے نئی ورژن درکار ہے۔ یہ گائیڈ اس exact code, contract, اور approval تبدیلیوں سے گزرتی ہے جو ایک bot کو cutover کے دوران اور بعد میں چلتا رکھنے کے لیے درکار ہیں۔

آپ کیا سیکھیں گے: Polymarket نے USDC.e سے کیوں دوری اختیار کی، contract level پر کیا بدلا، py-clob-client اپ گریڈ کا exact راستہ، نئے collateral کے لیے allowances کو دوبارہ approve کیسے کرنا ہے، swap کے بعد اپنا balance کیسے verify کرنا ہے، اور legacy USDC.e dust کو کیسے handle کرنا ہے جو اب زیادہ تر accounts کے پاس موجود ہے۔
ضروریات: آپ کے پاس پہلے سے ایک working Polymarket account، Polygon contracts سے بنیادی واقفیت، اور ایک موجودہ bot یا manual API workflow ہونا چاہیے جو 28 اپریل، 2026 سے پہلے کا ہو۔ اگر آپ آج fresh شروع کر رہے ہیں، تو بس latest SDK install کریں اور Chapter Four پر چلے جائیں - آپ کو کبھی USDC.e کو چھونے کی ضرورت نہیں پڑے گی۔
01
پہلا باب

حصہ 1: تین اسٹیبل کوائن، ایک Polygon

مهاجرت سے پہلے، Polymarket کے دائرہ کار میں Polygon پر تین امریکی ڈالر اسٹیبل کوائن موجود تھے۔ ان کے درمیان فرق جاننا یہ سمجھنے کی پہلی منزل ہے کہ Polymarket نے مقام کیوں بدلا۔

ٹوکنجاری کنندہPolygon پر کنٹریکٹریزرو کی قسم
USDC.ePolygon PoS bridge0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Ethereum mainnet سے bridge کیا گیا
USDC (native)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359نیٹو، براہ راست Polygon پر جاری کیا گیا
pUSDPolymarket TreasurySee docs.polymarket.com/pusd1:1 backing native USDC سے، ماہانہ تصدیق

Polymarket نے ابتدا میں USDC.e کا انتخاب اس لیے کیا کیونکہ 2020 میں لانچ کے وقت Polygon پر USDC کی یہی غالب قسم تھی۔ بعد میں Circle نے Polygon پر براہ راست native USDC جاری کیا اور bridge شدہ variant کے بالآخر ختم کیے جانے کا اشارہ دیا۔ ہر مارکیٹ کو USDC.e میں settle کرنا جاری رکھنے سے Polymarket کو bridge کے اچانک بند ہونے کے long-tail risk کا سامنا رہا۔ Polymarket کے کنٹرول میں اسٹیبل کوائن کی طرف منتقلی یہ مسئلہ حل کرتی ہے اور مستقبل کی product features کھولتی ہے (مثلاً perps margin، vault deposits، cross-chain receipts) جو ایک ہی unit of account استعمال کرتی ہیں۔

02
باب دو

حصہ 2: pUSD کیا ہے (اور کیا نہیں ہے)

pUSD ایک معیاری Polygon (chain id 137) پر 6 decimals کے ساتھ ERC-20 ٹوکن ہے، جو USDC جیسی ہی precision رکھتا ہے۔ اسے صرف Polymarket Treasury contract ہی mint کر سکتا ہے اور اسے کسی بھی وقت native USDC کے بدلے 1:1 پر redeem کیا جا سکتا ہے، conversion پر کوئی fee نہیں ہوتی (network gas پھر بھی لاگو ہوتی ہے)۔ pUSD کی backing کے لیے reserve الگ رکھے گئے accounts میں موجود ہے اور ہر ماہ third-party attestation کے ساتھ report کی جاتی ہے۔

pUSD algorithmic اسٹیبل کوائن (stablecoin) نہیں ہے، crypto کے ساتھ over-collateralized نہیں ہے، اور اس پر yield بھی نہیں ملتا۔ اگر آپ pUSD کو Polymarket کے باہر hold کرتے ہیں، تو اسے native USDC کے لیے Polymarket-issued IOU سمجھیں - platform کے اندر مفید، demand پر redeemable، لیکن external wallet میں long-term رکھنے کا کوئی فائدہ نہیں۔

Audit and reserves: pUSD smart contract کا audit Polymarket کے standing auditors نے کیا ہے۔ Reserve attestation reports ہر ماہ docs.polymarket.com/pusd-audit پر published ہوتی ہیں۔ بڑی balances کو long-term hold کرنے سے پہلے دونوں کی verification کر لیں۔
03
باب سوم

حصہ 3: ویب ایپ ٹریڈرز نے کیا دیکھا

اگر آپ صرف polymarket.com کے ذریعے ٹریڈ کرتے ہیں، تو ہجرت نظر نہیں آئی۔ 28 اپریل 2026 کے اسنیپ شاٹ بلاک پر:

  • Polymarket پراکسی والٹ میں موجود ہر USDC.e بیلنس کو 1:1 کے تناسب سے خودکار طور پر pUSD میں تبدیل کر دیا گیا۔
  • کھلی پوزیشنز کی ڈالر میں وہی قیمت، وہی آؤٹکم اوڈز، اور وہی میعاد برقرار رہی۔ کنڈیشنل ٹوکن IDs نہیں بدلے۔
  • USDC.e میں درج آرام دہ آرڈرز اسنیپ شاٹ پر منسوخ کر دیے گئے۔ ہجرت کے بعد نئے آرڈرز خودکار طور پر pUSD پر سائن ہوتے ہیں۔
  • بیرونی والٹس میں نکلوانا USDC.e بھیجنے سے بدل کر نیٹو USDC بھیجنے میں تبدیل ہو گیا (یا درخواست پر، خام pUSD - زیادہ تر صارفین کو اس کی ضرورت کبھی پیش نہیں آتی)۔

نہ کسی دستخط، نہ کسی ٹرانزیکشن، اور نہ ہی کسی سیٹنگ میں تبدیلی کی ضرورت تھی۔ جو آرام دہ حدی آرڈرز آپ کے لیے اہم تھے انہیں ہجرت کے بعد دستی طور پر دوبارہ لگانا چاہیے؛ منسوخی ایک دفعہ کا واقعہ تھی۔

04
باب چار

حصہ 4: API اور Bot Operators - اہم تبدیلیاں

یہ وہ حصہ ہے جو اگر آپ نے اقدام نہ کیا تو ایک bot کو توڑ دے گا۔

آرڈر signature میں کیا بدلا: CLOB orders اب EIP-712 کے ذریعے sign ہوتے ہیں اور typed data کے حصے کے طور پر ضمانت (collateral) asset address کا حوالہ دیتے ہیں۔ migration سے پہلے، وہ address USDC.e تھا (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)۔ migration کے بعد، یہ pUSD ہے۔ پرانے address کے خلاف sign کیا گیا order CLOB پر signature verification میں fail ہو جائے گا اور "invalid میکر (maker) asset" یا "signature mismatch" error واپس کرے گا۔

py-clob-client کو اپگریڈ کریں

Polymarket نے cutover سے دو ہفتے پہلے py-clob-client 0.40.0 مکمل pUSD support کے ساتھ جاری کیا۔ 0.34.x line migration کے اگلے دن retire کر دی گئی۔

# pUSD-aware release پر bump کریں
pip install --upgrade "py-clob-client>=0.40.0"

# wired collateral asset verify کریں
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 delete کریں، latest constants module کے ساتھ reinstall کریں، اور اپنا test suite دوبارہ چلائیں۔

Allowances دوبارہ approve کریں

آپ کے Polymarket proxy wallet کو آپ کے trading account → CTF Exchange contract سے pUSD token کے لیے ERC-20 allowance کی ضرورت ہے۔ USDC.e کے لیے پرانا allowance اب بھی on-chain موجود ہے مگر بالکل بے کار ہے: CLOB اسے consume نہیں کرے گا۔ تازہ pUSD allowance کے بغیر، ہر order "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 accounts کے لیے POLY_PROXY
)
client.set_api_creds(client.create_or_derive_api_creds())

# ایک بار کے لیے: CTF Exchange contract کے لیے pUSD approve کریں
# (Helper py-clob-client 0.40 میں شامل کی گئی)
client.update_balance_allowance(asset_type="COLLATERAL")

API credentials ریفریش کریں

موجودہ API keys کام کرتی رہتی ہیں، لیکن اگر آپ نے 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
باب پانچ

حصہ 5: مائیگریشن کے بعد اپنے بوٹ کی تصدیق

کسی بھی سائزنگ منطق کو حقیقی رقم پر کھلا چھوڑنے سے پہلے یہ کم سے کم اسموک ٹیسٹ چلائیں:

# 1. پراکسی والٹ پر pUSD بیلنس کی تصدیق کریں
from py_clob_client.client import ClobClient
client = ClobClient(...)  # جیسا اوپر
balance = client.get_balance_allowance(params={"asset_type": "COLLATERAL"})
print("pUSD balance (raw):", balance["balance"])
print("Allowance to exchange:", balance["allowance"])

# 2. ٹچ سے کافی دور $1 کا حدی آرڈر لگائیں
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 نَوشنل
    side="BUY",
))
resp = client.post_order(order)
print(resp)

# 3. منسوخ کریں اور تصدیق کریں
client.cancel(order_id=resp["orderID"])

اگر تینوں کالز کامیاب ہو جائیں تو آپ کی وائرنگ درست ہے: SDK نے pUSD کے خلاف سائن کیا، allowance پہچان لیا گیا، اور آرڈر لیجر مستقل ہے۔ تدریجاً دوبارہ پیمانہ بڑھائیں۔

اپ گریڈ کا وقت احتیاط سے طے کریں: اگر آپ نے snapshot بلاک کے دوران بوٹ مسلسل چلایا، تو غالباً آپ کی لوکل آرڈر بک اسٹیٹ میں فرق آ گیا ہوگا۔ کسی بڑے venue تبدیلی کے بعد سائز quote کرنے سے پہلے ہمیشہ REST snapshots کے ساتھ reconciliation کریں۔
06
باب چھ

حصہ 6: عام غلطیاں اور ان کے حل

غلطی یا علامتوجہحل
signature verification failedآرڈر USDC.e EIP-712 ڈومین کے خلاف سائن کیا گیاpy-clob-client کو 0.40+ پر اپ گریڈ کریں؛ constants ماڈیول دوبارہ لوڈ کریں
INSUFFICIENT_ALLOWANCE ہر آرڈر پرآپ کے پراکسی سے CTF Exchange تک pUSD الاؤنس موجود نہیںupdate_balance_allowance(asset_type="COLLATERAL") ایک بار چلائیں
invalid maker assetہارڈ کوڈ کی گئی USDC.e ایڈریس اب بھی آپ کی کنفیگ میں موجود ہےکسی بھی ہارڈ کوڈ شدہ کولیٹرل ایڈریس کو SDK constant سے بدل دیں
والیٹ میں migration کے بعد USDC.e بیلنس > 0 دکھائی دیتا ہےتیسری پارٹی ٹرانسفر سے بچے ہوئے "dust" ٹوکنUSDC.e کو Circle کے CCTP پر native USDC میں واپس bridge کریں، یا اسے رہنے دیں
WebSocket reconnect خالی book پیدا کرتا ہےپرانے subscription نے snapshot سے پہلے والی stale market state استعمال کیلوکل cache ہٹا دیں، REST book دوبارہ fetch کریں، پھر resubscribe کریں
بیرونی والیٹ میں withdraw کرنے پر USDC کے بجائے pUSD دکھائی دیتا ہےآپ نے withdraw modal میں "USDC" کے بجائے "pUSD" منتخب کیا"USDC" منتخب کریں - bridge pUSD → native USDC کو 1:1 میں convert کرتا ہے
07
باب سات

حصہ 7: مشروط ٹوکنز، آرڈر آئی ڈیز، اور دوسری چیزیں جو نہیں بدلیں

ریفیکٹر کے دائرہ کار کو ایماندار رکھنے کے لیے، یہاں اُن شناخت کاروں کی فہرست ہے جو منتقلی کے دوران مستحکم رہتے ہیں:

  • Conditional Token contract (CTF): یکساں ایڈریس۔ آپ کی YES / NO ERC-1155 پوزیشنز جوں کی توں ہیں۔
  • condition_id and question_id: مارکیٹ پیرامیٹرز سے طے شدہ؛ کولیٹرل سویپ سے متاثر نہیں ہوتے۔
  • token_id (outcome): condition_id + outcome index سے اخذ شدہ؛ غیر تبدیل شدہ۔
  • Polymarket proxy wallet address: وہی ایڈریس؛ Gnosis Safe طرز کا وہی کوڈ۔
  • API key, API secret, API passphrase: اب بھی درست ہیں (روٹیٹ کرنے کی سفارش ہے؛ ضروری نہیں)۔
  • WebSocket schemas: یکساں؛ fill events میں نیا asset فیلڈ "USDC.e" کے بجائے "pUSD" پڑھتا ہے۔
  • Gamma and Data APIs: بغیر تصدیق کے، غیر تبدیل شدہ۔ انہوں نے کبھی ضمانت (collateral) token کا براہِ راست حوالہ نہیں دیا۔
ایک چھوٹی سی UI تبدیلی: Polymarket proxy wallet view اب بیلنس pUSD میں دکھاتی ہے، 1:1 USD لیبل کے ساتھ۔ Block explorers (PolygonScan, Polygonscan API) proxy wallet کی transaction history میں pUSD ERC-20 transfers دکھاتے ہیں۔ پرانے USDC.e transfers history میں اب بھی نظر آتے رہیں گے؛ آپ کے ایڈریس پر کچھ عرصہ تک بس دو ERC-20 token rows ہوں گی۔
08
باب آٹھ

حصہ 8: ٹیکس اور بک کیپنگ کے مضمرات

زیادہ تر دائرہ ہائے اختیار میں USDC.e کا pUSD میں خودکار تبادلہ 1:1 پر USD-پیگڈ اسٹیبل کوائنز کا ہم نوع تبادلہ سمجھا جاتا ہے اور اس سے کوئی قابلِ ٹیکس واقعہ پیدا نہیں ہوتا۔ آپ کی لاگت کی اساس اور ہولڈنگ مدت آگے منتقل ہو جاتی ہے۔

اس کے باوجود، دو بک کیپنگ امور توجہ کے مستحق ہیں:

  1. اپنی لیجر اسکیما کو اپ ڈیٹ کریں۔ کوئی بھی ٹیکس ٹول، SQLite لیجر، یا اکاؤنٹنٹ ایکسپورٹ جو Polygon ٹرانزیکشنز کو USDC.e کنٹریکٹ کے ذریعے فلٹر کرتا ہے، خاموشی سے مائیگریشن کے بعد کی ہر ٹرانزیکشن کو نظر انداز کر دے گا۔ pUSD کنٹریکٹ ایڈریس کو بطور عرف شامل کریں۔
  2. اسنیپ شاٹ تبادلے کی تشریح کریں۔ اگرچہ زیادہ تر نظاموں میں یہ ٹیکس کے قابل نہیں ہوتا، پھر بھی اپنے ریکارڈز میں تبادلہ واضح طور پر درج کریں: مقدار، بلاک، ٹائم اسٹیمپ، اور یہ نوٹ کہ یہ 1:1 اسٹیبل کوائن مائیگریشن ہے۔ اگر آپ کا دائرہ اختیار بعد میں اس کے بارے میں پوچھے، تو آپ کے پاس صاف آڈٹ ٹریل ہونی چاہیے۔

اسرائیلی ٹریڈرز کو ITA مخصوص رپورٹنگ کے لیے ٹیکس گائیڈ سے رجوع کرنا چاہیے؛ خود مائیگریشن معیاری ٹریٹمنٹ کو نہیں بدلتی لیکن کنٹریکٹ ایڈریس کی تبدیلی خودکار رپورٹنگ ٹولز کے لیے اہم ہے۔

09
باب نواں

حصہ 9: آپریٹرز سے پرو ٹپس جنہوں نے یہ تبدیلی خود جھیلی

  1. requirements.txt میں py-clob-client کو >=0.40,<0.50 پر pin کریں۔ 0.40 لائن pUSD آرڈرز کو درست طور پر sign کرنے کے لیے کم از کم ورژن ہے؛ اوپری حد pin کرنے سے مستقبل کی کسی breaking change سے حفاظت رہتی ہے۔
  2. کم volume والی window کے دوران allowances دوبارہ approve کریں۔ update_balance_allowance کال ایک Polygon transaction ہے؛ اسے تیزی سے market move کے دوران کرنا gas spike کو دعوت دینا ہے۔
  3. 28 اپریل سے پہلے اپنا USDC.e balance snapshot کریں۔ اگرچہ conversion خودکار ہے، لیکن verify ہونے والا pre-snapshot balance کسی بھی reconciliation issue کو dispute کرنے کا سب سے صاف طریقہ ہے۔
  4. snapshot سے پہلے resting orders خود manually cancel کریں۔ ویسے بھی venue نے انہیں cancel کرنا ہی تھا؛ خود ایسا کرنے سے آپ کو "system cancel" لائن کے بجائے ایک صاف ledger entry ملتی ہے۔
  5. stale dashboards پر نظر رکھیں۔ تیسرے فریق کے Polymarket dashboards (PolymarketAnalytics, Polynance, وغیرہ) کو pUSD events دوبارہ parse کرنے میں دو سے تین دن لگے۔ چند دن تک ممکن ہے آپ کے bot کا local DB عوامی dashboards سے آگے ہو۔
  6. USDC.e dust کو اپنی سہولت کے مطابق bridge کریں۔ زیادہ تر accounts میں پرانے fee rebates یا peer transfers سے چند سینٹ کا بچا ہوا USDC.e ہوتا ہے۔ Circle کے CCTP یا standard Polygon Portal bridge استعمال کریں - جلدی نہیں۔
  7. اپنے block-explorer alerts میں پرانا USDC.e address رکھیں۔ اگر migration کے بعد کبھی آپ کے proxy سے USDC.e میں کچھ بھی sweep ہوتا ہے، تو یہ ایک red flag ہے جس کی فوری investigation ضروری ہے۔

اگلا کیا ہے؟

اہم نکتہ

Polymarket pUSD مائیگریشن کسی بھی ایسے آپریٹر کے لیے جو پہلے سے Polymarket بوٹ چلا رہا ہو، کم خطرے والی ایک بار کی ریفیکٹرنگ ہے۔ py-clob-client کو 0.40+ تک اپ گریڈ کریں، pUSD الاؤنسز دوبارہ منظور کریں، $1 کا اسموک ٹیسٹ چلائیں، اور دوبارہ شروع کریں۔ نیچے موجود انفراسٹرکچر (CTF، condition IDs، token IDs، API keys) میں کوئی تبدیلی نہیں ہوئی، اس لیے اثر کا دائرہ چھوٹا ہے اور رول بیک کی صورتحال صاف ہے۔