Los nodos de Bitcoin ahora están un paso más cerca de la sincronización instantánea

Nodos de Bitcoin más cerca de sincronización instantánea

Los clientes ligeros de Bitcoin ahora pueden sincronizarse con la punta de la cadena de bloques casi al instante, gracias a un nuevo desarrollo habilitado por la startup de Bitcoin ZeroSync y su trabajo en pruebas de conocimiento cero (ZK). En última instancia, ZeroSync busca permitir que los nodos completos hagan lo mismo.

Las pruebas de conocimiento cero permiten a un probador generar una breve declaración matemática que demuestra a un verificador que un cálculo dado es correcto sin revelar ningún detalle sobre dicho cálculo. Construir esta prueba puede ser computacionalmente costoso, pero la declaración que proporciona siempre es muy compacta, independientemente de cuán grandes sean los datos utilizados como entrada para el cálculo de la prueba, lo que permite una verificación rápida de la corrección de esos datos con certeza matemática. En Bitcoin, este truco matemático puede ser muy útil para los nodos y clientes.

Los nodos completos de Bitcoin están notoriamente obligados a descargar y verificar cada pieza de datos que conforma la cadena de bloques, desde su inicio en enero de 2009 hasta la fecha actual. Debido a la dificultad de escalar esta configuración tan completa, Satoshi Nakamoto imaginó en el libro blanco de Bitcoin un tipo diferente de cliente que pudiera verificar sus pagos entrantes sin ejecutar un nodo completo.

Los clientes ligeros de Bitcoin aprovechan un mecanismo de verificación de pagos simplificado (SPV). Al recibir un pago, el cliente consulta a los nodos de la red para obtener los encabezados de la cadena más larga. Luego, es capaz de encontrar el bloque al que se agregó la transacción entrante, lo que demuestra que los nodos de la red la han aceptado como válida. A medida que se agregan más bloques a la cadena después de ese bloque, el cliente ligero obtiene más confirmaciones de que el pago fue válido y aceptado por la red en un bloque.

Sin necesidad de ningún cambio de consenso en Bitcoin, las pruebas de conocimiento cero mejoran esta configuración al comprimir los encabezados en una sola prueba. De manera similar a cómo cada bloque de Bitcoin comprime efectivamente los datos de sus transacciones en un árbol de Merkle e incluye la raíz de ese árbol en su encabezado, el trabajo de ZeroSync toma cada encabezado de bloque de Bitcoin y los agrupa en otro árbol de Merkle. Este proceso permite que la cadena de encabezados se sintetice en un dato corto y ligero: la prueba.

La prueba de cadena de encabezados puede demostrar rápidamente si un determinado encabezado de bloque está incluido en la cadena. Luego, se puede utilizar un encabezado de bloque para certificar si una transacción específica se incluyó en ese bloque. Este proceso es muy similar al método SPV descrito anteriormente, pero más eficiente. En lugar de tener que mantener una copia completa de cada encabezado en la cadena de bloques para SPV, con las pruebas de conocimiento cero, el cliente ligero solo necesita almacenar esa pequeña prueba de cadena de encabezados, lo que le permite sincronizarse con el estado más reciente de la cadena en segundos.

En última instancia, lo que la prueba de cadena de encabezados puede demostrar es que cada bloque en la cadena cumplió con el requisito de dificultad en el momento en que fue minado. En otras palabras, verificar la prueba de cadena de encabezados permite al usuario o cliente asegurarse de que cada bloque de Bitcoin hasta esa altura específica se minó correctamente y cumplió con los criterios de dificultad de minería en ese momento.

El lanzamiento de la primera prueba de cadena de encabezados completa fue el primer hito de ZeroSync. Para lograr su visión más grande, que es proporcionar una verificación completa de la cadena de bloques histórica a los nodos completos sin requerir que los usuarios la descarguen y procesen, el equipo necesita cumplir con otros dos requisitos. El segundo llevaría la prueba de cadena de encabezados a un nuevo nivel y permitiría que un nodo se sincronice de manera similar a la función Assume Valid de Bitcoin Core. El tercero y último proporcionaría la sincronización completa de la cadena de bloques de Bitcoin tal como se imaginó.

Assume Valid es una opción en Bitcoin Core, habilitada de forma predeterminada, que asume que todos los scripts hasta una determinada altura de bloque son válidos. Esto significa que los nuevos nodos completos que sincronizan la cadena de bloques con la descarga inicial de bloques (IBD) pueden omitir la verificación de scripts desde el bloque Génesis hasta la altura de bloque establecida por el cliente Bitcoin Core en un lanzamiento determinado. Estos scripts son la parte de datos de testigo de las transacciones, principalmente las firmas que resuelven los scripts de bloqueo y desbloquean los fondos que se van a gastar, así como los bloqueos de tiempo y otras condiciones de gasto programadas. Los usuarios tienen la opción de establecer `assumevalid=0` y obligar a su cliente a realizar una verificación completa de todos los scripts, además de la verificación de los demás contenidos de bloque. Sin embargo, la suposición general y bastante segura detrás de habilitar Assume Valid de forma predeterminada es que se ha demostrado suficiente prueba de trabajo hasta esa altura de bloque específica, lo que hace razonable creer que los scripts anteriores son válidos.

La oferta intermedia de ZeroSync, cuando esté completa, permitirá a los usuarios de Bitcoin sincronizar sus nodos de manera similar a una IBD predeterminada de Bitcoin Core. El nodo descarga todos los datos desde el inicio de Bitcoin hasta la fecha actual, pero solo verifica los datos de testigo después de la altura de assumevalid. El conjunto de UTXO también es una parte necesaria de la ecuación. Para resolver eso, ZeroSync aprovecha Utreexo, un proyecto que también busca aumentar la eficiencia en la sincronización de nodos de Bitcoin. Utreexo proporciona el conjunto de UTXO más reciente en un bloque dado, y ZeroSync puede agregar eso a su configuración basada en pruebas de conocimiento cero. El resultado es una prueba de cadena de encabezados mucho más corta y un conjunto de UTXO más compacto y eficiente, que los clientes pueden aprovechar para satisfacer sus necesidades de verificación de pagos.

La oferta principal del equipo llevará las cosas un paso más allá y permitirá que los nodos se sincronicen con el estado más reciente de Bitcoin sin asumir que ningún script es válido. Utilizando pruebas de conocimiento cero (ZK proofs), los nodos completos podrán lograr una sincronización inicial mucho más rápida con posiblemente mayores garantías de seguridad que la configuración predeterminada de Bitcoin Core, que utiliza assumevalid.

Es importante tener en cuenta que incluso si los usuarios de Bitcoin Core desactivan assumevalid, verificando todos los scripts y logrando suposiciones de seguridad similares a la oferta principal de ZeroSync, la mayor propuesta de valor de esta última sigue siendo la ganancia sustancial en eficiencia y velocidad para verificar toda esta información. Mientras que la cadena de bloques de Bitcoin actualmente tiene 510GB de datos, el enfoque de ZeroSync permitirá, una vez completo, un proceso mucho más rápido al producir una prueba corta y ligera de poco más de 1MB, una mejora en el rendimiento de varias órdenes de magnitud en comparación con un proceso de descarga inicial estándar utilizando Bitcoin Core, al mismo tiempo que se asegura de que se sigan exactamente las mismas reglas de consenso.

Las ganancias en eficiencia solo se volverán más importantes a medida que la cadena de bloques de Bitcoin siga creciendo bloque tras bloque. Eventualmente, la descarga y verificación de toda la cadena de bloques podría volverse prohibitiva en términos de ancho de banda y almacenamiento, especialmente en partes del mundo donde el acceso a Internet de alta velocidad y discos duros más grandes es limitado o costoso.