Midnight detalla correcciones de seguridad en Ledger 9.1.0.1
La versión activada en mainnet aborda problemas relacionados con las comisiones de transacción, los límites de bloque y los saldos de las billeteras. También introduce validaciones más estrictas para desarrolladores que construyen sobre Midnight.
By SongMarketCap
Updated:
Midnight ha publicado el código fuente y las notas de la versión de Ledger 9.1.0.1, la versión activada en mainnet durante la actualización de la red del 6 de noviembre. La versión enumera 13 correcciones, incluidas modificaciones en el cálculo de las comisiones de transacción, los límites de bloque y la manera en que las billeteras muestran las monedas.
Según las notas de la versión, los operadores de nodos recibieron el software el 3 de noviembre. El código fuente y las descripciones de las correcciones se publicaron el 7 de noviembre. La actualización también rechaza algunas transacciones que compilaciones anteriores de Ledger 9 aceptaban.
Cambios en las comisiones de transacción y los límites de bloque
El ledger es la parte del software de Midnight que determina si las transacciones son válidas y cuánto cuestan. Midnight pasó a Ledger 9 sin el periodo de anticipación habitual en la red de pruebas Preprod. El proyecto explicó que utiliza un proceso de publicación más controlado cuando las correcciones de seguridad así lo requieren.
Un problema afectaba la forma en que los nodos procesaban entradas repetidas en estructuras de datos compartidas. Según las notas de la versión, una transacción pequeña podía forzar a un nodo a realizar una cantidad de trabajo que aumentaba exponencialmente antes de comprobar su comisión. El ledger actualizado rechaza las entradas repetidas antes de calcular la comisión y procesa los datos en un tiempo proporcional a su tamaño.
Otras dos correcciones abordan los límites de bloque. Antes una transacción podía declarar eliminaciones que nunca ejecutaba, lo que reducía las comisiones de otras partes de la transacción y eludía el límite de bytes netos escritos. Un problema de cálculo independiente permitía que un tiempo de cómputo declarado de al menos 2⁶³ picosegundos se cobrara como cero. Ambos tipos de transacción ahora se rechazan por inválidos.
DUST, billeteras y el puente de Cardano
Las comisiones de transacción de Midnight se pagan usando DUST, un recurso generado a partir de tenencias de NIGHT. Las notas de la versión describen un problema en el que un contrato inteligente podía capturar un excedente del recurso de comisión acreditado durante el registro mientras el registrante aún recibía el monto completo. Ahora se rechazan las llamadas a contratos que transfieran el recurso de comisión como entrada o salida pública.
Otra corrección se refiere a cómo las billeteras reproducen eventos de la cadena. Una salida válida podía contener un registro cifrado que no coincidía con su compromiso criptográfico. Esto podía hacer que una billetera mostrara monedas que no podía gastar o sobrescribiera la posición de una moneda que ya tenía. Las notas de la versión afirman que el estado en cadena no se vio afectado.
La actualización también elimina de forma más exhaustiva de la memoria datos sensibles derivados de las semillas de la billetera. Algunas de las correcciones listadas se refieren a hallazgos de auditoría, y las notas de la versión señalan nueve avisos de seguridad de GitHub cuyas páginas no estaban disponibles públicamente en la mañana del 8 de noviembre.
Una corrección separada se aplica al puente de protocolo destinado a transferir tokens de Cardano a Midnight. Reclamaciones de valor cero podían antes pasar la validación sin pagar una comisión. Ahora las reclamaciones deben cumplir el mínimo requerido o cubrir la totalidad del saldo restante. El puente está presente en el código de Ledger 9 pero permanece deshabilitado en mainnet hasta que una acción de gobernanza separada lo habilite.
[NEWSBREAK]
Paquetes para desarrolladores y problemas pendientes
La versión incluye @midnight-ntwrk/ledger-v9 1.0.1, onchain-runtime-v4 4.0.1 y Proof Server 9.0.1. Un Proof Server genera las pruebas de conocimiento cero utilizadas en las transacciones. La documentación de la actualización de mainnet de Midnight lista por separado Proof Server 9.0.0 entre sus componentes compatibles.
Ledger 9.1.0.1 rechaza transacciones con firmas de comité duplicadas o registros de comisiones duplicados. Un contrato puede contener como máximo 256 operaciones, cada despliegue se cobra por su estado completo y el gas declarado debe mantenerse dentro del límite de bloque.
Varias funciones de Rust para el cálculo de costos ahora devuelven un error en lugar de un valor. Los desarrolladores que calculan comisiones directamente deben tener en cuenta ese cambio en sus integraciones.
Dos problemas conocidos de la versión 9.1.0.0 siguen abiertos. Uno puede causar que se rechace una llamada a contrato cuando su comisión se paga con exactamente un gasto de DUST. La documentación de Midnight identifica usar dos o más gastos de DUST como solución alternativa mientras se planifica una corrección para una versión posterior.