الفصل 36 من 36

النسخة المختصرة

في 28 أبريل 2026، نقلت Polymarket أصل التسوية الخاص بها على Polygon من USDC.e (رمز USDC المُجَسَّر، العقد 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) إلى pUSD، وهي عملة مستقرة (stablecoin) أصدرتها Polymarket وقابلة للاسترداد بنسبة 1:1 مقابل USDC الأصلي. لم يكن على متداولي تطبيق الويب فعل أي شيء - فقد تحوّلت الأرصدة والمراكز تلقائياً عند بلوك اللقطة. أما مشغلو الـ API والبوتات فعليهم التحديث: عنوان أصل التسوية داخل كل توقيع أمر CLOB قد تغيّر، والأوامر القديمة الموقّعة مقابل USDC.e تم إلغاؤها، ويُشترط py-clob-client 0.40 أو أحدث. يرشدك هذا الدليل عبر التغييرات الدقيقة في الكود والعقد والتفويضات اللازمة لإبقاء البوت يعمل قبل وأثناء وبعد التحوّل.

ما الذي ستتعلمه: لماذا تخلّت Polymarket عن USDC.e، وما الذي تغيّر على مستوى العقد، ومسار ترقية py-clob-client بالضبط، وكيف تعيد منح أذونات الإنفاق لأصل التسوية الجديد، وكيف تتحقق من رصيدك بعد التبادل، وكيف تتعامل مع غبار USDC.e المتبقي في معظم الحسابات.
المتطلبات المسبقة: يفترض أن يكون لديك بالفعل حساب Polymarket يعمل، ومعرفة أساسية بعقود Polygon، وبوت قائم أو سير عمل يدوي عبر الـ API يسبق 28 أبريل 2026. إذا كنت تبدأ من الصفر اليوم، فقط ثبّت أحدث SDK وانتقل مباشرة إلى الفصل الرابع - لن تحتاج أبداً لمسّ USDC.e.
01
الفصل الأول

الجزء 1: ثلاث عملات مستقرة، شبكة Polygon واحدة

قبل الترحيل، كانت هناك ثلاث عملات مستقرة مرتبطة بالدولار في مدار Polymarket على Polygon. معرفة الفرق بينها هي الخطوة الأولى لفهم سبب تبديل Polymarket لأصل التسوية.

الرمزالمُصدِرالعقد على Polygonنوع الاحتياطي
USDC.eجسر Polygon PoS0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174مُجَسَّر من شبكة Ethereum الرئيسية
USDC (أصلي)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359أصلي، يُصدَر مباشرة على Polygon
pUSDعقد الضمان الخاص بـ Polymarketراجع docs.polymarket.com/concepts/pusdمدعوم 1:1 بـ USDC، مُنفَّذ على السلسلة، قابل للاسترداد في أي وقت

اختارت Polymarket في الأصل USDC.e لأنه كان النوع المهيمن من USDC على Polygon عند الإطلاق في 2020. لاحقاً، أصدرت Circle USDC أصلي مباشرة على Polygon وأعلنت عن إيقاف تدريجي للنسخة المُجَسَّرة. الاستمرار بالتسوية بـ USDC.e كان سيُعرّض Polymarket لخطر ذيل بسبب انسحاب مفاجئ للجسر. الانتقال إلى عملة مستقرة (stablecoin) تسيطر عليها Polymarket يحل هذا، ويفتح الباب لميزات منتجات مستقبلية (مثل الهامش للعقود الدائمة، وودائع الخزائن، وإيصالات عبر السلاسل) التي تتشارك جميعها وحدة الحساب نفسها.

02
الفصل الثاني

الجزء 2: ما هو pUSD (وما ليس به)

pUSD هو رمز ERC-20 قياسي على Polygon (chain id 137) بست خانات عشرية، بنفس دقة USDC. لا يُسَكّ إلا عند تغليف USDC عبر عقد الضمان الخاص بـ Polymarket، ويمكن استرداده 1:1 مقابل USDC الأصلي في أي وقت، دون رسوم على التحويل (تظل رسوم غاز الشبكة سارية). الدعم مُنفَّذ على السلسلة: عقد التغليف يحتفظ بـ USDC الأساسي وهو نفسه آلية الاسترداد. لا يوجد وصيّ خارج السلسلة، ولا ربط خوارزمي، ولا احتياطي جزئي.

