Capítulo 36 de 36

La versión corta

El 28 de abril de 2026, Polymarket migró su colateral de liquidación en Polygon de USDC.e (el token USDC puenteado, contrato 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) a pUSD, una moneda estable (stablecoin) emitida por Polymarket canjeable 1:1 por USDC nativo. Los traders de la aplicación web no tuvieron que hacer nada - los saldos y posiciones se convirtieron automáticamente en el bloque de instantánea. Los operadores de API y bots deben actualizarse: cambió la dirección del activo colateral dentro de cada firma de orden CLOB, las órdenes antiguas firmadas contra USDC.e fueron canceladas, y se requiere py-clob-client 0.40 o más reciente. Esta guía recorre el código, el contrato y los cambios de aprobación exactos necesarios para mantener un bot en funcionamiento durante y después del cambio.

Lo que aprenderás: por qué Polymarket dejó de usar USDC.e, qué cambió a nivel de contrato, la ruta exacta de actualización de py-clob-client, cómo volver a aprobar las autorizaciones para el nuevo colateral, cómo verificar tu saldo después del intercambio y cómo manejar el polvo heredado de USDC.e que ahora tienen la mayoría de las cuentas.
Requisitos previos: ya deberías tener una cuenta de Polymarket que funcione, conocimientos básicos de los contratos de Polygon y un bot existente o un flujo de trabajo manual de API anterior al 28 de abril de 2026. Si empiezas desde cero hoy, solo instala el SDK más reciente y salta al Capítulo Cuatro - nunca necesitarás tocar USDC.e.
01
Capítulo Uno

Parte 1: Tres stablecoins, Un Polygon

Antes de la migración, existían tres stablecoins USD en la órbita de Polymarket en Polygon. Conocer la diferencia es el primer paso para entender por qué Polymarket cambió de lugar de operación.

TokenEmisorContrato en PolygonTipo de reserva
USDC.ePuente Polygon PoS0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Trasladado desde la red principal de Ethereum
USDC (nativo)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Nativo, emitido directamente en Polygon
pUSDTesorería de PolymarketVer docs.polymarket.com/pusdRespaldado 1:1 por USDC nativo, atestación mensual

Polymarket eligió originalmente USDC.e porque era la variante dominante de USDC en Polygon en el lanzamiento en 2020. Más tarde, Circle emitió USDC nativo directamente en Polygon y señaló la eventual descontinuación de la variante trasladada. Seguir liquidando cada mercado en USDC.e expuso a Polymarket al riesgo de cola de una retirada repentina del puente. Migrar a una moneda estable (stablecoin) controlada por Polymarket resuelve eso y desbloquea futuras funciones del producto (por ejemplo, margen para perps, depósitos en vault, recibos entre cadenas) que comparten la misma unidad de cuenta.

02
Capítulo Dos

Parte 2: Qué es pUSD (y qué no es)

pUSD es un token ERC-20 estándar en Polygon (id de cadena 137) con 6 decimales, la misma precisión que USDC. Solo puede acuñarse por el contrato del Tesoro de Polymarket y puede canjearse 1:1 por USDC nativo en cualquier momento, sin comisión por la conversión (la comisión de gas de la red sigue aplicando). La reserva que respalda pUSD se mantiene en cuentas segregadas y se informa mensualmente con una atestación de terceros.

pUSD no es una moneda estable (stablecoin) algorítmica, no está sobrecolateralizada con cripto y no genera rendimiento. Si tienes pUSD fuera de Polymarket, debes pensarlo como un pagaré emitido por Polymarket por USDC nativo - útil dentro de la plataforma, canjeable a demanda, pero sin beneficio alguno para mantenerlo a largo plazo en una billetera externa.

Auditoría y reservas: el contrato inteligente de pUSD ha sido auditado por los auditores habituales de Polymarket. Los informes de atestación de reservas se publican en docs.polymarket.com/pusd-audit con una cadencia mensual. Verifica ambos antes de mantener saldos grandes a largo plazo.
03
Capítulo Tres

Parte 3: Lo que vieron los traders de la web-app

Si solo operas a través de polymarket.com, la migración fue invisible. En el bloque de instantánea del 28 de abril de 2026:

  • Todo saldo de USDC.e mantenido en una billetera proxy de Polymarket se convirtió atómicamente a pUSD en una proporción 1:1.
  • Las posiciones abiertas conservaron el mismo valor en dólares, las mismas probabilidades del resultado y el mismo vencimiento. Los IDs de token condicional no cambiaron.
  • Las órdenes pendientes denominadas en USDC.e se cancelaron en la instantánea. Las nuevas órdenes después de la migración se firman automáticamente con pUSD.
  • Los retiros a billeteras externas cambiaron de enviar USDC.e a enviar USDC nativo (o, si se solicita, pUSD en bruto - la mayoría de los usuarios nunca lo necesita).

No se requirieron firmas, transacciones ni cambios de configuración. Las órdenes limitadas pendientes que te importaban deberían volver a colocarse manualmente después de la migración; la cancelación fue un evento único.

04
Capítulo cuarto

Parte 4: Operadores de API y bots - Cambios críticos

Esta es la parte que romperá un bot si no actúas.

Qué cambió en la firma de la orden: Las órdenes de CLOB se firman mediante EIP-712 y hacen referencia a la dirección del activo de colateral como parte de los datos tipados. Antes de la migración, esa dirección era USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174). Después de la migración, es pUSD. Una orden firmada contra la dirección antigua fallará la verificación de la firma en CLOB y devolverá un error de "invalid creador de mercado (maker) asset" o "signature mismatch".

Actualiza py-clob-client

Polymarket publicó py-clob-client 0.40.0 dos semanas antes del cambio con soporte completo para pUSD. La línea 0.34.x fue descontinuada el día después de la migración.

# Actualiza a una versión compatible con pUSD
pip install --upgrade "py-clob-client>=0.40.0"

# Verifica el activo de colateral configurado
python -c "from py_clob_client.constants import POLYGON; \
print('Dirección de pUSD:', POLYGON.get('collateral'))"

El nuevo SDK obtiene la dirección del colateral desde la configuración de la red al iniciarse, así que no necesitas codificar nada de forma fija. Si hiciste un fork o fijaste una versión anterior, lo más seguro es borrar el lockfile, reinstalar con el módulo de constantes más reciente y volver a ejecutar tu suite de pruebas.

Vuelve a aprobar los permisos

Tu billetera proxy de Polymarket necesita una autorización ERC-20 desde tu cuenta de trading - contrato del CTF Exchange para el token pUSD. La autorización antigua para USDC.e sigue en la cadena, pero es completamente inútil: CLOB no la consumirá. Sin una nueva autorización de pUSD, cada orden devuelve "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 para cuentas de Magic-link
)
client.set_api_creds(client.create_or_derive_api_creds())

# Una sola vez: aprobar pUSD para el contrato CTF Exchange
# (Ayudante añadido en py-clob-client 0.40)
client.update_balance_allowance(asset_type="COLLATERAL")

Actualiza las credenciales de API

Las claves de API existentes siguen funcionando, pero si derivaste credenciales antes del 1 de abril deberías rotarlas como medida de precaución: la firma ECDSA de L1 ahora se vincula a un dominio que incluye la nueva dirección del colateral. La ruta más simple:

creds = client.create_or_derive_api_creds()  # re-derivación idempotente
client.set_api_creds(creds)

# Guárdalo en tu .env
print(creds.api_key, creds.api_secret, creds.api_passphrase)
05
Capítulo cinco

Parte 5: Verificación de tu bot después de la migración

Ejecuta esta prueba mínima de humo antes de dejar que cualquier lógica de dimensionamiento actúe con dinero real:

# 1. Confirma el saldo pUSD en la billetera proxy
from py_clob_client.client import ClobClient
client = ClobClient(...)  # como arriba
balance = client.get_balance_allowance(params={"asset_type": "COLLATERAL"})
print("Saldo pUSD (sin procesar):", balance["balance"])
print("Allowance al exchange:", balance["allowance"])

# 2. Coloca una orden limitada de $1 bien lejos del precio de toque
from py_clob_client.clob_types import OrderArgs
order = client.create_order(OrderArgs(
    token_id=test_token_id,
    price=0.05,        # en ningún punto cerca del mercado
    size=20,           # nocional de $1 a $0.05
    side="BUY",
))
resp = client.post_order(order)
print(resp)

# 3. Cancela y confirma
client.cancel(order_id=resp["orderID"])

Si las tres llamadas tienen éxito, tu conexión está bien: el SDK firmó contra pUSD, el allowance se reconoce y el libro de órdenes es coherente. Vuelve a escalar gradualmente.

Programa la actualización con cuidado: si ejecutaste el bot de forma continua a través del bloque de snapshot, es probable que el estado local de tu libro de órdenes se haya desviado. Reconcílialo siempre con snapshots REST después de un cambio importante de mercado antes de cotizar tamaño.
06
Capítulo Seis

Parte 6: Errores comunes y soluciones

Error o síntomaCausaSolución
signature verification failedOrden firmada contra el dominio EIP-712 de USDC.eActualiza py-clob-client a 0.40+; vuelve a cargar el módulo constants
INSUFFICIENT_ALLOWANCE en cada ordenNo hay allowance de pUSD desde tu proxy hacia CTF ExchangeEjecuta update_balance_allowance(asset_type="COLLATERAL") una vez
invalid maker assetLa dirección de USDC.e codificada de forma fija sigue en tu configuraciónReemplaza cualquier dirección de collateral codificada de forma fija con la constante del SDK
La billetera muestra saldo de USDC.e > 0 después de la migraciónTokens "dust" que quedaron de una transferencia de un terceroPuentea USDC.e de vuelta a USDC nativo en el CCTP de Circle, o déjalo así
La reconexión de WebSocket produce un libro vacíoLa suscripción antigua usó un estado de mercado obsoleto de antes del snapshotElimina la caché local, vuelve a obtener el libro por REST, y luego vuelve a suscribirte
Retirar a una billetera externa muestra pUSD en lugar de USDCSeleccionaste "pUSD" en lugar de "USDC" en el modal de retiroElige "USDC" - el puente convierte pUSD → USDC nativo a 1:1
07
Capítulo siete

