Розділ 36 з 36

Коротка версія

28 квітня 2026 року Polymarket перевів свій заставний актив для розрахунків у Polygon з USDC.e (мостовий токен USDC, контракт 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) на pUSD, стейблкоїн, випущений 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 існували три USD-стейблкоїни. Розуміння різниці - це перший крок до усвідомлення того, чому Polymarket змінив майданчик.

ТокенЕмітентКонтракт на PolygonТип резерву
USDC.eмост Polygon PoS0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Переведений з Ethereum mainnet
USDC (native)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Нативний, випущений безпосередньо на Polygon
pUSDСкарбниця PolymarketДив. docs.polymarket.com/pusdЗабезпечений у співвідношенні 1:1 нативним USDC, щомісячна атестація

Спочатку Polymarket обрав USDC.e, тому що це був домінантний варіант USDC на Polygon під час запуску у 2020 році. Згодом Circle випустила native USDC безпосередньо на Polygon і натякнула на майбутнє виведення з ужитку переведеної версії. Продовження розрахунків за кожним ринком в USDC.e наражало Polymarket на довгохвостий ризик раптового згортання мосту. Перехід на стейблкоїн, контрольований Polymarket, вирішує цю проблему і відкриває майбутні функції продукту (наприклад, маржа для perps, депозити у vault, міжланцюгові квитанції), що використовують ту саму розрахункову одиницю.

02
Розділ другий

Частина 2: Що таке pUSD і чим він не є

pUSD - це стандартний токен ERC-20 на Polygon (chain id 137) з 6 десятковими знаками, з тією самою точністю, що й USDC. Його може карбувати лише контракт Polymarket Treasury, і його можна в будь-який момент обміняти 1:1 на нативний USDC, без комісії за конвертацію (комісія за газ у мережі все одно застосовується). Резерв, що забезпечує pUSD, зберігається на відокремлених рахунках і щомісяця звітується з підтвердженням третьої сторони.

pUSD не є алгоритмічним стейблкоїном, не має криптовалютного надлишкового забезпечення і не приносить дохід. Якщо ви тримаєте pUSD поза Polymarket, слід сприймати його як виданий Polymarket IOU для нативного USDC - корисний на платформі, доступний до викупу на вимогу, але без жодної користі від довгострокового зберігання в зовнішньому гаманці.

Аудит і резерви: смартконтракт pUSD був перевірений постійними аудиторами Polymarket. Звіти про підтвердження резервів публікуються за адресою docs.polymarket.com/pusd-audit щомісяця. Перевіряйте обидва перед тим, як тримати великі залишки протягом тривалого часу.
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 і посилаються на адресу активу застави як частину typed data. До міграції цією адресою була 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 address:', POLYGON.get('collateral'))"

Новий SDK отримує адресу застави з конфігурації мережі під час запуску, тож вам не потрібно нічого жорстко прописувати. Якщо ви форкнули або зафіксували старішу версію, найбезпечніший крок - видалити 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-підпис L1 тепер прив'язується до домену, що включає нову адресу застави. Найпростіший шлях:

creds = client.create_or_derive_api_creds()  # ідемпотентне повторне виведення
client.set_api_creds(creds)

# Збережіть у вашому .env
print(creds.api_key, creds.api_secret, creds.api_passphrase)
05
Розділ п'ятий

Частина 5: Перевірка вашого бота після міграції

Запустіть цей мінімальний smoke test, перш ніж дозволити будь-якій логіці визначення розміру працювати на реальні гроші:

