Los Merkelized Abstract Syntax Trees (MAST) son una propuesta de mejora para Bitcoin y otras criptomonedas que utilicen SegWit, como Litecoin. Su adopción permitiría mayor privacidad, menor tamaño de transacciones y contratos inteligentes más pequeños, al utilizar una combinación de Pay To Script Hash (P2SH), Abstract Syntax Trees (ASTs) y la estructura de datos en forma de árbol llamada Merkle Tree.
MAST se encuentra en Github como un Bitcoin Improvement Proposal o BIP, aún sin número y subido por primera vez el 2 de abril de 2016. La modalidad fue ideada por los desarrolladores Russell O’Connor, Pieter Wuille y Peter Todd, si bien ha sido ampliada o repensada por diversos desarrolladores, incluidos Johnson Lau, Mark Friedenbach , Gregory Maxwell y académicos del MIT. Pero, ¿Cómo podrían los MAST mejorar de tal manera la red?
Supongamos que Carlos tiene cierta cantidad de bitcoin, pero, previendo que algo pueda sucederle elige que si pasa seis meses sin gastarlos, le gustaría que su hermana Andrea tenga acceso a ellos sin darle sus llaves privadas. Del mismo modo, Andrea quisiera poder dejarle sus bitcoin a su esposo Jesús, en caso de que ella tenga dos meses sin gastarlo, y así podría realizarse una larga red de scripts infinita donde las personas utilizan condicionales para distribuir sus fondos, lo que ocupa bastante espacio.
También podría darse el caso en el que Carlos no quisiera que su hermana o su cuñado supieran qué sucedería con los fondos si él es incapaz de moverlos, o que una empresa esté llevando un negocio confidencial del que no quisieran revelar todos estos casos de transacciones posibles. De momento, la red Bitcoin tendría públicos todos estos datos, aunque fuesen opciones donde los fondos se destinarían a otra persona solo cuando suceda otro evento.
El MAST podría ofrecer una solución a estos problemas. En primer lugar, mediante la función Merkle Tree, ya presente en la cadena de bloques o blockchain, los bloques de información en pares y genera un hash por cada bloque de datos. Luego, los hashes generados vuelven a ser agrupados en pares y generan un nuevo hash que a su vez se agrupa con otro y se repite camino arriba del árbol hasta alcanzar un único bloque, la raíz del árbol, que se denomina apuntador hash raíz (root hash) y se registra en la dirección del bloque actual (block hash) con el fin de reducir el espacio ocupado por cada bloque. Esta estructura de apuntadores hash permite recorrer cualquier punto del árbol para verificar que los datos no han sido manipulado, ya que, al igual que con la cadena de bloques, si alguien manipula algún bloque de datos en la parte inferior del árbol, hará que el apuntador hash que está un nivel más arriba no coincida
En MAST, el Merkle Tree se integraría con la función Abstract Syntax Trees (ASTs), el cual es una manera de describir un programa dividiendolo en partes individuales para hacerlo más fácil de analizar y optimizar. Estas partes serían verificadas mediante la función de Merkle Tree sin necesidad de presentar el conjunto de la cadena cada vez que se requiera una verificación.
A estas dos funciones, en la BIP propuesta por Johnson Lau se suma el P2SH. Normalmente los Bitcoin se transfieren de una dirección a otra utilizando una información de salida en forma de script. El script es un código que bloquea y libera los Bitcoin una y otra vez para efectuar los movimientos. Al utilizar Pay to Script Hash (P2SH), no basta con este script para cambiar los fondos de sitio, sino que este se encripta de manera que parece una serie aleatoria de caracteres que no pueden ser descifrados como el código original, y sólo pueden identificarse como una transacción específica con el “hash” incluido en la información de salida inicial. En palabras más simples, los nodos no pueden identificar el script de salida de una dirección exacta, pero pueden verificar que el código encriptado de salida de la transacción es el mismo, ver si cumple los requerimientos, y luego confirmarla.
Si se combinan estas herramientas de Merkle Trees, Abstract Syntax Tree y P2SH para formar los MAST, se aumenta la seguridad de las transacciones y se reduce la cantidad de datos utilizados, lo cual no sólo serviría para minimizar la cantidad de información en las transacciones, sino también permitiría contratos inteligentes más grandes debido a la compresión de los datos.
Esta adopción podría ser muy sencilla y hacerse en un soft fork de tener una aprobación mayoritaria. Algunas personas creen que el creciente uso de atomic swaps que permiten cambios directos entre criptomonedas hacen las transacciones demasiado fáciles de rastrear al quedar permanentemente en la blockchain. El uso de MAST podría ayudar a hacer las operaciones más privadas porque aquellas operaciones programadas pero que no se realizan inmediatamente quedan ocultas. Con todo, su adopción por toda la red Bitcoin podría llevar bastante tiempo, tal como ha sucedido en el caso de SegWit. Sin embargo, sería de mucho beneficio para empresas que quieran mantener sus transacciones programadas ocultas o para automatizar testamentos en casos de muertes accidentadas.