Saltar al contenido

Notas de la versión: 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.

NetworkCompatible
mainnet
preprod-testnet
preview-testnet
musashi
  • Mejoró la entrega de eventos para que los suscriptores normales que se bloquean más allá del tiempo de espera se desconecten con ErrEventSubscriberStalled y 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 .git o node_modules para 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 FindIntersect en 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 existente IntersectNotFound.

  • Optimizó la limpieza de la base de datos para que las eliminaciones incompletas de blobs devuelvan ErrBlobDeleteIncomplete, registren errores y expongan dingo_database_blob_orphans_total despué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 NetworkMagic distinto 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 txpump espere 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 errStorageDrainUnconfirmed cuando 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 *ChainsyncClientStateSnapshot en 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 LeiosFetch no 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, LeiosFetch devuelve una respuesta MsgVotes vacía y válida, mientras que LeiosVotes independiente 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-up puede 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.Stop no 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/evaluate para evaluar CBOR de transacciones sin enviarlas y devolver las unidades de ejecución de los redeemers para punteros como spend:0 o mint:0. El endpoint devuelve 415 con un tipo de contenido incorrecto, 413 con cuerpos demasiado grandes, 400 con cuerpos vacíos o CBOR no válido y 500 con otros fallos de evaluación.

Registro completo de cambios: v0.70.1…v0.70.2


Doc Holiday logo

Docs authored by Doc Holiday

Editar página

Última actualización: