Concepto de Bitcoin MAST

En este artículo, hablaremos sobre el concepto de MAST y su aplicación en el protocolo Bitcoin. Consideraremos las propiedades que MAST permite lograr, así como los beneficios de su uso. El artículo será interesante para los lectores aficionados al protocolo Bitcoin y otros sistemas de pago innovadores. También se dedica una conferencia separada sobre este tema en el marco del curso en línea de blockchain " MAST in Bitcoin ".

El concepto de MAST implica el uso de árboles de Merkle y árboles de sintaxis abstracta para establecer las condiciones para gastar monedas en los resultados de la transacción. Consideremos en orden cómo funciona esto.

Árbol de Merkle


Entonces puedes representar esquemáticamente el árbol Merkle.

imagen

Hay piezas de datos para los que necesita obtener una suma de comprobación, es decir, calcular el valor hash de todas las piezas. Pero en lugar de concatenarlos a todos y proporcionar las funciones hash con un solo valor, Merkle Tree ofrece un enfoque diferente. Cada dato se divide en hash por separado. Luego, los valores hash resultantes se concatenan en pares y se vuelven a hacer hash. Y así sucesivamente, hasta que obtenga un valor hash que cubra todos los datos. Este valor se llama Merkle Root.

Merkle Tree le permite verificar la aparición de una sola pieza de datos en Merkle Root, sin tener todas las otras piezas de datos. Esta es una propiedad valiosa.

Supongamos que un usuario tiene Merkle Root y los datos de una transacción (en el diagrama anterior se indica en rojo). Luego, el usuario puede tomar la cadena de valores hash faltantes (se indican en azul en el diagrama) para verificar que esta transacción es parte de la raíz de Merkle. Los valores hash faltantes se denominan Merkle Branch. Para una transacción específica, se pueden solicitar al host que almacena el bloque completo.

Este método de trocear múltiples datos se usa en muchos protocolos. Los ejemplos más famosos son el hash de transacciones que forman parte de un bloque y el hash de partes de archivos que se transfieren a la red BitTorrent para generar un archivo torrent.

Árbol de sintaxis abstracta


Ahora conozcamos el Árbol de sintaxis abstracta. El siguiente diagrama muestra un árbol de sintaxis que describe un bucle muy simple. Aquí, los nodos azules del árbol se denotan por el árbol, lo que significa operaciones, el verde son variables y el rojo son constantes. Los bordes del árbol indican transiciones entre operaciones.

imagen

Por lo tanto, se describe un ciclo que se ejecuta en una secuencia específica. Primero, se verifica la igualdad de la variable A y la constante 32. Si no se mantiene, vaya al cuerpo del bucle, donde a la variable A se le asigna la suma de dos valores: la variable A y la constante 2. Esta es la estructura del árbol de sintaxis abstracta en términos generales.

¿Qué es el mástil?


Hemos preparado el terreno teórico, ahora determinaremos qué es MAST y cuáles son sus beneficios. MAST es el árbol de sintaxis abstracta de Merkelized, que utiliza las ideas del árbol de Merkle y el árbol de sintaxis abstracta para especificar condiciones mutuamente excluyentes para gastar monedas. Al mismo tiempo, Bitcoin Script actúa, como de costumbre, como un lenguaje para describir condiciones. El concepto MAST mejora la privacidad y reduce el tamaño de la transacción.

Desarrollo del concepto y posición actual.


Personas como Russell O'Connor, Pieter Wuille, Peter Todd y Johnson Lau comenzaron a desarrollar y promover la idea de MAST en la comunidad de Bitcoin. A principios de 2016, se publicó una propuesta para mejorar el protocolo Bitcoin con el número 114 (BIP114), que describía la especificación de una de las opciones para implementar este enfoque utilizando programas de testigos, que a su vez se introdujeron con la actualización SegWit. BIP114 también ofrece una implementación de software que agrega nuevas reglas de consenso al protocolo Bitcoin.

Más tarde, en 2017, propusieron una implementación alternativa del concepto MAST, que se describe en BIP117. Está basado en BIP114 y realiza algunas modificaciones. En el momento de 2018, ambas propuestas permanecen bajo consideración.

Tenga en cuenta que MAST puede integrarse en Bitcoin utilizando actualizaciones de protocolo de softfork. Y esta es quizás la característica más importante de este concepto.

MAST en el diagrama


Esquemáticamente, el árbol de sintaxis abstracta merkelizada se verá así.

imagen

Aquí, MAST Root es el valor de hash raíz que se colocará en la salida de la transacción. Los valores hash de las ramas de los árboles que conducen a las condiciones para gastar monedas se indican en azul. Por lo tanto, estas ramas contienen condiciones mutuamente excluyentes bajo las cuales se pueden gastar monedas. En consecuencia, el que gasta monedas usará una rama u otra.

El color amarillo indica las condiciones que se establecen con Bitcoin Script. Además, se recomienda que las condiciones bajo las cuales se gastarán las monedas se coloquen lo más cerca posible de la raíz del árbol; esto hará que la prueba de propiedad de las monedas sea más pequeña.

Problemas de transacción de Bitcoin


Identifiquemos los problemas que ocurren durante la configuración habitual de las condiciones para gastar monedas usando Bitcoin Script. El primero, y el más importante de ellos, es que el destinatario debe describir o transferir las condiciones bajo las cuales desea recibir el pago, de modo que el remitente las indique en la salida de su transacción. MAST y P2SH resuelven este problema.

