"Simplicity is a blockchain programming language that is so simple, it fits on a t-shirt."
-- Dr. Russel O'Connor, Infrastructure Tech Developer @ Blockstream
Hoy, Russell O’Connor (PhD), de Blockstream, presenta su trabajo “Simplicity: un nuevo lenguaje para las blockchains” durante una sesión sobre nuevos lenguajes y herramientas en PLAS 2017, el taller del SIGSAC de la ACM sobre lenguajes de programación y análisis de seguridad. El lenguaje de programación Simplicity está pensado como un avance respecto de los lenguajes de criptomonedas disponibles, dado que busca evitar sus defectos y habilitar nuevas posibilidades para los contratos inteligentes en las blockchains sin dejar de desarrollar el modelo UTXO de Bitcoin.
Como enfoque actualizado que mejora el lenguaje Script de Bitcoin, el lenguaje de programación Simplicity, basado en el cálculo de secuentes, presenta algunas mejoras significativas: para empezar, completa y amplía las capacidades de programación. Una de las limitaciones de la versión actual del lenguaje Script de Bitcoin, el lenguaje de programación interno de Bitcoin, consiste en que algunos opcódigos fueron desactivados en las primeras épocas de Bitcoin. Por ejemplo, se desactivó el opcódigo OP_CAT que concatena dos cadenas. La plataforma Elements de Blockstream rehabilita algunos opcódigos y agrega otros, pero O’Connor quería algo más flexible. Simplicity proporciona expresividad total.
Además, Simplicity optimiza la seguridad, lo cual empieza por la seguridad de los tipos. Simplicity es un lenguaje de programación funcional tipeado que emplea combinadores. Parte de su seguridad deriva de su analizabilidad: si bien Simplicity está completo en términos de aridad finita, lo cual permite programar todos los cómputos finitos y proporciona toda la funcionalidad necesaria para un sistema poderoso de contratos inteligentes, es un sistema Turing incompleto, que impide los bucles infinitos y permite el análisis estático. Por último, la semántica formal es compatible con el razonamiento sobre el lenguaje del Asistente de pruebas Coq, que habilita la seguridad de la verificación formal, tal como la implementación formalmente verificada de la función de desmenuzamiento criptográfico (hash function) SHA-256 escrita en Simplicity que llevó a cabo el propio O’Connor.
Además, Simplicity supera a los lenguajes de criptomonedas disponibles porque incorpora árboles de sintaxis abstracta de Merkle (MAST, por sus siglas en inglés). Al ser un lenguaje de programación que integra los MAST de manera nativa, Simplicity organiza sus programas en forma de árboles y solo revela las porciones necesarias para efectivizar los fondos; las partes no utilizadas de un programa se podan, lo cual incrementa la privacidad y disminuye los requisitos de espacio de los bloques.
El trabajo de O’Connor sobre Simplicity presenta un primer vistazo de este nuevo lenguaje de criptomonedas; es un proyecto de investigación y desarrollo de Blockstream que, a futuro, posiblemente se aplique en los productos de Blockstream. El próximo paso será el lanzamiento del SDK de Simplicity. Mientras tanto, si ya quiere conocer más sobre estas posibilidades a futuro, lea “Simplicity: un nuevo lenguaje para las blockchains”, que contiene detalles precisos sobre cómo funciona el lenguaje Simplicity.