Lenguaje Miniscript disponible

Pieter Wuille, conocido desarrollador de Bitcoin, ha anunciado recientemente la disponibilidad de dos implementaciones de Miniscript. Se trata de un lenguaje de programación de alto nivel sobre Bitcoin Script que busca facilitar el desarrollo de “smart contracts” en la red Bitcoin.

Bitcoin Script es un lenguaje de programación base de la red Bitcoin. Este lenguaje se utiliza en todas las transacciones para determinar cómo se controlan las UTXO, que son las unidades de montos de Bitcoin que tienen, como mínimo, un propietario. Una transacción estándar, por ejemplo, produce un programa que indica que para gastar o desbloquear, en términos técnicos, una UTXO se debe cumplir con la condición de que la firma del hash de la llave pública sea equivalente a la que allí se señala. Esto produce que, en términos prácticos, se transfiera la propiedad de ese monto a un tercero, que viene a ser el propietario de la llave privada que es el único que puede generar esta firma.

scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

Sin embargo, Bitcoin Script también es un lenguaje de bajo nivel muy parecido al que permite al hardware de nuestros ordenadores ejecutar un primer programa llamado gestor de arranque, que inicia mucho antes de reconocer y arrancar algún núcleo de sistema operativo. También es un lenguaje imperativo basado en pila por lo que las instrucciones se deben construir pensando en las dos operaciones que existen en la pila: poner, quitar ("push" y “pop”).

Por supuesto, que lo anterior tiene una curva de aprendizaje mayor, pues no todos están familiarizados con trabajar en un estilo de programación como tal. Es en esta circunstancia que ha nacido Miniscript. Este lenguaje de programación ayuda a construir las mismas condiciones que se desea implementar en las transacciones Bitcoin desde un lenguaje muy parecido a uno de dominio específico o “DSL”. Luego, estas instrucciones, mas amigables en su lectura, se pueden analizar estáticamente y compilar a código Bitcoin Script. De momento existen implementaciones de este compilador en C++ y Rust, y son compatibles con programas de Bitcoin Script en sus versiones P2WSH y P2SH-P2WSH.

Desde el ámbito del desarrollo de aplicaciones, esto va a permitir que muchos desarrolladores se familiaricen rápidamente e integren aplicaciones que utilicen transacciones en la red Bitcoin. Es por esto que buena parte de este nuevo desarrollo se está haciendo gracias a empresas como Blockstream desde su área de investigación, que desarrolla tecnologías para aprovechar el potencial de la red Bitcoin en conjunto con su integración con aplicaciones que habilitan otros casos de uso.

Finalmente hay que señalar que más que un envoltorio o traductor, Miniscript es un lenguaje completo que ofrece herramientas para efectuar composiciones, validar condiciones para un gasto mínimo, predecir el costo de una UTXO, etc. La documentación y enlaces a los compiladores, referencia de las instrucciones e implementaciones están en la página del proyecto cuyo enlace está al final. Además, puede encontrar allí un verificador de sintaxis de Miniscript.

A continuación, un ejemplo de Miniscript y su equivalente en Bitcoin Script:

Minicript: and_v(vc:pk(K),c:pk(A))

Bitcoin Script: <K> OP_CHECKSIGVERIFY <A> OP_CHECKSIG

Sitio web de Miniscript:
http://bitcoin.sipa.be/miniscript/

1 me gusta