Weaving Clarity: Contratos inteligentes seguros para SmartWeave por The Arweave Project Noviembre de 2020

Me complace anunciar que, después de un mes de arduo trabajo, he lanzado Sworn 1.0, la primera versión estable de mi compilador Clarity to SmartWeave que está lista para que la gente se mueva (metafóricamente). Si tiene inclinaciones técnicas, vea una breve demostración de 2 minutos de Juramentado en acción:

Para un antiguo hacker de compiladores como yo, este era un proyecto de ensueño. No es frecuente que haya visto recompensas por desarrollar un compilador completo, así que sabía que tenía que saltar sobre él. Quemé el aceite de medianoche produciendo una prueba de concepto funcional en el menor tiempo posible, y me complació recibir la recompensa. Y ahora, poco más de un mes después, podemos compilar el lenguaje Clarity completo para implementarlo en SmartWeave.

¿Por qué estoy tan emocionado con este proyecto? Creo que Clarity es una evolución muy necesaria hacia contratos inteligentes más seguros. Como ya se entiende ampliamente, los contratos inteligentes mal diseñados han resultado en un caos por valor de cientos de millones de dólares en el ecosistema más amplio de blockchain. El lenguaje de programación en el que escribimos contratos inteligentes importa: un lenguaje con menos pistolas sería muy preferible. La claridad es ese lenguaje.

Es por estas razones que Arweave decidió adoptar Clarity, que fue desarrollado originalmente por Blockstack y Algorand. SmartWeave ofrece una flexibilidad incomparable al trasladar la computación de los validadores de red a los propios usuarios del contrato. Esto elimina las tarifas de gas y elimina el cuello de botella de cómputo que actualmente afecta a Ethereum en particular.

SmartWeave también permite a los desarrolladores implementar contratos de JavaScript que requieren cantidades significativas de cálculo. No es un problema, en términos de cálculo, que un contrato se atasque en un bucle infinito en SmartWeave, porque eso tenderá a afectar principalmente a la parte que escribió ese contrato. Sin embargo, desde una perspectiva de componibilidad y corrección, es deseable un lenguaje más seguro. (JavaScript contiene incluso más pistolas que Solidity).

¿Por qué Clarity es especial? Para empezar, a diferencia de los lenguajes de contratos inteligentes de fregadero de cocina como Solidity, Clarity no es Turing completo. En cambio, Clarity es decidible, lo que, dicho de manera más simple, significa que no es posible escribir un bucle infinito en Clarity. Los contratos escritos en Clarity definitivamente se detendrán y, en general, se comportarán de manera agradable y predecible, con buenos modales.

A pesar de eso, los contratos inteligentes en Clarity son fáciles de escribir y el lenguaje no se siente restrictivo. De hecho, las personas familiarizadas con la programación funcional se sentirán como en casa, y los programadores familiarizados con Clojure adorarán la simplicidad de la sintaxis derivada de Lisp. (Para otros, eso puede tomar unos momentos para acostumbrarse. No se preocupe, el camino hacia la iluminación está plagado de paréntesis irritantes y superfluos).

Aquí está counter.clar, un contrato de ejemplo simple que implementa un contador persistente:

(define-data-var contador int 0)
(definir-solo-lectura (obtener-contador) (ok (var-obtener contador)))
(define-public (incremento) (begin (var-set counter (+ (var-get counter) 1)) (ok (var-get counter))))
(define-public (decremento) (begin (var-set counter (- (var-get counter) 1)) (ok (var-get counter))))

La adopción más amplia de Clarity es algo bueno para servicios de cadena de bloques más seguros, así como para la transferencia de conocimiento a través de diferentes cadenas de bloques. De hecho, existe la posibilidad de que, con un respaldo suficiente y serio, Clarity con el tiempo se convierta en un estándar importante de la industria para los contratos inteligentes en una variedad de cadenas de bloques. Tal como está, Clarity ahora está disponible en Blockstack y Arweave, y pronto también llegará a Ethereum. Es un buen momento para aprender a programar con Clarity.

En cuanto a Jurado, esto es solo el comienzo. En la hoja de ruta jurada, tenemos más funciones de Clarity específicas de Arweave para crear fácilmente tokens y comunidades de participación en los beneficios. Y tenemos grandes planes para Sworn 2.0: para facilitar la adopción de Arweave por parte de los desarrolladores que ya están familiarizados con Ethereum, estoy explorando cómo podríamos ingerir también los contratos existentes de Solidity, preservando la inversión hundida.

Si estás tan entusiasmado con estos desarrollos como yo, súbete a #smartweave en Discord y únete a la conversación.

Por Arto Bendiken