Hace tiempo que la comunidad Liquid nos pide un cliente más ligero para los nodos Elements, a fin de incrementar la compatibilidad con el hardware “casero”, que es más económico y ya viene listo para usar. Como primera respuesta a dicho pedido, Elements 21.1.1 optimiza los encabezados de bloque de Liquid, y tenemos planeado incrementar todavía más la eficiencia de los nodos en futuros lanzamientos.
Con la versión 21.1.1, nuestros parámetros internos indican una reducción de más del 50 % en el uso de memoria al ejecutar liquidv1. Mediante el recorte de algunos campos de encabezado de mayor tamaño, almacenados en la memoria, logramos disminuir el gasto general. Gracias a estas nuevas optimizaciones, confiamos en que los usuarios podrán ejecutar la pila completa de Bitcoin (es decir, Bitcoin, Core Lightning y nodos Liquid) de manera simultánea con hardware igual o más potente que una Raspberry Pi de 8 GB.
Además, Elements 22.1.1 está repleta de actualizaciones de mantenimiento y correcciones menores, entre ellas:
● Corregimos los mensajes de ayuda para RPC de getsidechaininfo y testproposedblock
● Ocultamos los campos RPC de la mainchain en los registros
● Habilitamos la ejecución de redes Regtest con peg-ins de tipo pago a testigo por hash de script (P2WSH, por sus siglas en inglés)
● Corregimos el desborde inferior cuando los bloques se adelantan a los encabezados
Además, aplicamos varias correcciones a los activos mediante elements-qt. Por ejemplo, programamos el comando “Use available balance” (Utilizar el saldo disponible) para que respete el activo elegido, en lugar de optar por L-BTC por defecto.
Si le interesa conocer los detalles más técnicos de este lanzamiento, consulte el registro de cambios completo y cuéntenos si está conforme o si podríamos mejorar; para ello, déjenos sus comentarios en la página de los programadores de la comunidad Build On L2 (BOL2).
Optimización de Elements (la clave está en los encabezados)
Queremos dar más detalles sobre las optimizaciones que posibilitaron la reducción del gasto de memoria en Elements 21.1.1.
Parte del comportamiento heredado de Bitcoin Core consiste en que todos los encabezados de bloque (metadatos de bloque) de Elements se almacenan en la memoria en todo momento. En Bitcoin, esos encabezados son relativamente pequeños y, por ende, de escaso impacto, pero en Elements, los encabezados son mucho más grandes, debido a DynaFed, los datos de firma del bloque y a plazos más rápidos (un minuto) entre bloques. En la actualidad, la blockchain de Liquid (liquidv1) contiene aproximadamente el triple de bloques que Bitcoin.
Conforme a los nuevos parámetros trim_headers (véase PR #1190), eliminamos algunos de los campos de encabezado más grandes a fin de disminuir los gastos generales de memoria. Estos se eliminan una vez que transcurre un determinado plazo entre bloques, al cabo del cual estimamos que dichos campos resultan innecesarios. Este cambio afecta particularmente la descarga inicial del bloque (IBD, por sus siglas en inglés) porque, en general (para Bitcoin y sin trim_headers), los encabezados y los bloques se descargan por separado, siempre y cuando los encabezados se descarguen primero, a fin de validar los bloques una vez que lleguen. En cambio, con la modalidad trim_headers, eso no ocurre. O bien se “recortan” los bloques, lo cual impide validarlos, o no se los recorta, pero el consumo de memoria sigue siendo el mismo. Nuestra solución consiste en descargar los encabezados y los bloques con un mayor grado de sincronización, para que los encabezados ya no puedan adelantarse tanto a los bloques.
Al recortar algunos de los campos innecesarios relacionados con los encabezados, que se almacenaban en la memoria, logramos reducir el gasto general. No obstante, los datos del disco permanecen intactos, de modo que los usuarios pueden elegir libremente si quieren aplicar estos parámetros o no.
Únase a BOL2 y solicite nuevas características
La plataforma Elements sigue siendo gratuita y de código abierto: cualquiera que desee configurar una herramienta para la sidechain a partir de Bitcoin puede descargarla. Desde su primer lanzamiento, hemos incorporado opcodes nuevos y características como Confidential Transactions e Issued Assets. Es más: algunas de esas mejoras de Elements se implementaron en Bitcoin, incluidas OP_CSV y Segregated Witness (SegWit). A futuro, Simplicity, un lenguaje de contratos inteligentes de última generación, que lanzaremos en Liquid en la segunda mitad del año, también podría sumarse a las optimizaciones de Bitcoin.
Queremos profundizar ese legado y por eso fomentamos los comentarios de parte de la comunidad Bitcoin sobre opcodes y características nuevas que hagan falta en Liquid. La plataforma comunitaria Build On L2 (BOL2) es la mejor manera de conectar con el equipo de ingenieros y con otros usuarios avanzados de Liquid a fin de comentar ideas y proyectos nuevos.
Dentro de unas horas, el Gerente de ingeniería de Liquid, Pablo Greco, llevará a cabo una entrevista interactiva en BOL2 y responderá todas las preguntas de la comunidad sobre el lanzamiento 22.1.1.
¡Ansiamos encontrarnos allí para recibir sus preguntas y conversar!