Geth 1.17.4: actualización de mantenimiento y avances hacia Ámsterdam

imagem 5

Esta es una versión de mantenimiento con correcciones de errores y mejoras acumuladas, y se recomienda a todos los usuarios. También continúa el trabajo de implementación para el próximo hardfork de Ámsterdam.

Un cambio destacado: Clef ha sido eliminado. El firmante independiente clef se ha trasladado a su propio repositorio separado.

Implementación del fork (Ámsterdam)

En el camino hacia Ámsterdam, se ha implementado EIP-7928 para listas de acceso a nivel de bloque: ahora la lista de acceso del bloque se construye y verifica durante la ejecución del bloque, y se ha completado el lado servidor de los mensajes BAL de eth/71. Además, se ha añadido un nuevo protocolo de sincronización de estado, snap/2, basado en dichas listas (EIP-8189). También se implementó EIP-8037, que incrementa el coste de gas para la creación de estado, y el sistema de tracing proporciona un nuevo hook OnGasChangeV2 para gas multidimensional. En la API de Engine, se incluye engine_newPayloadWithWitnessV5 y el formato del testigo ahora usa el orden canónico de campos de la especificación. Las herramientas evm t8n se actualizaron para Ámsterdam, añadiendo soporte para BAL y número de slot, así como la exportación de hojas de trie binario. Para EIP-7843, se establece el número de slot en el bloque pendiente después de Ámsterdam.

Geth

Las cachés ahora se dimensionan teniendo en cuenta el límite de memoria del cgroup (por ejemplo, la opción --memory de Docker) cuando está configurado. Se han corregido varios problemas menores con indicadores de línea de comandos y registros, y se eliminaron varias banderas de línea de comandos que estaban obsoletas desde hace tiempo.

RPC

Se ha añadido eth_baseFee, que devuelve la tasa base del siguiente bloque. También se incluye eth_capabilities, que permite a los clientes descubrir qué datos históricos puede servir un nodo. Un nuevo método, debug_clearTxpool, limpia la pool de transacciones. Los métodos de lectura de estado (como eth_getBalance, eth_getCode y eth_getStorageAt) ahora usan latest por defecto cuando se omite el parámetro de bloque. Se corrigieron incidencias en eth_simulateV1: un código de error incorrecto por «tasa base demasiado baja» y una regresión en las retiradas anteriores a Shanghái. debug_setHead ahora propaga los errores de rebobinado en lugar de ignorarlos silenciosamente. Las transacciones EIP-7702 con dirección To nula ahora se rechazan. Las respuestas HTTP RPC siempre establecen Content-Length y se corrigió un error en el código de estado del handshake de WebSocket. Además, el cliente ahora puede configurar la propagación del contexto de traza mediante la cabecera traceparent, y se ha añadido trazado a las escrituras de respuestas.

GraphQL

El cuerpo de las solicitudes GraphQL ahora está limitado a 5 MiB. Se rechazan las consultas de rango de logs con begin > 0 y end == 0. El resolver de Block.raw devuelve bytes vacíos cuando falta el cuerpo del bloque.

Core

Se introdujo una caché global para los bitmaps JUMPDEST, lo que acelera la ejecución de la EVM. Las operaciones de pila ahora se computan en el lugar, evitando copias por operando. Se añadieron nuevos contadores de aciertos/fallos en la caché de código. También se corrigió una condición de carrera en la generación de instantáneas durante el apagado.

API de Engine y Blobs

Se optimizó la codificación JSON para grandes cargas de blobs en la API de Engine, y se deshabilitó la compresión gzip en dicha API. Se añadió engine_hasBlobs, y engine_getBlobs ahora cuenta solo los blobs realmente disponibles. Una caché para las solicitudes GetBlobs reduce la latencia, y se agregó trazado otel a estos endpoints. Las transacciones sidecar de blob v0 que fueron reorganizadas ahora se descartan en lugar de convertirse. Se introdujo testing_commitBlockV1 como complemento de escritura de testing_buildBlockV1. Por último, los nuevos payloads se importan en el génesis sin importar el estado de sincronización.

Redes

El descubrimiento NAT mediante STUN ya no falla en servidores IPv6. Además, se aplicaron varias correcciones de robustez en snap-sync: se elimina el estado no cubierto antes de reanudar, se corrigió un estancamiento en la puesta al día, la sincronización se reinicia si el BAL requerido no está disponible y el pivote se congela una vez completada la descarga de estado.

Para un resumen completo de los cambios, consulta el hito de la versión 1.17.4 de Geth.


Como con todas nuestras versiones anteriores, puedes encontrar los binarios precompilados para todas las plataformas en nuestra página de descargas, imágenes Docker bajo ethereum/client-go (etiqueta «stable»), paquetes para Ubuntu en nuestro repositorio Launchpad PPA y paquetes para macOS en nuestro repositorio Homebrew Tap.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *