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.
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.
| Token | Emisor | Contrato en Polygon | Tipo de reserva |
|---|---|---|---|
| USDC.e | Puente Polygon PoS | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 | Trasladado desde la red principal de Ethereum |
| USDC (nativo) | Circle | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | Nativo, emitido directamente en Polygon |
| pUSD | Tesorería de Polymarket | Ver docs.polymarket.com/pusd | Respaldado 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.
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.
docs.polymarket.com/pusd-audit con una cadencia mensual. Verifica ambos antes de mantener saldos grandes a largo plazo.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.
Parte 4: Operadores de API y bots - Cambios críticos
Esta es la parte que romperá un bot si no actúas.
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)
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.
Parte 6: Errores comunes y soluciones
| Error o síntoma | Causa | Solución |
|---|---|---|
signature verification failed | Orden firmada contra el dominio EIP-712 de USDC.e | Actualiza py-clob-client a 0.40+; vuelve a cargar el módulo constants |
INSUFFICIENT_ALLOWANCE en cada orden | No hay allowance de pUSD desde tu proxy hacia CTF Exchange | Ejecuta update_balance_allowance(asset_type="COLLATERAL") una vez |
invalid maker asset | La dirección de USDC.e codificada de forma fija sigue en tu configuración | Reemplaza 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ón | Tokens "dust" que quedaron de una transferencia de un tercero | Puentea 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ío | La suscripción antigua usó un estado de mercado obsoleto de antes del snapshot | Elimina 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 USDC | Seleccionaste "pUSD" en lugar de "USDC" en el modal de retiro | Elige "USDC" - el puente convierte pUSD → USDC nativo a 1:1 |
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
assetmuestra "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.
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:
- 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.
- 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.
Parte 9: Consejos profesionales de operadores que vivieron el cambio
- Fija py-clob-client en
>=0.40,<0.50en 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. - Vuelve a aprobar los permisos durante una ventana de bajo volumen. La llamada
update_balance_allowancees una transacción de Polygon; hacerla durante un movimiento rápido del mercado es pedir un pico en la comisión de gas. - 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.
- 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".
- 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.
- 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.
- 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?
- Guía de la API de Polymarket - la guía completa de la API, actualizada para pUSD
- Guía de depósito - depositar USDC y recibir pUSD dentro de la app
- Guía de retiro - retirar pUSD como USDC nativo a una billetera externa
- Herramientas y recursos - paneles de terceros ahora actualizados para pUSD
- Glosario - definiciones en lenguaje sencillo de cada término usado aquí
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.