pUSD ليس عملة مستقرة (stablecoin) خوارزمية، ولا مفرط الضمان بالعملات الرقمية، ولا يولّد عائداً. إذا احتفظت بـ pUSD خارج Polymarket، فيجب أن تفكر فيه على أنه سند دين أصدرته Polymarket مقابل USDC الأصلي - مفيد داخل المنصة، قابل للاسترداد عند الطلب، لكن لا فائدة حقيقية من الاحتفاظ به طويلاً في محفظة خارجية.

الدعم والاسترداد: دعم pUSD مُنفَّذ بواسطة عقده الذكي على Polygon - العقد يحتفظ بـ USDC الأساسي ويتيح لك فك التغليف والعودة إلى USDC الأصلي بنسبة 1:1 في أي وقت. لا يوجد ربط خوارزمي ولا احتياطي جزئي، لذا يمكن التحقق من الاحتياطي مباشرة على السلسلة بدلاً من شهادة خارج السلسلة. اقرأ عن الآلية على docs.polymarket.com/concepts/pusd.
03
الفصل الثالث

الجزء 3: ما رآه متداولو تطبيق الويب

إذا كنت تتداول فقط عبر polymarket.com، فقد كان الترحيل غير مرئي. عند بلوك اللقطة في 28 أبريل 2026:

  • أي رصيد USDC.e موجود في محفظة وكيل Polymarket تحوّل ذرّياً إلى pUSD بنسبة 1:1.
  • احتفظت المراكز المفتوحة بنفس القيمة الدولارية، ونفس احتمالات النتائج، ونفس تاريخ الانتهاء. لم تتغيّر معرّفات الرموز الشرطية.
  • أُلغيت الأوامر المعلّقة المسعّرة بـ USDC.e عند اللقطة. تُوقَّع الأوامر الجديدة بعد الترحيل تلقائياً بـ pUSD.
  • تحوّلت عمليات السحب إلى محافظ خارجية من إرسال USDC.e إلى إرسال USDC أصلي (أو، إذا طُلب صراحة، pUSD خام - معظم المستخدمين لن يحتاجوا لذلك أبداً).

لم تكن هناك حاجة لأي توقيعات أو معاملات أو تغييرات في الإعدادات. الأوامر المحدّدة المعلّقة التي تهمك يجب إعادة وضعها يدوياً بعد الترحيل؛ كان الإلغاء حدثاً لمرة واحدة.

04
الفصل الرابع

الجزء 4: مشغلو API والبوتات - التغييرات الحرجة

هذا هو الجزء الذي سيُعطّل بوتاً إن لم تتصرّف.

ما تغيّر في توقيع الأمر: تُوقَّع أوامر CLOB باستخدام EIP-712 وتشير إلى عنوان أصل التسوية كجزء من البيانات المُكتَبة. قبل الترحيل، كان هذا العنوان USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174). بعد الترحيل، أصبح pUSD. الأمر الموقَّع مقابل العنوان القديم سيفشل في التحقق من التوقيع في CLOB ويُرجع خطأ "invalid maker asset" أو "signature mismatch".

ترقية py-clob-client

أصدرت Polymarket py-clob-client 0.40.0 قبل أسبوعين من التبديل بدعم كامل لـ pUSD. أُهملت سلسلة 0.34.x في اليوم التالي للترحيل.

# الترقية إلى إصدار متوافق مع pUSD
pip install --upgrade "py-clob-client>=0.40.0"

# تحقق من أصل التسوية المُكوَّن
python -c "from py_clob_client.constants import POLYGON; \
print('عنوان pUSD:', POLYGON.get('collateral'))"

الـ SDK الجديد يسحب عنوان أصل التسوية من تكوين الشبكة عند البدء، فلا حاجة لتثبيت أي شيء في الكود. إذا قمت بفصل النسخة (fork) أو تثبيت إصدار قديم، فأسلم طريق هو حذف ملف القفل (lockfile)، وإعادة التثبيت بأحدث وحدة constants، وإعادة تشغيل مجموعة اختباراتك.

إعادة منح أذونات الإنفاق

تحتاج محفظة وكيل Polymarket إلى تفويض ERC-20 من حساب التداول الخاص بك إلى عقد CTF Exchange لرمز pUSD. التفويض القديم لـ USDC.e ما زال مسجلاً على السلسلة لكنه عديم الفائدة تماماً: لن يستهلكه CLOB. بدون تفويض جديد لـ pUSD، كل أمر يُرجِع "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,  # POLY_PROXY لحسابات Magic-link
)
client.set_api_creds(client.create_or_derive_api_creds())