# 1. Підтвердьте баланс pUSD на проксі-гаманці
from py_clob_client.client import ClobClient
client = ClobClient(...)  # як вище
balance = client.get_balance_allowance(params={"asset_type": "COLLATERAL"})
print("Баланс pUSD (raw):", 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, дозвіл розпізнано, а книга заявок узгоджена. Поступово збільшуйте масштаб знову.

Уважно виберіть час для оновлення: якщо ви безперервно запускали бота через блок знімка, стан вашої локальної книги заявок, імовірно, розійшовся. Завжди звіряйтеся зі знімками REST після великої зміни майданчика, перш ніж виставляти обсяг котирувань.
06
Розділ шостий

Частина 6: Поширені помилки та виправлення

Помилка або симптомПричинаВиправлення
signature verification failedЗаявка підписана для домену EIP-712 USDC.eОновіть py-clob-client до 0.40+; перезавантажте модуль constants
INSUFFICIENT_ALLOWANCE для кожної заявкиНемає дозволу pUSD від вашого proxy до CTF ExchangeЗапустіть update_balance_allowance(asset_type="COLLATERAL") один раз
invalid maker assetАдреса USDC.e, задана жорстко, усе ще є у вашій конфігураціїЗамініть будь-яку жорстко задану адресу застави на константу SDK
Гаманець показує баланс USDC.e > 0 після міграціїЗалишилися токени "dust" після переказу через сторонній сервісПереведіть USDC.e назад у нативний USDC через CCTP від Circle або залиште як є
Повторне підключення WebSocket створює порожню книгу заявокСтара підписка використовувала застарілий стан ринку до знімкаСкиньте локальний кеш, знову отримайте книгу REST, потім підпишіться ще раз
Виведення на зовнішній гаманець показує pUSD замість USDCВи вибрали "pUSD" замість "USDC" у модалі виведенняВиберіть "USDC" - міст конвертує pUSD → нативний USDC у співвідношенні 1:1
07
Розділ сьомий

Частина 7: Умовні токени, ID ордерів та інші речі, що Не Змінилися

Щоб чесно обмежити обсяг рефакторингу, ось список ідентифікаторів, які залишаються стабільними під час міграції:

  • Контракт Conditional Token (CTF): ідентична адреса. Ваші позиції YES / NO ERC-1155 не зазнали змін.
  • condition_id і question_id: детерміновані параметрами ринку; на них не впливає заміна колатералу.
  • token_id (результат): похідний від condition_id + індексу результату; без змін.
  • адреса проксі-гаманця Polymarket: та сама адреса; той самий код у стилі Gnosis Safe.
  • API key, API secret, API passphrase: усе ще дійсні (рекомендуємо ротацію; не обов'язково).
  • схеми WebSocket: ідентичні; нове поле asset у подіях виконання читається як "pUSD" замість "USDC.e".
  • Gamma і Data APIs: без автентифікації, без змін. Вони ніколи не посилалися безпосередньо на токен колатералу.
Одна невелика зміна інтерфейсу: у вікні проксі-гаманця Polymarket тепер відображаються баланси в pUSD з позначкою 1:1 USD. Блокчейн-експлорери (PolygonScan, Polygonscan API) показують перекази pUSD ERC-20 в історії транзакцій проксі-гаманця. Старі перекази USDC.e залишаються видимими в історії; вашій адресі просто певний час відповідатимуть два рядки токенів ERC-20.
08
Розділ восьмий

Частина 8: Податкові та бухгалтерські наслідки

Для більшості юрисдикцій автоматична конвертація USDC.e у pUSD є обміном стейблкоїнів, прив'язаних до USD, 1:1, за принципом like-kind і не спричиняє оподатковуваної події. Ваша собівартість і період володіння переносяться.

Тим не менш, дві бухгалтерські деталі заслуговують на увагу:

  1. Оновіть схему своєї книги. Будь-який податковий інструмент, книга SQLite або експорт для бухгалтера, що фільтрує транзакції Polygon за контрактом USDC.e, непомітно пропустить кожну транзакцію після міграції. Додайте адресу контракту pUSD як псевдонім.
  2. Занотуйте конвертацію знімка. Навіть якщо в більшості режимів вона не оподатковується, явно зафіксуйте конвертацію у своїх записах: суму, блок, час і примітку про те, що це міграція стейблкоїна 1:1. Якщо у вашій юрисдикції пізніше виникнуть запитання, вам знадобиться чистий слід для аудиту.

Ізраїльським трейдерам слід звернутися до Податкового посібника для звітності, специфічної для ITA; сама міграція не змінює стандартний режим, але зміна адреси контракту має значення для автоматизованих інструментів звітності.

09
Розділ дев'ятий

Частина 9: Поради від операторів, які пережили перехід

  1. Зафіксуйте py-clob-client на >=0.40,<0.50 у requirements.txt. Лінія 0.40 - це мінімум, який правильно підписує ордери pUSD; фіксація верхньої межі захищає від майбутньої несумісної зміни.
  2. Повторно підтвердіть allowances у період низького обсягу. Виклик 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 API Guide - повний посібник з API, оновлений для pUSD
  • Deposit Guide - внесення USDC і отримання pUSD всередині застосунку
  • Withdraw Guide - виведення pUSD як нативного USDC на зовнішній гаманець
  • Tools & Resources - сторонні панелі тепер оновлені для pUSD
  • Glossary - прості англомовні визначення для кожного терміна, використаного тут

Ключовий висновок

Міграція Polymarket на pUSD - це разовий рефакторинг із низьким ризиком для будь-якого оператора, який уже запускає бот Polymarket. Оновіть py-clob-client до 0.40+, повторно схваліть дозволи pUSD, запустіть smoke-тест на $1 і продовжуйте роботу. Інфраструктура під капотом (CTF, condition IDs, token IDs, API keys) не змінилася, тож обсяг змін невеликий, а сценарій відкату - простий.