Parte 7: Tokens condicionales, IDs de órdenes y otras cosas que no cambiaron

Para mantener honesto el alcance de la refactorización, aquí está la lista de identificadores que se mantienen estables durante la migración:

  • Contrato de Conditional Token (CTF): misma dirección. Tus posiciones ERC-1155 de YES / NO no se tocan.
  • condition_id y question_id: determinísticos a partir de los parámetros del mercado; no afectados por el cambio de colateral.
  • token_id (resultado): derivado de condition_id + índice de resultado; sin cambios.
  • Dirección de la billetera proxy de Polymarket: misma dirección; mismo código estilo Gnosis Safe.
  • Clave API, secreto API, frase de contraseña API: siguen siendo válidos (se recomienda rotarlos; no es obligatorio).
  • Esquemas de WebSocket: idénticos; el nuevo campo asset muestra "pUSD" en lugar de "USDC.e" en los eventos de ejecución.
  • APIs de Gamma y Data: sin autenticación, sin cambios. Nunca hicieron referencia al token de colateral directamente.
Un pequeño cambio en la interfaz: la vista de la billetera proxy de Polymarket ahora muestra saldos en pUSD, con una etiqueta de USD 1:1. Los exploradores de bloques (PolygonScan, API de Polygonscan) muestran transferencias ERC-20 de pUSD en el historial de transacciones de la billetera proxy. Las transferencias antiguas de USDC.e siguen visibles en el historial; tu dirección simplemente tendrá dos filas de token ERC-20 durante un tiempo.
08
Capítulo Ocho

Parte 8: Implicaciones fiscales y contables

Para la mayoría de las jurisdicciones, la conversión automática de USDC.e a pUSD es un canje de stablecoins vinculadas al USD de tipo similar a 1:1 y no genera un hecho imponible. Tu base de costo y tu período de tenencia se mantienen.

Dicho esto, hay dos aspectos contables que merecen atención:

  1. Actualiza el esquema de tu libro mayor. Cualquier herramienta fiscal, libro mayor de SQLite o exportación para contador que filtre las transacciones de Polygon por el contrato de USDC.e omitirá en silencio todas las transacciones posteriores a la migración. Agrega la dirección del contrato de pUSD como un alias.
  2. Anota la conversión del snapshot. Aunque no sea imponible en la mayoría de los regímenes, registra la conversión explícitamente en tus registros: monto, bloque, marca de tiempo y una nota de que es una migración de moneda estable (stablecoin) 1:1. Si tu jurisdicción la revisa más adelante, querrás un rastro de auditoría limpio.

Los traders israelíes deberían consultar la Guía fiscal para el reporte específico de la ITA; la migración en sí no cambia el tratamiento estándar, pero el cambio de dirección de contrato sí importa para las herramientas de reporte automatizado.

09
Capítulo Nueve

Parte 9: Consejos profesionales de operadores que vivieron el cambio

  1. Fija py-clob-client en >=0.40,<0.50 en requirements.txt. La línea 0.40 es el mínimo que firma correctamente las órdenes pUSD; fijar un límite superior protege contra un cambio incompatible futuro.
  2. Vuelve a aprobar los permisos durante una ventana de bajo volumen. La llamada update_balance_allowance es una transacción de Polygon; hacerla durante un movimiento rápido del mercado es pedir un pico en la comisión de gas.
  3. Haz una captura de tu saldo de USDC.e antes del 28 de abril. Aunque la conversión es automática, un saldo previo verificable mediante captura es la forma más limpia de disputar cualquier problema de conciliación.
  4. Cancela manualmente las órdenes pendientes antes de la captura. De todos modos, el venue las canceló; hacerlo tú te da una entrada de libro limpia en lugar de una línea de "system cancel".
  5. Vigila los paneles obsoletos. Los paneles de terceros de Polymarket (PolymarketAnalytics, Polynance, etc.) tardaron de dos a tres días en volver a analizar los eventos pUSD. La base de datos local de tu bot puede adelantarse a los paneles públicos durante unos días.
  6. Puentea el polvo de USDC.e según tu propio calendario. La mayoría de las cuentas tienen unos centavos de USDC.e sobrante por antiguos reembolsos de comisiones o transferencias entre pares. Usa el CCTP de Circle o el puente estándar Polygon Portal - no hay prisa.
  7. Mantén la antigua dirección de USDC.e en tus alertas del explorador de bloques. Si alguna vez sale algo de tu proxy en USDC.e después de la migración, eso es una señal de alerta que merece investigarse de inmediato.

¿Qué sigue?

Conclusión clave

La migración de Polymarket a pUSD es una refactorización única de bajo riesgo para cualquier operador que ya ejecute un bot de Polymarket. Actualiza py-clob-client a 0.40+ , vuelve a aprobar las autorizaciones de pUSD, ejecuta una prueba rápida de $1 y reanuda. La infraestructura subyacente (CTF, IDs de condición, IDs de token, claves de API) no cambió, así que el alcance es pequeño y la historia de reversión es limpia.