# مرة واحدة: السماح لـ pUSD بعقد CTF Exchange
# (دالة مساعدة أُضيفت في py-clob-client 0.40)
client.update_balance_allowance(asset_type="COLLATERAL")

تحديث أوراق اعتماد الـ API

تستمر مفاتيح الـ API الحالية بالعمل، لكن إذا اشتققت أوراق الاعتماد قبل 1 أبريل فعليك تدويرها كإجراء احترازي: توقيع ECDSA للطبقة الأولى مرتبط الآن بمجال يتضمّن عنوان أصل التسوية الجديد. أبسط مسار:

creds = client.create_or_derive_api_creds()  # إعادة اشتقاق idempotent
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["balance"])
print("التفويض للـ exchange:", balance["allowance"])

# 2. ضع أمر limit بقيمة دولار واحد بعيداً عن سعر اللمس
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
    side="BUY",
))
resp = client.post_order(order)
print(resp)

# 3. ألغِ وأكِّد
client.cancel(order_id=resp["orderID"])

إذا نجحت الاستدعاءات الثلاثة، فالاتصال سليم: وقّع الـ SDK مقابل pUSD، التفويض معترَف به، وكتاب الأوامر متّسق. الآن قم بالتوسعة تدريجياً.

وقّت الترقية بحذر: إذا شغّلت البوت بشكل مستمر عبر بلوك اللقطة، فعلى الأرجح انحرفت الحالة المحلية لكتاب الأوامر. وفّقها دائماً مع لقطات REST بعد تحوّل سوقي كبير قبل تقديم تسعير بأحجام.
06
الفصل السادس

الجزء 6: الأخطاء الشائعة والحلول

الخطأ أو العَرَضالسببالحل
signature verification failedأمر موقَّع مقابل مجال EIP-712 لـ USDC.eرقّ py-clob-client إلى 0.40+؛ أعد تحميل وحدة constants
INSUFFICIENT_ALLOWANCE في كل أمرلا يوجد تفويض pUSD من وكيلك إلى CTF Exchangeشغّل update_balance_allowance(asset_type="COLLATERAL") مرة واحدة
invalid maker assetعنوان USDC.e مثبَّت في الكود ما زال في تكوينكاستبدل أي عنوان collateral مثبَّت في الكود بثابت SDK
المحفظة تُظهر رصيد USDC.e > 0 بعد الترحيلرموز "غبار" متبقية من تحويل طرف ثالثاعبر USDC.e عبر CCTP من Circle إلى USDC الأصلي، أو اتركها
إعادة اتصال WebSocket تُعيد كتاباً فارغاًالاشتراك القديم استخدم حالة سوق قديمة قبل اللقطةامسح الكاش المحلي، أعد جلب الكتاب عبر REST، ثم أعد الاشتراك
السحب لمحفظة خارجية يُظهر pUSD بدلاً من USDCاخترت "pUSD" بدلاً من "USDC" في نافذة السحباختر "USDC" - الجسر يحوّل pUSD ← USDC أصلي بنسبة 1:1
07
الفصل السابع

الجزء 7: الرموز الشرطية، معرّفات الأوامر، وأشياء أخرى لم تتغيّر

للحفاظ على نطاق إعادة الهيكلة صادقاً، إليك قائمة المعرّفات التي تظل مستقرة عبر الترحيل:

  • عقد Conditional Token (CTF): العنوان نفسه. مراكز ERC-1155 YES / NO لم تُمَس.
  • condition_id و question_id: حتميان من معاملات السوق؛ لم يتأثرا بتبديل أصل التسوية.
  • token_id (النتيجة): مشتق من condition_id + فهرس النتيجة؛ لا تغيير.
  • عنوان محفظة وكيل Polymarket: العنوان نفسه؛ نفس كود نمط Gnosis Safe.
  • مفتاح API، سرّ API، عبارة مرور API: تبقى صالحة (يُنصح بتدويرها؛ ليس إلزامياً).
  • مخططات WebSocket: متطابقة؛ يعرض حقل asset الجديد "pUSD" بدلاً من "USDC.e" في أحداث التنفيذ.
  • واجهتا Gamma و Data: بلا مصادقة، بلا تغيير. لم يشيرا أبداً مباشرة إلى رمز أصل التسوية.