El segundo problema: las condiciones difíciles ocupan una gran cantidad de memoria en la salida de la transacción. Como resultado, el remitente debe pagar una tarifa por establecer condiciones tan difíciles para recibir monedas, aunque el destinatario las dicta. P2SH y MAST también hacen frente a esto, lo que elimina la necesidad de incluir grandes cantidades de datos en la transacción, que gastará, y en consecuencia el aumento de la comisión será pagado por el destinatario, no por el remitente.

El tercer problema es que ScriptPubKey, que se coloca en la salida de la transacción, tiene un tamaño y una cantidad de operaciones limitados, es decir, OP_CODE. El concepto MAST le permite escapar casi por completo de estas restricciones sin comprometer la confiabilidad debido a condiciones mutuamente excluyentes.

El cuarto problema: al enviar monedas, todos ven de inmediato las condiciones de sus gastos. MAST le permite ocultar las condiciones de gasto hasta el momento de gastar. Además, solo se revelarán las condiciones que se usan realmente, y no todas las opciones posibles.

Propiedades que MAST da en Bitcoin


Una de ellas es aumentar el nivel de privacidad del usuario al ocultar las condiciones de gasto que no se utilizaron al final. Esta propiedad se logra demostrando que solo ciertas condiciones se incluyen en la raíz MAST y satisfaciendo estas condiciones.

Otra característica positiva es la capacidad de especificar condiciones más voluminosas y complejas para gastar monedas. Por ejemplo, usando MAST, puede especificar cientos de miles de diferentes opciones de firma múltiple para una salida de transacción única. Al mismo tiempo, las condiciones para gastar monedas y la correspondiente prueba de propiedad de las monedas serán muy compactas.

Además, es posible registrar datos de volumen arbitrario en la cadena de bloques sin aumentar el tamaño de la transacción.

imagen

Este diagrama muestra una variante de la estructura MAST de acuerdo con BIP114. Los valores hash se indican en azul, el script de bitcoin en amarillo y los datos arbitrarios en rojo como mensaje adicional. El valor de la versión se incluye en la parte superior del árbol.

Esquema MAST simplificado



imagen

Aquí se especifican dos condiciones mutuamente excluyentes para gastar monedas. En el primer caso, las monedas se pueden gastar proporcionando una firma y esperando un cierto tiempo, y en el segundo, debe proporcionar varias firmas. Los usuarios pueden recurrir a una de las opciones, mientras que las condiciones de la segunda no serán reveladas.

Aplicación práctica de MAST


En el primer caso, MAST se puede usar para una implementación más optimizada de HTLC (Hashed Time-Lock Contracts), que se usan en el protocolo Lightning Network. En otro, para una implementación más optimizada de Escrow.

MAST hace posible implementar estructuras muy grandes utilizando la firma múltiple. Esto ayudará a resolver problemas tan apremiantes como el robo o la pérdida de bitcoins y, en algunos casos, incluso le permitirá abandonar el almacenamiento en frío.

Gracias a MAST, en muchos casos, puede rechazar la operación OP_RETURN para agregar datos a la cadena de bloques de Bitcoin. En cambio, puede incluir estos datos en un árbol y, si es necesario, demostrar que se registraron datos específicos en la cadena de bloques de Bitcoin. En este caso, no necesitará aumentar el tamaño de la cadena de bloques en sí.

Optimización del volumen de datos


Prestemos atención a la optimización de la cantidad de datos que finalmente cae en la cadena de bloques. Mire de cerca la tabla a continuación. El eje vertical indica la cantidad de datos en bytes, mientras que la escala en sí misma es logarítmica. El eje horizontal indica el número de condiciones alternativas para gastar monedas.

imagen

La línea azul indica la dependencia del volumen de datos en la cantidad de condiciones sin usar MAST. La línea roja indica la dependencia del volumen de datos en la cantidad de condiciones que usan MAST. La línea azul es el límite de tamaño de Script de Bitcoin para P2SH. La línea verde es el límite de tamaño de Script de Bitcoin en la estructura testigo.

La conclusión es simple. El concepto MAST le permite almacenar significativamente menos datos con la misma confiabilidad de validación y una funcionalidad mucho mayor.

Ahora pasemos a las preguntas frecuentes sobre este tema.

Preguntas frecuentes


- ¿Se establecerá la raíz MAST en la estructura de testigos o dónde se incluirá?

MAST Root junto con los datos que lo definen se indicarán en ScriptPubKey en la salida de la transacción. Estos datos ocuparán 25-35 bytes y, muy probablemente, se codificarán fácilmente en la dirección habitual de Bitcoin. Y en la estructura de testigos, donde se prueba la propiedad de las monedas, se indicará Merkle Branch y los datos que satisfagan las condiciones de gasto, como las firmas electrónicas.

- ¿Se ampliarán los muchos OP_CODE disponibles en el lenguaje de script de Bitcoin?

Por el momento, aún no está claro, porque la propuesta está bajo consideración y aún se pueden hacer cambios y mejoras adicionales. Es probable que se agregue un OP_CODE como OP_MERKLEBRANCHVERIFY por la flexibilidad de usar MAST. Quizás ofrecerán algo más útil, pero esto aún es inexacto.

- ¿Hay alguna posibilidad de integrar MAST en el futuro cercano?

Por supuesto que hay una probabilidad, pero es pequeña. Después de todo, esta actualización es importante, pero no urgente, por lo que puede esperar mientras los desarrolladores piensan en otras mejoras de protocolo. Más tarde, pueden integrar varias mejoras a la vez en una actualización, como fue el caso con SegWit.

Source: https://habr.com/ru/post/es414979/


All Articles