Глава 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.ePolygon PoS bridge0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Перенесен с Ethereum mainnet
USDC (native)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Нативный, выпущен напрямую на Polygon
pUSDPolymarket TreasurySee docs.polymarket.com/pusdОбеспечен в соотношении 1:1 нативным USDC, ежемесячная аттестация

Изначально Polymarket выбрал USDC.e, потому что это был доминирующий вариант USDC на Polygon на момент запуска в 2020 году. Позже Circle выпустила native USDC напрямую на Polygon и обозначила eventual отказ от bridged-версии. Продолжая проводить расчеты по каждому рынку в USDC.e, Polymarket подвергал себя долгосрочному риску внезапного сворачивания моста. Переход на стейблкоин под управлением Polymarket решает эту проблему и открывает будущие продуктовые функции (например, маржу для перпсов, депозиты в vault, кроссчейн-квитанции), которые используют одну и ту же единицу учета.

02
Глава вторая

Часть 2: Что такое pUSD (и чем он не является)

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

pUSD не является алгоритмическим стейблкоином, не имеет криптовалютного сверхобеспечения и не приносит доходности. Если вы держите pUSD вне Polymarket, следует воспринимать его как выпущенное Polymarket долговое обязательство на нативный 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 и заново запустить тестовый набор.

Повторно подтвердите allowances

Вашему прокси-кошельку Polymarket нужен ERC-20 allowance от вашего торгового аккаунта → контракта CTF Exchange для токена pUSD. Старый 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 апреля, их следует обновить в качестве меры предосторожности: L1 ECDSA-подпись теперь привязана к домену, который включает новый адрес залога. Самый простой путь:

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: Проверка вашего бота после миграции

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

# 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("Allowance для биржи:", 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 подписал against pUSD, allowance распознается, а журнал заявок согласован. Постепенно увеличивайте масштаб обратно.

Аккуратно выберите время для обновления: если вы непрерывно запускали бота через блок снимка, локальное состояние стакана заявок, вероятно, разошлось. Всегда сверяйте с REST-снимками после серьезного изменения площадки, прежде чем указывать размер.
06
Глава шесть

Часть 6: Распространенные ошибки и способы их устранения

Ошибка или симптомПричинаИсправление
signature verification failedОрдер подписан против домена EIP-712 USDC.eОбновите py-clob-client до 0.40+; перезагрузите модуль constants
INSUFFICIENT_ALLOWANCE для каждого ордераНет allowance pUSD от вашего proxy к CTF ExchangeОдин раз выполните update_balance_allowance(asset_type="COLLATERAL")
invalid maker assetВ вашей конфигурации по-прежнему жестко задан адрес USDC.eЗамените любой жестко заданный адрес collateral на константу SDK
Кошелек показывает баланс USDC.e > 0 после миграцииОставшиеся "пылевые" токены после перевода через сторонний сервисВерните USDC.e обратно в нативный USDC через CCTP Circle или оставьте как есть
Повторное подключение WebSocket создает пустой стакан заявокСтарая подписка использовала устаревшее состояние рынка до snapshotУдалите локальный кэш, заново получите стакан через 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 в событиях fill читает "pUSD" вместо "USDC.e".
  • Gamma и Data APIs: без аутентификации, без изменений. Они никогда не ссылались на токен залога напрямую.
Одно небольшое изменение в интерфейсе: в представлении прокси-кошелька Polymarket теперь балансы показываются в pUSD, с меткой USD 1:1. Обозреватели блоков (PolygonScan, Polygonscan API) показывают переводы pUSD ERC-20 в истории транзакций прокси-кошелька. Старые переводы USDC.e по-прежнему видны в истории; некоторое время у вашего адреса просто будет две строки токенов ERC-20.
08
Глава восьмая

Часть 8: Налоговые и бухгалтерские последствия

Для большинства юрисдикций автоматическая конвертация USDC.e в pUSD является обменом стейблкоинов, привязанных к USD, в соотношении 1:1 как аналогичных активов и не создает налогооблагаемого события. Ваша себестоимость и срок владения переносятся.

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

  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. Переодобрите лимиты в окно низкого объема. Вызов 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) не изменилась, поэтому зона воздействия мала, а откат выполняется без проблем.