Video Original publicado el 30 de Enero de 2019:
En el momento en el que me sumé al proyecto estábamos tratando de lidiar con las consecuencias del error DAO (Decentralized Autonomous Organization), costando cientos de millones de dólares y teniendose que realizar una bifurcación dura (hard fork). La razón por lo que esto ocurrió, es la naturaleza del lenguaje de programación que han diseñado.
Entonces Charles Hoskinson se puso en contacto conmigo y dijo "tenemos que diseñar un lenguaje en donde esto no vuelva a ocurrir, no vamos a fraccionar una comunidad sólo por prevenir errores, es inaceptable". Entonces nos pusimos a establecer un lenguaje de programación mucho más seguro, inclusive, puedes obtener pruebas formales sobre esto. Cuando tienes cientos de millones de dólares en la linea es bueno tener una prueba verificada por una maquina indicando que tu software va a hacer exactamente lo que se espera que haga.
Diseñamos un lenguaje de programación funcional puro (pure functional programming language), fundado en técnicas matemáticas bien establecidas para la programación.
Plutus esta tratando de hacer algo totalmente nuevo, al menos el el mundo de los contratos inteligentes (smart contracts). Actualmente, el lenguaje estándar para escribir smart contracts es Solidity, es muy familiar para mucha gente, tiene mucho en común con Java Script y sistemas imperativos, pero como consecuencia es muy difícil obtener una prueba o razonar acerca de el. La verificación por software para este tipo de lenguajes es simplemente muy difícil de lograr. Una de las razones por las que podrías elegir Plutus es que va a ser significativamente mas fácil probar las cosas que necesites probar. Podrías sacar ventaja de los mas de 50 años de existencia de los métodos formales y verificaciones formales en programación funcional. También podrías sacar ventaja de que se trata de un lenguaje mucho más simple, no tiene un montón de cosas que Solidity tiene, que en la superficie parecen muy convenientes y útiles pero al costo de no poder razonar de la misma manera. Entonces, elegirias Plutus por que realmente querés que las cosas sean realizadas, necesitas que las cosas sean probadas sin destrozar tu alma, tratando de lidiar con las dificultades del lenguaje en si mismo.
Plutus Playground es un sitio web interactivo donde puedes ir y escribir código en Plutus, en este momento en particular es una traducción de la sintaxis de Haskell, llamado Plutus Core, que puede ser interconectado con otros muchos lenguajes. Esto puede ser ejecutado en una simulación de blockchain y ver que pasa, es un muy buen método para aprender como funciona el lenguaje, de testear tu código, de experimentar ideas sin tener que ejecutarlo en una blockchain real y poner dinero real en riesgo.
Plutus, en su estado actual, esta diseñado para trabajar en la capa de libro contable (SL, settlement layer), controlar transacciones y determinar si son válidas o no y básicamente informa quién tiene que moneda u otras cosas transferibles. Hay otra capa, la capa computacional (CL, computational layer), donde el software mas avanzado reside, donde se alojan las cosas que se parecen mucho a los smart contracts, empiezas hablar de otras cosas además de solamente quien tiene que, sino que tipo de programas han sido ejecutados para controlar organizaciones, robots, lo que sea que quieras ejecutar en la blockchain Cardano.
Ambas capas tienen una versión de Plutus, la actual es principalmente para la SL por que estamos mirando un montón de maneras distintas de implementación de estilo computacional SL, estamos investigando algo que llamamos modelo extendido UTX donde podrías obtener cierto grado de comportamiento de smart contract, quizás totalmente, esta es una pregunta abierta de investigación. Si realmente podemos lograr esto solamente usando el modelo estandar UTX, podría quizás lograrse toda la funcionalidad de los smart contract sin requerir de todo ese sofisticado sistema.
En principio, tu podrías escribir en cualquier lenguaje y será compilado a Plutus Core. El punto de Plutus Core es ser un lenguaje para a ser orientado a compilación. Si prefieres otros lenguajes, como Haskell, Java Script, etc, también lo puedes hacer. De hecho, Plutus Tx, que será donde la gente realmente estará codificando, es una variedad de Haskell, que compila a Plutus Core.
Marlowe (emulador Marlowe) es un lenguaje de dominio específico (domain specific language) de finales de los 90, formas primitivas de lo que podrían llamarse smart contracts, pero nadie los llamaba así en ese momento. Se trabajó en esto para definir contratos que serían ejecutados por computadores. Era un contexto totalmente diferente, no existían las blockchain, básicamente tenias que confiar en la gente ejecutando los programas. Marlowe esta inspirado en ese trabajo, en el contexto actual de las blockchains, donde la confianza ya no esta involucrada. No puedes dar por sentado que alguien hará cierta cosa. Necesitas tener ideas totalmente nuevas, que hacen cumplir el comportamiento en cierto sentido, que garantiza que alguien realmente realizará cierta cosa. Una de las formas en que esto puede ser logrado es a través de un compromiso, donde estas poniendo dinero en la linea y si no realizas lo que estas prometiendo, perderás tu dinero. Esta noción es completamente nueva en la era blockchain. Tener un lenguaje para poder hablar de estos compromisos es extremadamente poderoso.
Lo realmente excitante de este trabajo es que va a tener un impacto significativo en el futuro del desarrollo de software en su totalidad. Este lenguaje demandará de nosotros el uso de mejores técnicas de programación, como estas poniendo estas técnicas en las manos de tanta gente, repentinamente van a estar siendo utilizadas mucho más que nunca. Eso significa que mucha más gente estará aprendiendo estas técnicas, enseñando estas técnicas, explorando las herramientas que necesitas para estas técnicas. Simplemente veremos una explosión de métodos formales y software de verificación por máquina como nunca antes.
Va a ser muy interesante ver que resulta de esto en los próximos 10 años. Es muy probable que Cardano y Plutus en particular produzcan toda una nueva era de software de seguridad verificado. En la historia podría ser considerado como LA COSA que trajo los métodos formales a la ciencia de la computación. La mayoría de los programadores hoy en día realmente no verifican su software, no se aseguran de que su software funcione. Un montón de investigación se ha realizado respecto a como esto debe ser realizado, pero se reduce a la academia. De pronto, esto va a ser liberado al mundo como una especie de requisito para escribir software y eso puede ser realmente muy interesante