Author

Topic: Minsc: Lenguaje para programar contratos inteligentes con Bitcoin (Read 71 times)

legendary
Activity: 3906
Merit: 6249
Decentralization Maximalist
Me topé con una noticia muy interesante para los interesados en los contratos inteligentes. En julio de 2020 ha sido publicado Minsc, un lenguaje de programación que permite programar contratos inteligentes con Bitcoin de manera mucho más fácil que antes.

Es un proyecto no comercial, de código abierto y el código fuente se encuentra disponible en Github. Minsc está basado en un intento anterior llamado Miniscript pero según los comentarios que veo éste fue significativamente más difícil para usar.

Hay también un hilo en el foro inglés y un artículo en castellano en Criptonoticias.

Ahora: ¿para qué sirve?

En Bitcoin, se puede usar el lenguaje Bitcoin Script para programar cierta clase de contratos inteligentes (smart contracts). Pero Bitcoin Script tiene algunas características que lo hacen un poco difícil de aprender, como la llamada notación "polaco inversa". Minsc, en cambio, usa una sintaxis más parecida a los lenguajes de programacion tradicionales como C o Python, y por lo tanto es facilmente legible para los que manejen estos lenguajes.

Es decir, lo que se puede hacer es escribir el código para el contrato en Minsc, y luego éste puede ser transformado en Bitcoin Script.

Un ejemplo de la página de Minsc:

pk(user_pk) && (pk(service_pk) || older(90 days))

Este contrato 2FA define que se puede gastar un UTXO inmediatamente cuando se proveen dos claves: una de un usuario y la otra de un servicio. Pero después de 90 días, el usuario sólo puede gastarlo.

En Bitcoin Script, es todo bastante más "críptico":

OP_CHECKSIGVERIFY OP_CHECKSIG OP_IFDUP OP_NOTIF
  <543b40> OP_CHECKSEQUENCEVERIFY
OP_ENDIF

Contratos en Bitcoin conocidos son por ejemplo los canales de pago de Poon-Dryja, que forman la base de Lightning Network, los escrow, y los Atomic Swaps, que permiten intercambiar distintas criptomonedas. También hay ideas para diversos tipos de pagos que todavía no se usan muy frecuentemente, como un sistema de pago para contenidos digitales. Algunos de ellos son mostrados como ejemplos en la página de Github de Minsc.

Hay que decir que Minsc no elimina la principal limitación de Bitcoin Script: la imposibilidad de programar bucles (como sí está permitido en Ethereum). Esto hace que al igual que Bitcoin Script, Minsc no es un lenguaje "turing completo", y no hará de Bitcoin un "ethereum killer" o algo así. Pero según Gregory Maxwell, Bitcoin tiene capacidades muchas veces subestimados en el área de los contratos inteligentes y tiene potencial para mucho más.

Otro lenguaje que apunta a facilitar los smart contracts con Bitcoin es Simplicity. Este, sin embargo, difiere de Minsc y Miniscript en que es más expresivo, y aún no es soportado por Bitcoin Core.
Jump to: