¿Cómo se implementan los contratos inteligentes en la red Bitcoin?
Escrito por: Simon Shieh
Revisión del prefacio
En el artículo anterior “Recorrido por los planes de expansión ecológica de BTC: dónde buscar inscripciones”, discutimos los principios técnicos y los posibles problemas de seguridad de la ecología de inscripciones populares, y mencionamos la posibilidad de utilizar inscripciones recursivas para implementar contratos inteligentes. Sin embargo, debido a las restricciones de Luke sobre los scripts Taproot, la inscripción recursiva parece tener algunos obstáculos. Entonces, ¿existen otras posibilidades para implementar contratos inteligentes en la red Bitcoin?
Robin Linus, cofundador del desarrollador de blockchain ZeroSync, publicó un artículo titulado “BitVM: Compute Anything on Bitcoin” el 9 de octubre de 2023, en el que propuso lanzar un plan para llevar contratos inteligentes a la cadena de bloques de Bitcoin.
El artículo propone una idea muy interesante para utilizar taproot para realizar casi cualquier cálculo arbitrario y utilizar estos cálculos para verificar lo que está sucediendo fuera de la cadena de Bitcoin. El truco consiste en mantener toda la lógica fuera de la cadena y desafiar los resultados deshonestos dentro de la cadena con unos pocos pasos de cálculo cuando otros los afirman.
En otras palabras, se trata de colocar la lógica de un Verificador en la red de Bitcoin, utilizar la fuerte seguridad de consenso de Bitcoin para convertirse en un tercero confiable para cualquier capa informática completa de Turing y luego utilizar el principio de Optimistic Rollups para lograrlo. -cálculos en cadena Verificación de resultados.
Entonces, ¿cómo poner una parte de la lógica del Verificador en la red Bitcoin? Para hacerme eco del “grabado” de la sección anterior, me gustaría llamarlo la tecnología de “grabado” de circuitos en la red Bitcoin.
Circuito de puerta lógica
Dentro de su computadora o teléfono celular, la electricidad realiza todas las funciones de la computadora emitiendo una serie de unos y ceros. Esto se logra mediante millones de pequeños componentes llamados puertas lógicas. Estas puertas lógicas son los componentes básicos de los chips de computadora.
Cada puerta lógica recibe uno o dos “bits” de información, y cada bit es un 1 o un 0. Luego, la puerta lógica realiza una operación lógica simple de acuerdo con las reglas establecidas, como las operaciones “Y”, “O” o “NO”. El resultado de estas operaciones también es un bit, ya sea un 1 o un 0. Después de completar la operación, el resultado se pasa a la siguiente puerta lógica.
Este sistema basado en operaciones lógicas simples ha llevado a la revelación de que incluso los cálculos y funciones más complejos se pueden lograr combinando una gran cantidad de operaciones lógicas simples. Esta combinación y colaboración de puertas lógicas es la base para que las computadoras y dispositivos electrónicos modernos puedan realizar tareas complejas. A través de estas operaciones lógicas básicas, las computadoras pueden manejar operaciones aritméticas complejas, almacenamiento de datos, representación de imágenes y otras funciones.
La siguiente imagen es una puerta lógica muy especial llamada “puerta NAND”. Puede construir cualquier tipo de circuito de puerta lógica. Por supuesto, no puede ser tan eficiente como otros tipos especializados de puertas, pero aún así se puede hacer. El circuito de puerta lógica de BitVM está compuesto por puertas NAND.
Cómo grabar la puerta NAND en Bitcoin
Se puede construir una puerta NAND sobre los scripts de Bitcoin existentes combinando un bloqueo hash con dos códigos de operación que pueden no ser muy conocidos: OP_BOOLAND y OP_NOT.
En primer lugar, se puede utilizar un bloqueo hash para crear un script de rama que se puede utilizar de dos maneras: para satisfacer el bloqueo hash o para satisfacer el bloqueo hash B. Por lo tanto, la ruta A pone un 1 en la pila y la ruta B pone un 0 en la pila.
Al satisfacer un bloqueo hash específico, puede “desbloquear” un bit que sirve como una de las entradas a la puerta NAND que vamos a construir. Dado que solo puede satisfacer los requisitos de una de las rutas, este enfoque solo permite a los usuarios enviar un bit a la vez.
La lógica de una puerta NAND es recibir dos bits como entrada y un bit de salida. Si ambos bits de entrada son 1, la salida es 0; si las entradas son otras combinaciones, la salida es 1. Usando dos trucos de bloqueo hash, puede enviar estas dos entradas y verificar que la salida sea correcta, que es para lo que sirven OP_BOOLAND y OP_NOT.
La operación de OP_BOOLAND es la opuesta a una puerta NAND: si ambas entradas son 1, la salida es 1; cualquier otra combinación de entradas produce un 0. OP_NOT genera el valor opuesto de la entrada. Entonces, al combinar estos dos códigos de operación, puedes tomar dos entradas y hacer la suma inversa en la pila de scripts. Finalmente, puede usar OP_EQUALVERIFY y el truco de bloqueo hash para verificar el resultado de la afirmación. Si los resultados reales de la operación NAND en la pila son inconsistentes con la salida afirmada por el usuario, el script no pasa la validación.
De esta manera, el circuito de la puerta NAND está “grabado” en el script de Bitcoin, forzando efectivamente una operación de puerta NAND virtual a través del script de Bitcoin.
Cómo grabar circuitos a gran escala
Aunque la idea de usar scripts Taproot para lograr el grabado de circuitos es genial, y mucho menos circuitos de escala ultragrande como las PC, incluso para implementar cualquier conjunto de cálculos se requieren miles de circuitos de puerta NAND, lo cual está limitado en Bitcoin. ¿Cálculos complejos en el espacio de script Taproot?
BitVM propone el método del árbol de script Taproot (Taproot Tree). Para implementar procesos computacionales complejos en scripts de Bitcoin, se pueden construir circuitos computacionales conectando puertas lógicas en serie. En este esquema, los bloqueos hash se utilizan para unir puertas individuales para lograr la ejecución secuencial de operaciones lógicas. Específicamente, si el script de una puerta produce un resultado de salida diferente C1 o C2 basado en una entrada de preimagen hash diferente (valor de texto sin formato hash), entonces la siguiente puerta utilizará el valor de bloqueo hash coincidente como su entrada.
Este método puede implementar un mecanismo de penalización, es decir, si intenta mentir sobre el resultado de la puerta anterior, solo puede revelar la imagen original de otro bloqueo hash. Este mecanismo se puede utilizar para la computación interactiva entre dos usuarios, donde acuerdan de antemano participar en una tarea informática específica y luego descomponen el proceso informático en circuitos que constan únicamente de puertas NAND. Deben elegir el bloqueo hash apropiado para cada puerta del circuito y codificarlo en el árbol de script que bloquea el UTXO.
Luego se usan múltiples direcciones para formar una matriz de direcciones Taproot, y luego el circuito lógico se graba en el script Taproot de una serie de transacciones UTXO conectadas en una estructura de árbol a través del método Taproot Tree, formando finalmente una lógica “similar a un contrato” que puede manejar ciertas tareas informáticas.
Desafío de fraude
El desafío de fraude es el núcleo de la tecnología OP (Optimism Rollup) (aunque aún no se ha implementado ~). La idea es que antes de que se envíe un lote de transacciones en lotes, el retador lanza un desafío de fraude (promesa versus apuesta) en las transacciones que se consideran incorrectas, el contrato Verificador en la red principal determinará si el remitente ha hecho mal en función de los cambios en la raíz del estado después de la ejecución, y luego asignará los activos prometidos por ambas partes.
En bitVM, el árbol de script está diseñado en dos circuitos. Además de permitir que el probador se someta a un circuito, el retador también debe poder cuestionar la declaración del probador. Esto se puede lograr firmando previamente una serie de transacciones. Estas transacciones prefirmadas se conectan a través de “Desafío->Respuesta->Desafío->…”. Si una de las partes se detiene por un período de tiempo, la otra parte ganará el desafío y recuperará los depósitos de ambas partes.
La imagen de arriba muestra una serie de transacciones prefirmadas:
Desafío: Vicky (desafiante/verificador) libera una imagen previa en la ruta del script (estas imágenes previas solo las conoce el retador), que se utiliza para cuestionar la prueba;
Respuesta: Paul (el probador) ejecuta la puerta lógica correspondiente y envía los fondos de regreso al script inicial;
Cualquier afirmación inconsistente puede ser rápidamente refutada después de algunas rondas de investigación. Si el probador deja de cooperar con el retador fuera de la cadena, el retador obligará al probador a cooperar en la cadena: cada vez que el retador desbloquea un bloqueo hash, el nodo hoja Taproot correspondiente a cada puerta NAND en el UTXO del probador solo tendrá It solo se puede gastar si el probador conoce una preimagen que tiene el retador. El probador puede demostrar que un nodo hoja Taproot determinado se ejecuta correctamente al revelar sus entradas y salidas. La premisa es que el retador desbloquea la imagen original del hash correspondiente a Tapleaf al revelarla. A través de la búsqueda binaria, el retador puede bloquear el error del probador después de una ronda limitada (O (logn)) de desafíos y respuestas.
Todo el proceso implica múltiples rondas de interacciones para garantizar que el contrato se resuelva correctamente. El retador puede seguir desafiando al probador hasta que confirme el resultado correcto para cada puerta, o el retador puede retirar los fondos después de un cierto tiempo en caso de que el probador no responda al desafío. En un mundo ideal, todas las operaciones se llevan a cabo fuera de la cadena y ambas partes colaboran para completar el acuerdo, pero si la cooperación se rompe, ambas partes pueden garantizar que el contrato se resuelva correctamente mediante un juego de desafío en la cadena.
Obstáculos de aterrizaje y problemas de seguridad.
Esta propuesta implica procesar y generar cantidades extremadamente grandes de datos. El árbol de script Taproot utilizado puede contener miles de millones de nodos hoja, y el tiempo de procesamiento de las transacciones prefirmadas asociadas puede tardar al menos varias horas para garantizar una liquidación precisa. La ejecución de las condiciones de desbloqueo preestablecidas para cada dirección Taproot requiere una tarifa de minería, por lo que cuantas más combinaciones de direcciones, mayor será el costo.
Una limitación importante de este esquema es que solo funciona para interacciones entre dos participantes: uno, como probador, que certifica la exactitud de su ejecución; y el otro, como verificador, que cuestiona las afirmaciones del primero. Si bien estudios futuros pueden encontrar formas de incluir a más participantes, en este momento no parece haber una solución clara.
En un escenario de acuerdo cooperativo, todos los participantes deben estar en línea, lo que plantea ciertas restricciones a la practicidad y conveniencia del protocolo.
En términos de seguridad, existen principalmente los siguientes riesgos de seguridad:
Debido a limitaciones de costos, una gran cantidad de trabajo informático debe realizarse fuera de la cadena. La computación fuera de la cadena tiene algunos riesgos de seguridad comunes a los servicios centralizados.
Una gran cantidad de datos se almacena fuera de la cadena, y la disponibilidad y la seguridad de los datos también son puntos de riesgo que deben considerarse.
Si existen lagunas lógicas en el circuito grabado en sí también es un punto de riesgo para la seguridad. Debido a la ilegibilidad del circuito, se deben pagar más costos de auditoría o costos de verificación formal.
Metatrust ha ayudado a Uniswap a realizar un trabajo de verificación formal integral y tiene una experiencia muy rica en auditoría de circuitos ZK y verificación formal, lo que puede brindar garantía para la implementación segura del ecosistema BitVM.
Las soluciones de los dos artículos anteriores son soluciones técnicas que se han vuelto populares este año. En el próximo artículo, presentaremos una solución más antigua y “ortodoxa”, una versión mejorada de Lightning Network: Taproott Assets.
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
Un recorrido por los planes de expansión ecológica de BTC: BitVM, el arte del grabado
Escrito por: Simon Shieh
Revisión del prefacio
En el artículo anterior “Recorrido por los planes de expansión ecológica de BTC: dónde buscar inscripciones”, discutimos los principios técnicos y los posibles problemas de seguridad de la ecología de inscripciones populares, y mencionamos la posibilidad de utilizar inscripciones recursivas para implementar contratos inteligentes. Sin embargo, debido a las restricciones de Luke sobre los scripts Taproot, la inscripción recursiva parece tener algunos obstáculos. Entonces, ¿existen otras posibilidades para implementar contratos inteligentes en la red Bitcoin?
Robin Linus, cofundador del desarrollador de blockchain ZeroSync, publicó un artículo titulado “BitVM: Compute Anything on Bitcoin” el 9 de octubre de 2023, en el que propuso lanzar un plan para llevar contratos inteligentes a la cadena de bloques de Bitcoin.
El artículo propone una idea muy interesante para utilizar taproot para realizar casi cualquier cálculo arbitrario y utilizar estos cálculos para verificar lo que está sucediendo fuera de la cadena de Bitcoin. El truco consiste en mantener toda la lógica fuera de la cadena y desafiar los resultados deshonestos dentro de la cadena con unos pocos pasos de cálculo cuando otros los afirman.
En otras palabras, se trata de colocar la lógica de un Verificador en la red de Bitcoin, utilizar la fuerte seguridad de consenso de Bitcoin para convertirse en un tercero confiable para cualquier capa informática completa de Turing y luego utilizar el principio de Optimistic Rollups para lograrlo. -cálculos en cadena Verificación de resultados.
Entonces, ¿cómo poner una parte de la lógica del Verificador en la red Bitcoin? Para hacerme eco del “grabado” de la sección anterior, me gustaría llamarlo la tecnología de “grabado” de circuitos en la red Bitcoin.
Circuito de puerta lógica
Dentro de su computadora o teléfono celular, la electricidad realiza todas las funciones de la computadora emitiendo una serie de unos y ceros. Esto se logra mediante millones de pequeños componentes llamados puertas lógicas. Estas puertas lógicas son los componentes básicos de los chips de computadora.
Cada puerta lógica recibe uno o dos “bits” de información, y cada bit es un 1 o un 0. Luego, la puerta lógica realiza una operación lógica simple de acuerdo con las reglas establecidas, como las operaciones “Y”, “O” o “NO”. El resultado de estas operaciones también es un bit, ya sea un 1 o un 0. Después de completar la operación, el resultado se pasa a la siguiente puerta lógica.
Este sistema basado en operaciones lógicas simples ha llevado a la revelación de que incluso los cálculos y funciones más complejos se pueden lograr combinando una gran cantidad de operaciones lógicas simples. Esta combinación y colaboración de puertas lógicas es la base para que las computadoras y dispositivos electrónicos modernos puedan realizar tareas complejas. A través de estas operaciones lógicas básicas, las computadoras pueden manejar operaciones aritméticas complejas, almacenamiento de datos, representación de imágenes y otras funciones.
La siguiente imagen es una puerta lógica muy especial llamada “puerta NAND”. Puede construir cualquier tipo de circuito de puerta lógica. Por supuesto, no puede ser tan eficiente como otros tipos especializados de puertas, pero aún así se puede hacer. El circuito de puerta lógica de BitVM está compuesto por puertas NAND.
Cómo grabar la puerta NAND en Bitcoin
Se puede construir una puerta NAND sobre los scripts de Bitcoin existentes combinando un bloqueo hash con dos códigos de operación que pueden no ser muy conocidos: OP_BOOLAND y OP_NOT.
En primer lugar, se puede utilizar un bloqueo hash para crear un script de rama que se puede utilizar de dos maneras: para satisfacer el bloqueo hash o para satisfacer el bloqueo hash B. Por lo tanto, la ruta A pone un 1 en la pila y la ruta B pone un 0 en la pila.
Al satisfacer un bloqueo hash específico, puede “desbloquear” un bit que sirve como una de las entradas a la puerta NAND que vamos a construir. Dado que solo puede satisfacer los requisitos de una de las rutas, este enfoque solo permite a los usuarios enviar un bit a la vez.
La lógica de una puerta NAND es recibir dos bits como entrada y un bit de salida. Si ambos bits de entrada son 1, la salida es 0; si las entradas son otras combinaciones, la salida es 1. Usando dos trucos de bloqueo hash, puede enviar estas dos entradas y verificar que la salida sea correcta, que es para lo que sirven OP_BOOLAND y OP_NOT.
La operación de OP_BOOLAND es la opuesta a una puerta NAND: si ambas entradas son 1, la salida es 1; cualquier otra combinación de entradas produce un 0. OP_NOT genera el valor opuesto de la entrada. Entonces, al combinar estos dos códigos de operación, puedes tomar dos entradas y hacer la suma inversa en la pila de scripts. Finalmente, puede usar OP_EQUALVERIFY y el truco de bloqueo hash para verificar el resultado de la afirmación. Si los resultados reales de la operación NAND en la pila son inconsistentes con la salida afirmada por el usuario, el script no pasa la validación.
De esta manera, el circuito de la puerta NAND está “grabado” en el script de Bitcoin, forzando efectivamente una operación de puerta NAND virtual a través del script de Bitcoin.
Cómo grabar circuitos a gran escala
Aunque la idea de usar scripts Taproot para lograr el grabado de circuitos es genial, y mucho menos circuitos de escala ultragrande como las PC, incluso para implementar cualquier conjunto de cálculos se requieren miles de circuitos de puerta NAND, lo cual está limitado en Bitcoin. ¿Cálculos complejos en el espacio de script Taproot?
BitVM propone el método del árbol de script Taproot (Taproot Tree). Para implementar procesos computacionales complejos en scripts de Bitcoin, se pueden construir circuitos computacionales conectando puertas lógicas en serie. En este esquema, los bloqueos hash se utilizan para unir puertas individuales para lograr la ejecución secuencial de operaciones lógicas. Específicamente, si el script de una puerta produce un resultado de salida diferente C1 o C2 basado en una entrada de preimagen hash diferente (valor de texto sin formato hash), entonces la siguiente puerta utilizará el valor de bloqueo hash coincidente como su entrada.
Este método puede implementar un mecanismo de penalización, es decir, si intenta mentir sobre el resultado de la puerta anterior, solo puede revelar la imagen original de otro bloqueo hash. Este mecanismo se puede utilizar para la computación interactiva entre dos usuarios, donde acuerdan de antemano participar en una tarea informática específica y luego descomponen el proceso informático en circuitos que constan únicamente de puertas NAND. Deben elegir el bloqueo hash apropiado para cada puerta del circuito y codificarlo en el árbol de script que bloquea el UTXO.
Luego se usan múltiples direcciones para formar una matriz de direcciones Taproot, y luego el circuito lógico se graba en el script Taproot de una serie de transacciones UTXO conectadas en una estructura de árbol a través del método Taproot Tree, formando finalmente una lógica “similar a un contrato” que puede manejar ciertas tareas informáticas.
Desafío de fraude
El desafío de fraude es el núcleo de la tecnología OP (Optimism Rollup) (aunque aún no se ha implementado ~). La idea es que antes de que se envíe un lote de transacciones en lotes, el retador lanza un desafío de fraude (promesa versus apuesta) en las transacciones que se consideran incorrectas, el contrato Verificador en la red principal determinará si el remitente ha hecho mal en función de los cambios en la raíz del estado después de la ejecución, y luego asignará los activos prometidos por ambas partes.
En bitVM, el árbol de script está diseñado en dos circuitos. Además de permitir que el probador se someta a un circuito, el retador también debe poder cuestionar la declaración del probador. Esto se puede lograr firmando previamente una serie de transacciones. Estas transacciones prefirmadas se conectan a través de “Desafío->Respuesta->Desafío->…”. Si una de las partes se detiene por un período de tiempo, la otra parte ganará el desafío y recuperará los depósitos de ambas partes.
La imagen de arriba muestra una serie de transacciones prefirmadas:
Cualquier afirmación inconsistente puede ser rápidamente refutada después de algunas rondas de investigación. Si el probador deja de cooperar con el retador fuera de la cadena, el retador obligará al probador a cooperar en la cadena: cada vez que el retador desbloquea un bloqueo hash, el nodo hoja Taproot correspondiente a cada puerta NAND en el UTXO del probador solo tendrá It solo se puede gastar si el probador conoce una preimagen que tiene el retador. El probador puede demostrar que un nodo hoja Taproot determinado se ejecuta correctamente al revelar sus entradas y salidas. La premisa es que el retador desbloquea la imagen original del hash correspondiente a Tapleaf al revelarla. A través de la búsqueda binaria, el retador puede bloquear el error del probador después de una ronda limitada (O (logn)) de desafíos y respuestas.
Todo el proceso implica múltiples rondas de interacciones para garantizar que el contrato se resuelva correctamente. El retador puede seguir desafiando al probador hasta que confirme el resultado correcto para cada puerta, o el retador puede retirar los fondos después de un cierto tiempo en caso de que el probador no responda al desafío. En un mundo ideal, todas las operaciones se llevan a cabo fuera de la cadena y ambas partes colaboran para completar el acuerdo, pero si la cooperación se rompe, ambas partes pueden garantizar que el contrato se resuelva correctamente mediante un juego de desafío en la cadena.
Obstáculos de aterrizaje y problemas de seguridad.
Esta propuesta implica procesar y generar cantidades extremadamente grandes de datos. El árbol de script Taproot utilizado puede contener miles de millones de nodos hoja, y el tiempo de procesamiento de las transacciones prefirmadas asociadas puede tardar al menos varias horas para garantizar una liquidación precisa. La ejecución de las condiciones de desbloqueo preestablecidas para cada dirección Taproot requiere una tarifa de minería, por lo que cuantas más combinaciones de direcciones, mayor será el costo.
Una limitación importante de este esquema es que solo funciona para interacciones entre dos participantes: uno, como probador, que certifica la exactitud de su ejecución; y el otro, como verificador, que cuestiona las afirmaciones del primero. Si bien estudios futuros pueden encontrar formas de incluir a más participantes, en este momento no parece haber una solución clara.
En un escenario de acuerdo cooperativo, todos los participantes deben estar en línea, lo que plantea ciertas restricciones a la practicidad y conveniencia del protocolo.
En términos de seguridad, existen principalmente los siguientes riesgos de seguridad:
Debido a limitaciones de costos, una gran cantidad de trabajo informático debe realizarse fuera de la cadena. La computación fuera de la cadena tiene algunos riesgos de seguridad comunes a los servicios centralizados.
Una gran cantidad de datos se almacena fuera de la cadena, y la disponibilidad y la seguridad de los datos también son puntos de riesgo que deben considerarse.
Si existen lagunas lógicas en el circuito grabado en sí también es un punto de riesgo para la seguridad. Debido a la ilegibilidad del circuito, se deben pagar más costos de auditoría o costos de verificación formal.
Metatrust ha ayudado a Uniswap a realizar un trabajo de verificación formal integral y tiene una experiencia muy rica en auditoría de circuitos ZK y verificación formal, lo que puede brindar garantía para la implementación segura del ecosistema BitVM.
Las soluciones de los dos artículos anteriores son soluciones técnicas que se han vuelto populares este año. En el próximo artículo, presentaremos una solución más antigua y “ortodoxa”, una versión mejorada de Lightning Network: Taproott Assets.