تغيير صغير في الواجهة: تعرض الآن واجهة محفظة وكيل Polymarket الأرصدة بـ pUSD، مع وسم USD 1:1. تُظهر مستكشفات البلوكتشين (PolygonScan، واجهة برمجة Polygonscan) تحويلات ERC-20 لـ pUSD في سجل معاملات محفظة الوكيل. تحويلات USDC.e القديمة لا تزال ظاهرة في السجل؛ سيكون لعنوانك ببساطة صفّان لرموز ERC-20 لبعض الوقت.
08
الفصل الثامن

الجزء 8: التداعيات الضريبية والمحاسبية

في معظم الولايات القضائية، التحويل التلقائي من USDC.e إلى pUSD هو مبادلة عملات مستقرة مرتبطة بالدولار من نفس النوع 1:1 ولا يولّد حدثاً ضريبياً. تبقى قاعدة تكلفتك وفترة احتفاظك كما هي.

ومع ذلك، هناك جانبان محاسبيان يستحقان الانتباه:

  1. حدِّث مخطط دفتر الأستاذ. أي أداة ضريبية، أو دفتر SQLite، أو تصدير لمحاسب يفلتر معاملات Polygon بعقد USDC.e سيتجاهل بصمت كل المعاملات التي تلت الترحيل. أضف عنوان عقد pUSD كاسم بديل.
  2. سجِّل تحويل اللقطة. رغم أنه ليس خاضعاً للضريبة في معظم الأنظمة، سجّل التحويل بوضوح في سجلاتك: المبلغ، البلوك، الطابع الزمني، وملاحظة بأنه ترحيل عملة مستقرة (stablecoin) 1:1. إذا راجعت سلطتك الضريبية الأمر لاحقاً، ستحتاج لمسار تدقيق نظيف.

على المتداولين في إسرائيل مراجعة دليل الضرائب للتقارير الخاصة بسلطة الضرائب؛ الترحيل نفسه لا يغيّر المعاملة القياسية، لكن تغيير عنوان العقد يهمّ لأدوات الإبلاغ الآلية.

09
الفصل التاسع

الجزء 9: نصائح احترافية من مشغلين عاشوا التحوّل

  1. ثبّت py-clob-client على >=0.40,<0.50 في requirements.txt. سلسلة 0.40 هي الحد الأدنى الذي يوقّع أوامر pUSD بشكل صحيح؛ تثبيت حد أعلى يحميك من تغيير غير متوافق في المستقبل.
  2. أعد منح الأذونات خلال نافذة منخفضة الحجم. استدعاء update_balance_allowance هو معاملة Polygon؛ إجراؤها أثناء حركة سوقية سريعة هو طلب لقمّة في رسوم الغاز.
  3. التقط صورة لرصيد USDC.e قبل 28 أبريل. رغم أن التحويل تلقائي، فإن الرصيد السابق القابل للتحقق عبر لقطة هو أنظف طريقة للطعن في أي مشكلة تسوية.
  4. ألغِ الأوامر المعلّقة يدوياً قبل اللقطة. المنصة ألغتها على أي حال؛ القيام بذلك بنفسك يمنحك إدخالاً نظيفاً في الدفتر بدلاً من سطر "system cancel".
  5. راقب اللوحات القديمة. لوحات الطرف الثالث لـ Polymarket (PolymarketAnalytics و Polynance وغيرها) استغرقت يومين إلى ثلاثة لإعادة تحليل أحداث pUSD. قد تتقدّم قاعدة بياناتك المحلية على اللوحات العامة لبضعة أيام.
  6. اعبر غبار USDC.e بجدولك الزمني الخاص. معظم الحسابات لديها بضع سنتات من USDC.e تبقّت من خصومات رسوم قديمة أو تحويلات بين الأقران. استخدم CCTP من Circle أو جسر Polygon Portal القياسي - لا داعي للاستعجال.
  7. أبقِ عنوان USDC.e القديم في تنبيهات مستكشف البلوكتشين. إذا غادر أي شيء وكيلك بـ USDC.e بعد الترحيل، فهذه راية حمراء تستحق التحقيق فوراً.

ما التالي؟

الخلاصة الرئيسية

ترحيل Polymarket إلى pUSD هو إعادة هيكلة لمرة واحدة منخفضة المخاطر لأي مشغّل بوت Polymarket. رقّ py-clob-client إلى 0.40+، أعد منح أذونات pUSD، شغّل اختبار دولار سريعاً، واستأنف. البنية التحتية الأساسية (CTF، معرّفات الشرط، معرّفات الرموز، مفاتيح API) لم تتغيّر، فالنطاق صغير وقصّة العودة نظيفة.