Notas de la versión: v0.70.2
v0.70.2
Sección titulada «v0.70.2»Título: Mejorar la seguridad del ledger, la sincronización y la fiabilidad de las API
Fecha: Not provided
Versión: v0.70.2
Esta versión mejora la validación del ledger, la resiliencia de la sincronización, la seguridad de la base de datos, el tratamiento de transacciones y la precisión de las API para los nodos Dingo y los consumidores de la biblioteca.
Compatibilidad de red recomendada ⚠️
Sección titulada «Compatibilidad de red recomendada ⚠️»| Network | Compatible |
|---|---|
| mainnet | ⛔ |
| preprod-testnet | ✅ |
| preview-testnet | ✅ |
| musashi | ✅ |
Aspectos destacados
Sección titulada «Aspectos destacados»-
Mejoró la entrega de eventos para que los suscriptores normales que se bloquean más allá del tiempo de espera se desconecten con
ErrEventSubscriberStalledy telemetría, mientras que los suscriptores de chainsync, actualización de cadena y blockfetch conservan un comportamiento de bloqueo sin pérdidas. La desconexión opcional de eventos de bloques no es fatal. -
Corrigió la recuperación de certificados operativos en el límite de Mithril al importar del snapshot el contador certificado de cada pool e ignorar el historial obsoleto anterior al límite, manteniendo las comprobaciones de rotación continua.
-
Reforzó el descubrimiento de paridad de la documentación al convertir las rutas a una forma canónica, normalizar los separadores y excluir los worktrees generados y el contenido anidado de
.gitonode_modulespara mantener comprobaciones coherentes entre plataformas. -
Protegió la forja de bloques al seleccionar las transacciones candidatas desde un único snapshot de validación del ledger y volver a comprobar la punta padre antes de firmar.
-
Limitó el trabajo de
FindIntersecten cada solicitud al eliminar puntos duplicados y aplicar un presupuesto de búsquedas por conexión; las solicitudes que agotan el presupuesto devuelven el resultado existenteIntersectNotFound. -
Optimizó la limpieza de la base de datos para que las eliminaciones incompletas de blobs devuelvan
ErrBlobDeleteIncomplete, registren errores y expongandingo_database_blob_orphans_totaldespués del commit duradero de los metadatos. -
Informó mediante UTxO RPC de la altura de la punta del ledger que ya conoce, en lugar de buscar un bloque almacenado y recurrir a la altura cero.
-
Alineó el cálculo de recompensas con la época de rendimiento y usó la época de cálculo para la duración de la época, corrigiendo los fondos de recompensas de Preview y cambiando el campo de registro de recompensas de stake aplicadas a
performance_pparams_type. -
Rechazó el inicio cuando el
NetworkMagicdistinto de cero del snapshot de pares no coincide con el valor del nodo; el valor cero sigue indicando que no se especificó el valor del snapshot. -
Restauró la ronda de expansión monetaria de la época 0 a la 1 al inicializar los fondos de recompensas de la época cero y tratar de forma segura los snapshots de génesis nuevos sin stake.
-
Validó las transacciones Leios obtenidas contra su posición en el manifiesto, tamaño y hash antes de almacenarlas en caché o utilizarlas, incluidos los datos conservados de descargas parciales.
-
Limitó los escaneos de recuperación de Genesis mediante memorización en cada pasada y conservó un fallback de ChainSync que falla de forma segura para las rutas de reversión no resueltas.
-
Verificó las pruebas VRF de nonce de TPraos en los encabezados de Shelley a Alonzo a partir del CBOR del cuerpo de encabezado firmado antes de admitirlos.
-
Corrigió las comprobaciones de paridad de Koios para la presencia de pools y la alineación de las épocas de parámetros de pools, evitando discrepancias falsas solo de parámetros y comparando el coste y el margen del pool desde la época de stake, mientras que los bloques producidos siguen vinculados a la época de parámetros.
-
Estabilizó la propagación acelerada de transacciones y la limpieza de claves de stake de DevNet haciendo que
txpumpespere al génesis efectivo de ejecución y conserve los directorios de claves de stake propiedad de los consumidores. -
Comprobó los tamaños de las ofertas y los manifiestos de bloques endosadores de Leios, limitando cada entrada de caché a 16 MiB y la caché total a 256 MiB con expulsión determinista; las entradas demasiado grandes se vuelven a cargar sin almacenarse en caché.
-
Continuó ejecutando comprobaciones estructurales y del intervalo de validez para las transacciones marcadas como
IsValid: false, omitió la evaluación de la fase dos y mostró los errores de mapeo de Plutus mediante UTxO RPC. -
Liberó el estado de chainsync de nodo a cliente al cerrar o reemplazar conexiones sin duplicar la limpieza de nodo a nodo.
-
Conservó el plazo de apagado configurado durante las operaciones activas de restauración y truncamiento, y escaló a
errStorageDrainUnconfirmedcuando el supervisor necesita recuperar el servicio mediante un reinicio supervisado. -
Distinguió prime-mainnet de Cardano mainnet al propagar la identidad de red configurada en lugar de basarse en una identidad de génesis de mainnet compartida.
-
Protegió la capacidad del constructor de bloques Leios en tiempo de compilación para que los cambios de interfaz fallen durante las compilaciones y no durante la forja de bloques.
-
Rechazó índices envueltos y valores de activos fuera de rango en las conversiones numéricas, rangos de eliminación, valores con signo de SQLite, activos y UTxO, incluidos los builds de 32 bits.
-
Evitó el desbordamiento aritmético en la gobernanza y las donaciones mediante sumas comprobadas y límites de duración que fallan de forma segura antes de persistir parcialmente el estado.
-
Configuró el parámetro de seguridad de replay del modo de carga para la era correcta antes de ejecutar los hooks de replay y la validación de reversiones.
-
Inicializó los nonces de época posteriores a Byron en los límites entre varias eras a partir de
ShelleyGenesisHash, y falló de forma segura cuando falta la configuración necesaria. -
Añadió snapshots puntuales del estado del cliente de chainsync desde
LookupClient, con una copia independiente del hash del cursor, y sincronizó el estado de reversión para que una conexión lenta no bloquee a otros clientes. Los consumidores deben usar*ChainsyncClientStateSnapshoten lugar de*ChainsyncClientState. -
Aplicó una validación de retiros de recompensas específica de cada era para rechazar importes superiores al saldo de recompensas activo.
-
Devolvió errores tipados cuando
LeiosFetchno puede proporcionar datos del bloque endosador o del cuerpo de la transacción, y mantuvo diferenciados los errores de mapas de bits malformados. Sin un gestor de votos opcional,LeiosFetchdevuelve una respuestaMsgVotesvacía y válida, mientras queLeiosVotesindependiente sigue sin estar disponible. -
Aisló los anuncios OCIN obsoletos o procedentes de emisores desconocidos después de validar su criptografía: los acepta para el manejo del protocolo, pero no los registra, procesa, publica ni retransmite, y tampoco desconecta la conexión. Los anuncios recientes conservan el comportamiento normal.
-
Impuso en los perfiles estándar el rechazo de bloques cuando el stake activo total es cero o cuando falta el coeficiente de ranura activa, o este no es positivo, e impide evaluar la elegibilidad del líder. El procesamiento de
catch-uppuede aplazar la evaluación cuando no está disponible el snapshot del stake del líder. -
Contuvo los pánicos en la selección del líder, la validación de bloques forjados y las devoluciones de llamada de publicación de bloques, registró trazas de pila, los convirtió en fallos de fase existentes y contó los pánicos recuperados con
dingo_forge_panic_recovered_total{phase}para que continúe el siguiente ciclo de forja. -
Permitió retiros de recompensas mediante hash de script en Conway PV10 y PV11 sin aplicar la regla de delegación de DRep. Los retiros mediante hash de clave siguen sujetos a esa regla.
-
Coordinó la limpieza durante el inicio y el apagado para que
Node.Stopno compita con la reversión posterior a un fallo de inicio ni cierre dos veces los componentes. -
Reparó la configuración de los benchmarks de ledger y mempool en Go para que ya no entren en pánico ni fallen antes de la medición.
-
Actualizó la documentación y los ejemplos para consumidores con información de compatibilidad, endpoints y versiones, y añadió documentación GoDoc para el paquete raíz.
-
Incorporó
POST /api/v0/utils/txs/evaluatepara evaluar CBOR de transacciones sin enviarlas y devolver las unidades de ejecución de los redeemers para punteros comospend:0omint:0. El endpoint devuelve415con un tipo de contenido incorrecto,413con cuerpos demasiado grandes,400con cuerpos vacíos o CBOR no válido y500con otros fallos de evaluación.
Registro completo de cambios: v0.70.1…v0.70.2
Docs authored by Doc Holiday