فصل 36 از 36
نسخه کوتاه
در 28 آوریل 2026, Polymarket وثیقه تسویه خود را روی Polygon از USDC.e (توکن USDC پلزده، قرارداد 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) به pUSD منتقل کرد، یک استیبلکوین صادرشده توسط Polymarket که به نسبت 1:1 با USDC بومی قابل بازخرید است. معاملهگران وباپ هیچ کاری انجام ندادند - موجودیها و موقعیتها در بلاک اسنپشات بهطور خودکار تبدیل شدند. اپراتورهای API و بات باید بهروزرسانی کنند: آدرس دارایی وثیقه داخل امضای هر سفارش CLOB تغییر کرد، سفارشهای قدیمی که با USDC.e امضا شده بودند لغو شدند، و به py-clob-client نسخه 0.40 یا جدیدتر نیاز است. این راهنما دقیقاً تغییرات کد، قرارداد و تأیید لازم را برای حفظ اجرای یک بات در طول و بعد از این انتقال توضیح میدهد.
بخش 1: سه استیبلکوین، یک Polygon
پیش از مهاجرت، سه استیبلکوین USD در مدار Polymarket روی Polygon وجود داشتند. دانستن تفاوت آنها نخستین گام برای درک این است که چرا Polymarket محل فعالیت خود را تغییر داد.
| توکن | صادرکننده | قرارداد روی Polygon | نوع ذخیره |
|---|---|---|---|
| USDC.e | پل Polygon PoS | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 | پلشده از Ethereum mainnet |
| USDC (native) | Circle | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | بومی، بهطور مستقیم روی Polygon صادرشده |
| pUSD | Treasury Polymarket | به docs.polymarket.com/pusd مراجعه کنید | پشتیبانیشده به نسبت 1:1 با USDC بومی، با تأییدیه ماهانه |
Polymarket در ابتدا USDC.e را انتخاب کرد، زیرا این نسخه غالب USDC روی Polygon در زمان راهاندازی در سال 2020 بود. Circle بعدتر native USDC را مستقیماً روی Polygon صادر کرد و از کنار گذاشته شدن تدریجی نسخه پلشده خبر داد. ادامه تسویه هر بازار با USDC.e، Polymarket را در معرض ریسک بلندمدتِ خاموشی ناگهانی پل قرار میداد. مهاجرت به یک استیبلکوین تحت کنترل Polymarket این مشکل را حل میکند و قابلیتهای آینده محصول را نیز فعال میکند (برای مثال، مارجین قراردادهای دائمی، واریز به خزانه، رسیدهای بینزنجیرهای) که همگی از یک واحد حساب مشترک استفاده میکنند.
بخش 2: pUSD چیست و چه چیزی نیست
pUSD یک توکن استاندارد ERC-20 روی Polygon (chain id 137) با 6 رقم اعشار است، با همان دقت USDC. تنها توسط قرارداد خزانه Polymarket قابل مینت شدن است و هر زمان که بخواهید، با نسبت 1:1 به USDC بومی قابل بازخرید است، بدون هیچ کارمزدی برای تبدیل (کارمزد گس شبکه همچنان اعمال میشود). ذخیره پشتیبان pUSD در حسابهای تفکیکشده نگهداری میشود و هر ماه با یک گواهی شخص ثالث گزارش میشود.
pUSD یک استیبلکوین الگوریتمی نیست، با رمزارزها بیشوثیقهگذاری نشده است، و سودده نیست. اگر pUSD را خارج از Polymarket نگه میدارید، باید آن را بهعنوان یک IOU صادرشده توسط Polymarket برای USDC بومی در نظر بگیرید - داخل پلتفرم کاربردی است، بهمحض درخواست قابل بازخرید است، اما برای نگهداری بلندمدت در یک کیف پول خارجی هیچ مزیتی ندارد.
docs.polymarket.com/pusd-audit منتشر میشوند. پیش از نگهداری موجودیهای بزرگ برای بلندمدت، هر دو را بررسی کنید.بخش 3: آنچه معاملهگران وب-اپ دیدند
اگر فقط از طریق polymarket.com معامله میکردید، مهاجرت نامرئی بود. در بلاک اسنپشات در 28 آوریل 2026:
- هر موجودی USDC.e که در یک کیف پول پروکسی Polymarket نگهداری میشد، بهصورت اتمی و با نسبت 1:1 به pUSD تبدیل شد.
- موقعیتهای باز همان ارزش دلاری، همان احتمالهای نتیجه، و همان تاریخ انقضا را حفظ کردند. شناسههای توکن شرطی تغییر نکردند.
- سفارشهای در انتظار که بر حسب USDC.e بودند، در زمان اسنپشات لغو شدند. سفارشهای جدید پس از مهاجرت بهطور خودکار با pUSD امضا میشوند.
- برداشتها به کیف پولهای خارجی از ارسال USDC.e به ارسال USDC بومی تغییر کرد (یا در صورت درخواست، pUSD خام - بیشتر کاربران هرگز به آن نیاز ندارند).
هیچ امضا، تراکنش یا تغییر تنظیماتی لازم نبود. سفارشهای محدود در انتظار که برای شما مهم بودند باید پس از مهاجرت بهصورت دستی دوباره ثبت میشدند؛ لغو شدن یک رویداد یکباره بود.
بخش 4: API و گردانندگان بات - تغییرات حیاتی
این همان بخشی است که اگر اقدام نکنید، یک بات را از کار میاندازد.
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 address:', POLYGON.get('collateral'))"
SDK جدید آدرس وثیقه را هنگام شروع از پیکربندی زنجیره میگیرد، بنابراین نیازی نیست چیزی را بهصورت hard-code وارد کنید. اگر نسخه قدیمیتری را fork کردهاید یا pin کردهاید، امنترین کار این است که lockfile را حذف کنید، با جدیدترین ماژول constants دوباره نصب کنید، و مجموعه آزمون خود را دوباره اجرا کنید.
مجوزها را دوباره تأیید کنید
کیف پول پروکسی Polymarket شما برای توکن pUSD به یک ERC-20 allowance از حساب معاملاتی شما - قرارداد CTF Exchange نیاز دارد. allowance قدیمی برای USDC.e هنوز روی زنجیره وجود دارد، اما کاملا بیفایده است: CLOB آن را مصرف نخواهد کرد. بدون یک allowance تازه برای 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 for Magic-link accounts
)
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 در لایه 1 اکنون به دامنهای متصل میشود که آدرس جدید وثیقه را هم شامل میشود. سادهترین مسیر:
creds = client.create_or_derive_api_creds() # مشتقسازی مجدد idempotent
client.set_api_creds(creds)
# در .env خود ذخیره کنید
print(creds.api_key, creds.api_secret, creds.api_passphrase)
بخش 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("میزان مجاز برای صرافی:", 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, # ارزش اسمی 1 دلار در قیمت 0.05 دلار
side="BUY",
))
resp = client.post_order(order)
print(resp)
# 3. لغو کنید و تأیید کنید
client.cancel(order_id=resp["orderID"])
اگر هر سه فراخوانی موفق شوند، اتصال شما درست است: SDK با pUSD امضا کرده، allowance شناخته شده است، و دفتر سفارش منسجم است. بهتدریج دوباره مقیاس را بالا ببرید.
بخش 6: خطاها و راهحلهای رایج
| خطا یا نشانه | علت | راهحل |
|---|---|---|
signature verification failed | سفارش علیه دامنه EIP-712 مربوط به USDC.e امضا شده است | py-clob-client را به 0.40+ ارتقا دهید؛ ماژول constants را دوباره بارگذاری کنید |
INSUFFICIENT_ALLOWANCE در هر سفارش | از proxy شما به CTF Exchange اجازه pUSD داده نشده است | دستور update_balance_allowance(asset_type="COLLATERAL") را یکبار اجرا کنید |
invalid maker asset | آدرس USDC.e بهصورت hard-coded هنوز در تنظیمات شما وجود دارد | هر آدرس collateral hard-coded را با constant مربوطه در SDK جایگزین کنید |
| کیف پول موجودی USDC.e را پس از مهاجرت > 0 نشان میدهد | توکنهای "dust" باقیمانده از یک انتقال شخص ثالث | USDC.e را از طریق CCTP شرکت Circle دوباره به USDC بومی bridge کنید، یا آن را همانطور رها کنید |
| اتصال مجدد WebSocket دفتر را خالی نشان میدهد | اشتراک قدیمی از وضعیت منسوخ بازار قبل از snapshot استفاده کرده است | cache محلی را حذف کنید، دفتر REST را دوباره fetch کنید، سپس دوباره subscribe شوید |
| برداشت به کیف پول خارجی pUSD را بهجای USDC نشان میدهد | در modal برداشت، بهجای "USDC" گزینه "pUSD" را انتخاب کردهاید | "USDC" را انتخاب کنید - bridge pUSD را با نسبت 1:1 به USDC بومی تبدیل میکند |
بخش 7: توکنهای شرطی، شناسههای سفارش، و چیزهای دیگری که تغییر نکردند
برای اینکه محدوده بازسازی را دقیق نگه داریم، فهرست شناسههایی که در طول مهاجرت ثابت میمانند اینجاست:
- قرارداد Conditional Token (CTF): آدرس یکسان. موقعیتهای YES / NO شما در ERC-1155 بدون تغییر هستند.
- condition_id و question_id: بهصورت قطعی از پارامترهای بازار بهدست میآیند؛ تحت تأثیر تعویض وثیقه قرار نمیگیرند.
- token_id (outcome): از condition_id + شاخص نتیجه مشتق میشود؛ بدون تغییر.
- آدرس کیف پول پروکسی Polymarket: همان آدرس؛ همان کد به سبک Gnosis Safe.
- کلید API، اسرار API، عبارت عبور API: همچنان معتبر هستند (توصیه میشود چرخانده شوند؛ الزامی نیست).
- اسکیماهای WebSocket: یکسان؛ فیلد جدید
assetدر رویدادهای fill بهجای "USDC.e" مقدار "pUSD" را میخواند. - APIهای Gamma و Data: بدون احراز هویت، بدون تغییر. آنها هیچوقت به توکن وثیقه بهطور مستقیم ارجاع نمیدادند.
بخش 8: پیامدهای مالیاتی و دفترداری
برای بیشتر حوزههای قضایی، تبدیل خودکار USDC.e به pUSD یک سوآپ همنوعِ استیبلکوینهای متصل به دلار آمریکا به نسبت 1:1 است و هیچ رویداد مالیاتی ایجاد نمیکند. بهای تمامشده و مدت نگهداری شما منتقل میشود.
با این حال، دو مورد دفترداری شایسته توجهاند:
- طرحواره دفتر کل خود را بهروزرسانی کنید. هر ابزار مالیاتی، دفتر کل SQLite، یا خروجی حسابدار که تراکنشهای Polygon را بر اساس قرارداد USDC.e فیلتر میکند، بیصدا همه تراکنشهای پس از مهاجرت را از قلم میاندازد. آدرس قرارداد pUSD را بهعنوان یک نام مستعار اضافه کنید.
- تبدیل اسنپشات را یادداشتگذاری کنید. با اینکه در بیشتر رژیمها مشمول مالیات نیست، تبدیل را بهصورت صریح در سوابق خود ثبت کنید: مقدار، بلاک، زمانسنجی، و یادداشتی مبنی بر اینکه این یک مهاجرت استیبلکوین به نسبت 1:1 است. اگر حوزه قضایی شما بعداً درباره آن پرسوجو کند، باید یک مسیر حسابرسی پاک و روشن داشته باشید.
معاملهگران اسرائیلی باید برای گزارشدهی خاص ITA با راهنمای مالیاتی مشورت کنند؛ خودِ مهاجرت تغییری در نحوه برخورد استاندارد ایجاد نمیکند، اما تغییر آدرس قرارداد برای ابزارهای گزارشدهی خودکار مهم است.
بخش 9: نکات حرفهای از اپراتورهایی که این تغییر را از سر گذراندند
- py-clob-client را در
>=0.40,<0.50در requirements.txt پین کنید. خط 0.40 حداقل نسخهای است که سفارشهای pUSD را بهدرستی امضا میکند؛ پین کردن یک سقف بالاتر از شما در برابر یک تغییر شکننده آینده محافظت میکند. - اجازهها را در یک بازه کمحجم دوباره تأیید کنید. فراخوانی
update_balance_allowanceیک تراکنش Polygon است؛ انجام آن هنگام یک حرکت سریع بازار، دعوت از جهش کارمزد گس است. - پیش از 28 آوریل موجودی USDC.e خود را اسنپشات بگیرید. با اینکه تبدیل بهصورت خودکار انجام میشود، یک موجودی پیش از اسنپشات که قابلراستیآزمایی باشد، تمیزترین راه برای اعتراض به هر مشکل تطبیق است.
- سفارشهای باز را پیش از اسنپشات بهصورت دستی لغو کنید. در هر حال خودِ بازار آنها را لغو کرده بود؛ انجام این کار توسط خودتان یک ورودی دفترکل تمیز به شما میدهد، بهجای یک خط «لغو سیستم».
- مراقب داشبوردهای قدیمی باشید. داشبوردهای شخص ثالث Polymarket (PolymarketAnalytics، Polynance و غیره) دو تا سه روز زمان برد تا رویدادهای pUSD را دوباره تحلیل کنند. پایگاهداده محلی بات شما ممکن است برای چند روز جلوتر از داشبوردهای عمومی باشد.
- بریج کردن گردوغباریِ USDC.e را طبق برنامه خودتان انجام دهید. بیشتر حسابها چند سنت USDC.e باقیمانده از ریبیتهای کارمزد قدیمی یا انتقالهای همتابههمتا دارند. از CCTP شرکت Circle یا بریج استاندارد Polygon Portal استفاده کنید - عجلهای نیست.
- آدرس قدیمی USDC.e را در هشدارهای بلاکاکسپلورر خود نگه دارید. اگر بعد از مهاجرت، هر چیزی از پروکسی شما در USDC.e جابهجا شود، این یک پرچم قرمز است که ارزش بررسی فوری دارد.
بعدی چیست؟
- راهنمای API پالیمارکت - راهنمای کامل API، بهروزرسانیشده برای pUSD
- راهنمای واریز - واریز USDC و دریافت pUSD داخل برنامه
- راهنمای برداشت - برداشت pUSD بهصورت USDC بومی به یک کیف پول خارجی
- ابزارها و منابع - داشبوردهای شخص ثالث که اکنون برای pUSD بهروزرسانی شدهاند
- واژهنامه - تعریفهای ساده و روان برای هر اصطلاحی که اینجا استفاده شده است
نکته کلیدی
مهاجرت Polymarket به pUSD یک بازسازی یکباره با ریسک پایین برای هر اپراتوری است که از قبل یک ربات Polymarket را اجرا میکند. py-clob-client را به نسخه 0.40+ ارتقا دهید، مجوزهای pUSD را دوباره تأیید کنید، یک آزمون سریع 1 دلاری اجرا کنید، و ادامه دهید. زیرساخت زیرین (CTF، condition IDs، token IDs، API keys) تغییری نکرده است، بنابراین دامنه تغییرات کوچک است و داستان بازگشت به حالت قبل هم تمیز و ساده است.











