Payment IDs en Monero: Por Qué Fueron Descontinuados
El Auge y Caída de los Payment IDs
Los Payment IDs fueron alguna vez una funcionalidad omnipresente en el ecosistema de Monero. Si usaste Monero antes de 2019, casi con seguridad los encontraste al depositar en exchanges o pagar a comerciantes. Estos identificadores adicionales se adjuntaban a las transacciones para ayudar a los destinatarios a distinguir entre múltiples pagos entrantes. A pesar de su utilidad, los Payment IDs introdujeron problemas significativos de privacidad y usabilidad que finalmente llevaron a su descontinuación.
Comprender esta historia es importante para cualquier persona que use Monero hoy, especialmente al interactuar con servicios antiguos que aún puedan hacer referencia a Payment IDs. Ya sea que intercambies a través de MoneroSwapper o gestiones tu propia billetera, saber qué reemplazó a los Payment IDs y por qué te ayuda a realizar transacciones de forma más segura.
¿Qué Eran los Payment IDs?
Un Payment ID era una cadena hexadecimal de 64 caracteres (32 bytes) que podía adjuntarse a una transacción de Monero. Piensa en él como un número de referencia o ID de factura incrustado directamente en la transacción de la blockchain. Había dos tipos:
Payment IDs Largos (Sin Cifrar)
El formato original de Payment ID era una cadena de 32 bytes transmitida en texto plano como parte del campo extra de la transacción. Cuando enviabas una transacción con un Payment ID largo, cualquier persona que viera la blockchain podía ver el valor del Payment ID. Este era el método más antiguo y fue ampliamente utilizado por exchanges y procesadores de pagos.
El problema era inmediatamente aparente desde la perspectiva de la privacidad: si un exchange publicaba su dirección de depósito y asignaba Payment IDs únicos a cada usuario, un observador podía identificar todos los depósitos a ese exchange y potencialmente vincular Payment IDs a usuarios específicos a través del análisis de tiempo o montos.
Payment IDs Cifrados (Payment IDs Cortos)
Para abordar el problema del texto plano, Monero introdujo los Payment IDs cifrados en 2017. Estos eran valores de 8 bytes cifrados con un secreto compartido derivado de las claves de uso único de la transacción. Solo el destinatario podía descifrar el Payment ID usando su clave privada de visualización. En la blockchain, el Payment ID cifrado aparecía como datos aleatorios para todos los demás.
Los Payment IDs cifrados se agruparon con las direcciones integradas, que combinaban una dirección estándar de Monero con un Payment ID de 8 bytes en una sola cadena de dirección. Esto los hacía más fáciles de usar porque el remitente no necesitaba copiar y pegar manualmente un campo de Payment ID separado.
Por Qué las Exchanges y Servicios Usaban Payment IDs
La razón práctica de los Payment IDs era simple: las exchanges y los comerciantes necesitaban atribuir los pagos entrantes a usuarios u órdenes específicas. Debido a que Monero usa direcciones stealth que hacen que cada salida de transacción sea única, un servicio que recibe miles de depósitos diarios necesitaba un mecanismo para determinar qué depósito pertenecía a qué cliente.
El flujo de trabajo típico era:
- El exchange da a todos los usuarios la misma dirección de depósito pero asigna a cada usuario un Payment ID único
- El usuario envía XMR a la dirección del exchange con el Payment ID asignado
- El exchange escanea las transacciones entrantes por el Payment ID para acreditar la cuenta correcta
Este sistema funcionaba pero era frágil. Los usuarios frecuentemente olvidaban incluir el Payment ID, resultando en depósitos perdidos que requerían recuperación manual por parte de los equipos de soporte del exchange. Este era uno de los problemas de soporte más comunes para las exchanges que aceptaban Monero y una fuente importante de frustración para los usuarios.
Los Problemas de Privacidad con los Payment IDs
Incluso los Payment IDs cifrados introducían varias vulnerabilidades de privacidad que socavaban las garantías fundamentales de privacidad de Monero:
Vinculabilidad a Través de Metadatos
Cuando todos los usuarios de un exchange enviaban a la misma dirección, el mecanismo de dirección stealth se veía socavado. Un observador podía identificar que una transacción estaba destinada a un exchange específico simplemente reconociendo la dirección pública. El Payment ID, incluso cuando estaba cifrado, añadía metadatos distintivos a la transacción. Las transacciones con Payment IDs se veían diferentes de las transacciones sin ellos, creando dos clases de transacciones que reducían el conjunto de anonimato.
El Problema de los Dos Pools
Las transacciones con Payment IDs y las transacciones sin Payment IDs formaban dos pools visualmente distintos en la blockchain. Esta distinción proporcionaba información a los analistas de cadena. Si una transacción contenía un Payment ID cifrado, era muy probable que fuera dirigida a un exchange o comerciante, reduciendo significativamente los posibles destinatarios.
Análisis de Tiempo y Patrones
Las exchanges normalmente procesaban los depósitos en lotes o con un tiempo predecible. Combinado con el modelo de dirección de depósito única, esto creaba patrones que los analistas sofisticados podían explotar. La combinación de una dirección conocida, patrones de tiempo y la presencia de Payment IDs hacía que los ataques de correlación fueran más factibles de lo que deberían ser.
Error del Usuario como Filtración de Privacidad
Cuando los usuarios olvidaban el Payment ID, a menudo tenían que contactar al soporte y demostrar que la transacción era suya. Esto normalmente implicaba compartir la clave privada de la transacción o información de la clave de visualización, creando una filtración adicional de privacidad y un rastro documental vinculando su identidad a la transacción.
El Cronograma de Descontinuación
La comunidad de Monero reconoció estos problemas y tomó medidas a través de varias actualizaciones del protocolo:
- 2018 (v0.13, Beryllium Bullet) — Los Payment IDs largos (sin cifrar) fueron descontinuados, y el software de las billeteras comenzó a mostrar advertencias cuando los usuarios intentaban usarlos
- 2019 (v0.15, Carbon Chamaeleon) — Los Payment IDs largos fueron prohibidos a nivel de protocolo. Las transacciones con Payment IDs sin cifrar eran rechazadas por la red
- Actualizaciones del software de billeteras — Las billeteras GUI y CLI eliminaron progresivamente los campos de Payment ID y fomentaron el uso de subdirecciones
- Migración de exchanges — Las principales exchanges migraron de Payment IDs a subdirecciones durante 2019 y 2020, con algunos rezagados tardando más
Los Payment IDs cifrados (cortos) a través de direcciones integradas técnicamente siguen funcionando a nivel de protocolo, pero están fuertemente desaconsejados. El software de billetera moderno oculta la opción por completo o muestra advertencias claras. El consenso de la comunidad es que las subdirecciones son el reemplazo correcto.
Subdirecciones: El Reemplazo Superior
Las subdirecciones se introdujeron como el reemplazo recomendado para los Payment IDs. Una subdirección es una dirección única derivada de la dirección principal de tu billetera usando una relación matemática que solo tu billetera puede calcular. Cada subdirección está criptográficamente vinculada a tu dirección principal, pero el vínculo es invisible para los observadores externos.
Cómo Funcionan las Subdirecciones
Tu billetera de Monero puede generar un número esencialmente ilimitado de subdirecciones a partir de tu dirección primaria. Cada subdirección parece una dirección de Monero completamente independiente para cualquier persona que vea la blockchain. Cuando alguien envía XMR a tu subdirección, la salida de la transacción usa las claves públicas de la subdirección para generar la dirección stealth, asegurando que solo tu billetera pueda identificar el pago.
Las principales ventajas de las subdirecciones sobre los Payment IDs incluyen:
- Sin dirección compartida — Cada cliente o pago obtiene una dirección única, eliminando completamente el problema de la dirección única
- Sin filtración de metadatos — Las transacciones a subdirecciones se ven idénticas a las transacciones a direcciones principales en la blockchain
- Sin error del usuario — Los usuarios simplemente envían a la dirección proporcionada sin necesidad de recordar un campo adicional de Payment ID
- No vinculables — Un observador no puede determinar que dos subdirecciones pertenecen a la misma billetera
- Sin problema de dos pools — Todas las transacciones se ven iguales independientemente de si usan direcciones principales o subdirecciones
Subdirecciones para Exchanges
Para las exchanges que anteriormente usaban Payment IDs, la migración a subdirecciones mejoró tanto la seguridad como la experiencia del usuario. En lugar de dar a cada usuario la misma dirección con diferentes Payment IDs, las exchanges ahora generan una subdirección única para cada usuario. La billetera del exchange identifica automáticamente qué subdirección recibió el depósito y acredita la cuenta correcta.
Este enfoque eliminó el problema de soporte más común (Payment IDs olvidados) mientras simultáneamente mejoraba la privacidad de todos los usuarios. Fue un caso raro donde la solución más privada también fue la más amigable para el usuario.
Guía de Migración para Servicios que Aún Usan Payment IDs
Si operas un servicio que aún usa Payment IDs, la migración a subdirecciones es sencilla:
- Genera subdirecciones — Usa el método RPC de la billetera create_address para generar una subdirección única para cada cuenta de usuario
- Almacena el mapeo — Mantén una base de datos que mapee las cuentas de usuarios con sus subdirecciones asignadas
- Actualiza las instrucciones de depósito — Elimina los campos de Payment ID de tu interfaz de depósito y muestra solo la subdirección
- Monitorea las transacciones entrantes — Usa el método RPC get_transfers, que reporta automáticamente el índice de la subdirección para cada transacción entrante
- Mantén compatibilidad retroactiva — Durante un período de transición, continúa escaneando las transacciones antiguas con Payment ID para que los usuarios que guardaron instrucciones antiguas de depósito no se vean afectados
Qué Hacer Si Encuentras un Servicio que Solicita Payment IDs
A pesar de que la descontinuación lleva años, algunos exchanges y servicios más pequeños aún solicitan Payment IDs. Si te encuentras en esta situación, esto es lo que debes saber:
Procede con precaución. Un servicio que todavía usa Payment IDs en 2026 puede no estar al día con los cambios del protocolo de Monero, lo que podría indicar preocupaciones más amplias de mantenimiento y seguridad. Considera si el servicio es confiable.
Usa direcciones integradas si se ofrecen. Si el servicio proporciona una dirección integrada (que incorpora el Payment ID), tu billetera manejará el Payment ID automáticamente. Esto es preferible a ingresar manualmente un Payment ID largo.
Verifica el Payment ID dos veces. Si debes ingresar un Payment ID manualmente, cópialo y pégalo con cuidado. Verifica cada carácter. Un Payment ID incorrecto significa fondos perdidos que pueden ser difíciles de recuperar.
Considera alternativas. Si un servicio exige un Payment ID largo (sin cifrar), el software moderno de Monero probablemente rechazará la transacción. Es posible que necesites usar un servicio diferente o solicitar que actualicen a subdirecciones. Servicios como MoneroSwapper usan infraestructura moderna que no requiere Payment IDs.
La Lección Más Amplia
La descontinuación de los Payment IDs ilustra un principio clave de la filosofía de desarrollo de Monero: la privacidad no se trata solo de primitivas criptográficas, sino también del diseño del protocolo y los patrones de uso en el mundo real. Incluso con cifrado fuerte, los metadatos y patrones de comportamiento creados por los Payment IDs eran suficientes para debilitar las garantías de privacidad.
Al reemplazar los Payment IDs con subdirecciones, Monero eliminó toda una clase de filtraciones de privacidad mientras mejoraba la usabilidad. Este tipo de mejora iterativa, donde el protocolo evoluciona basándose en el análisis de privacidad del mundo real, es lo que distingue a Monero de proyectos que tratan la privacidad como una característica en lugar de un requisito fundamental. La eliminación de los Payment IDs hizo que cada transacción de Monero fuera más privada al eliminar metadatos distintivos y crear un pool de transacciones más uniforme.
Para los usuarios de hoy, el mensaje práctico es simple: usa subdirecciones para todo, evita servicios que aún requieran Payment IDs cuando sea posible, y valora que este cambio de protocolo aparentemente pequeño representa años de investigación y esfuerzo comunitario para hacer más fuerte la privacidad de Monero para todos.
🌍 Leer en