Resumen: Cartesi Node. Liberando el verdadero potencial de blockchain de Felipe Argento Cartesi Agosto 2021

Liberando el verdadero potencial de blockchain

Escrito por: Gabriel Coutinho y Felipe Argento

Alfred Whitehead ha dicho que “la civilización avanza ampliando el número de operaciones importantes que podemos realizar sin pensar en ellas”, y lo mismo puede decirse de la tecnología de todo tipo. En el software, esto se manifiesta como bibliotecas, herramientas, sistemas operativos, compiladores, intérpretes y muchos otros componentes preexistentes, en los que podemos construir sobre ellos sin pensar en el sistema subyacente. El software moderno es muy complejo y solo podemos construirlo en virtud del conocimiento acumulado contenido en estas herramientas preexistentes.

Este concepto es el núcleo de Cartesi: permitir la cantidad de operaciones importantes que se pueden realizar sin pensar en ellas. Las tecnologías blockchain actuales no tienen esta característica: las computadoras en las que se ejecutan los contratos inteligentes son novedosas, en todos los malos sentidos. Ninguno de los programas que se han desarrollado y madurado durante los últimos cuarenta años se puede ejecutar en ellos. No hay ningún ecosistema del que hablar. Como tal, es imposible desarrollar un software complejo para las cadenas de bloques actuales: todas las abstracciones tendrían que construirse desde cero.

Imagine el escenario hipotético de ir a una tienda de informática a comprar una computadora nueva. Se le ofrece uno ultrarrápido que acaba de ser lanzado, pero no puede ejecutar nada de lo que existe hoy: aplicaciones, bibliotecas, herramientas, sistemas operativos, compiladores, intérpretes, lo que sea. Solo puede ejecutar su propio código de máquina. El proveedor podría intentar persuadirlo diciendo "ah, pero se puede desarrollar un nuevo software, desde cero, para esta computadora específica". Que, en muchos sentidos, es cómo se solía desarrollar el software antes que los compiladores y sistemas operativos de alto nivel. Independientemente del rendimiento, tal computadora sería inútil. Existe una razón por la que hemos superado las viejas prácticas de software. Sin ninguna de las abstracciones cuidadosamente construidas y repetidas durante las últimas décadas, nadie en su sano juicio siquiera consideraría comprar una computadora de este tipo.

Los contratos inteligentes de capa 1 son muy parecidos a esta computadora, excepto que también son muy lentos. Los contratos inteligentes de capa 2 se presentan como una computadora más rápida, pero sin abordar la falta de un ecosistema maduro, su utilidad es bastante limitada.

Cartesi, además de la escalabilidad computacional, amplía lo que uno puede hacer sin pensar al traer décadas de conocimiento acumulado en ciencias de la computación a la cadena de bloques.

La ejecución de herramientas, bibliotecas, sistemas operativos y lenguajes de programación convencionales tiene otra consecuencia vital: reduce la barrera de entrada para los desarrolladores que no utilizan blockchain. En este sentido, Cartesi brinda a los desarrolladores los recursos para crear DApps complejas de una manera mucho más accesible. Creemos que al aprovechar más desarrolladores para construir DApps en una computadora que ofrece escalabilidad computacional y un ecosistema maduro, liberaremos el verdadero potencial de las cadenas de bloques.

Anteriormente, hemos escrito cómo Cartesi aborda la escalabilidad computacional con nuestros componentes en cadena. Las ideas que se detallan allí son cruciales para comprender este artículo. Aquí, nos centraremos en los componentes fuera de la cadena y en cómo resolver la falta de un ecosistema maduro para contratos inteligentes. Veremos el razonamiento detrás del núcleo de Cartesi y cómo permite ejecutar cosas como Linux y todas sus cadenas de herramientas dentro de Ethereum.

La máquina Cartesi es la computadora que hemos diseñado y construido para permitir extender la cantidad de operaciones que uno puede realizar sin pensar en ellas. Con este fin, la arquitectura de la máquina subyacente tenía que ser compatible con cadenas de herramientas modernas y tener una amplia infraestructura de software. La implementación también tenía que ser transparente y auditable, lo que requería que la arquitectura fuera de código abierto y relativamente simple. Con todas esas características en mente, RISC-V fue la arquitectura perfecta para nuestra máquina.

El proyecto RISC-V nació en UC Berkeley y rápidamente ganó tracción, ahora cuenta con el apoyo de una vibrante comunidad de desarrolladores. Está lejos de una arquitectura de juguete: RISC-V admite la implementación directa de hardware nativo y puede ejecutar una amplia variedad de infraestructuras de software, como el kernel de Linux, la cadena de herramientas GNU, GCC y LLVM.

En nuestra campaña de marketing (y en el párrafo anterior), solemos mencionar la posibilidad de ejecutar Linux. Sin embargo, RISC-V no está restringido a Linux: es compatible con otros sistemas operativos que pueden resultar interesantes para aplicaciones blockchain. Un buen ejemplo es el seL4, un kernel de código abierto centrado en la seguridad que tiene una prueba de implementación correcta de un extremo a otro.

Otro software importante que se ejecuta en RISC-V son varios compiladores e intérpretes. Esto permite escribir software utilizando lenguajes de programación modernos junto con todo su ecosistema. Los programadores no tendrán que reinventar la rueda en Solidity: solo pueden usar Python e importar NumPy.

El RISC-V ISA se puede implementar de varias formas diferentes. Nuestras decisiones de diseño y modificaciones se explican detalladamente en nuestro documento técnico, que se puede encontrar aquí para lectores más técnicos. Sin embargo, hay dos características principales que deben destacarse: la máquina es determinista y todo su estado se puede resumir en un solo hash.

En este contexto, determinista significa que el estado completo de un cálculo y todos los cambios de estado intermedios están completamente especificados y son reproducibles. En otras palabras, dar una entrada particular a una Máquina Cartesi en particular siempre producirá las mismas salidas y cambios de estado.

La máquina Cartesi funciona sin cadena. Pero para ser útil, sus resultados deben poder demostrarse en la cadena. Aquí es donde estas dos características se vuelven importantes: el objetivo es trasladar esta compleja y poderosa máquina al entorno limitado de la cadena de bloques.

Debido a su naturaleza determinista, una vez que se acuerda la máquina y sus entradas, dos máquinas honestas siempre darán el mismo resultado. El sistema consta de partes interesadas que ejecutan la misma máquina Cartesi previamente acordada fuera de la cadena de bloques y, una vez completada, ejecutan sus efectos secundarios en la cadena de bloques.

Puede parecer que un adversario deshonesto puede intentar engañar a la cadena de bloques alegando un efecto secundario falso que lo beneficia. Sin embargo, cualquier persona interesada en el cálculo tiene la capacidad de notar rápidamente el comportamiento turbio y usar la cadena de bloques para castigar al mal actor y hacer cumplir el resultado correcto. A través de este mecanismo de detección de fraude, podemos ejecutar la máquina Cartesi fuera de la cadena de bloques y utilizar su resultado de forma segura dentro de la cadena de bloques. De esta manera, los programadores ahora pueden codificar DApps previamente imposibles utilizando su lenguaje de programación preferido.

¿Cómo puede hacer esto blockchain? Hemos desarrollado un sistema de arbitraje compuesto por muchos contratos inteligentes. Ofrece a los usuarios la capacidad de ejecutar disputas interactivas, también conocidas como juegos de verificación, para navegar por todo el cálculo fuera de la cadena y detectar una sola instrucción RISC-V en la que tuvo lugar un comportamiento fraudulento. Esta instrucción luego se ejecuta en nuestra implementación RISC-V de blockchain correspondiente. Sí, codificamos una implementación completa de RISC-V en Solidity. Si desea saber cómo se puede utilizar esta máquina, consulte la documentación del SDK de Descartes v1.

La máquina de enrollado se puede considerar como una máquina Cartesi en constante movimiento. La primera versión de nuestra máquina Cartesi se ejecuta una vez, lo que representa un solo cálculo. La máquina Rollups, por otro lado, existe a lo largo del tiempo, actualizando continuamente su estado a medida que los usuarios interactúan con ella.

Los usuarios interactúan con la máquina enviándoles entradas, como se describe en detalle en el artículo de rollups en cadena. Las máquinas son específicas de DApp y se encargan de procesar las entradas, ejecutando la lógica de la DApp para cada una de ellas. Con cada entrada, la máquina se activa, procesa la entrada, alcanzando un nuevo estado, y vuelve a dormir.

Los nuevos estados no son el único efecto secundario del procesamiento de una entrada. La máquina también puede crear salidas y mensajes para cada entrada. Estos son utilizados por DApp para ejercer influencia en la capa 1. Las salidas son transacciones que se ejecutarán y los mensajes son eventos de capa 2 que se registran.

De vez en cuando, la máquina fuera de cadena de Rollups publica en la cadena de bloques un hash que resume su estado actual y todas las salidas y mensajes nuevos. Esto sucede al final de cada época, como se explica en el artículo de la cadena.

Este hash está sujeto a un mecanismo de disputa similar explicado en la sección anterior. La principal diferencia es que el punto de control ahora resume una combinación de cosas, lo que crea la necesidad de un paso de arbitraje adicional para determinar dónde tuvo lugar realmente el comportamiento fraudulento.

En conclusión, los paquetes acumulativos dependen de la cadena de bloques como fuente de verdad y disponibilidad de datos, y dependen de la máquina Cartesi para el cálculo: la confiabilidad de la entrada está asegurada por el consenso de la cadena de bloques y la confiabilidad de la salida está asegurada por el mecanismo de detección de fraude de Cartesi. Como tal, podemos aprovechar el poder de la máquina Cartesi para ejecutar DApps sin confianza que antes eran imposibles.

Junto a este artículo, publicamos el código de la primera versión de una parte importante de nuestra infraestructura de rollups: la pieza que conecta el código en cadena con la máquina de rollups descrita anteriormente.

La máquina Rollups y los contratos inteligentes viven en entornos fundamentalmente diferentes. Esto crea la necesidad de un middleware que gestione y controle la comunicación entre blockchain y la máquina.

Como tal, el middleware es responsable de leer primero los datos de nuestros contratos inteligentes, luego enviarlos a la máquina para ser procesados ​​y finalmente publicar sus resultados en la cadena de bloques. Con este fin, nuestro middleware utiliza nuestro State Fold and Transaction Manager lanzado anteriormente.

El middleware puede ser utilizado por cualquier persona interesada en la situación de los rollups. Dividimos a los usuarios interesados ​​en dos roles, que ejecutan diferentes tipos de nodos: lectores y validadores. Los nodos lectores solo están interesados ​​en hacer avanzar su máquina fuera de la cadena. Consumen información de la cadena de bloques, pero no se molestan en hacer cumplir las actualizaciones de estado, confiando en que los validadores garantizarán la validez de todas las actualizaciones de estado en la cadena. Los validadores, por otro lado, tienen más responsabilidad: no solo miran la cadena de bloques, sino que también luchan para asegurarse de que la cadena de bloques no acepte lo que no sucedió.

Los contratos inteligentes y el middleware se pueden encontrar en nuestra página de Descartes v2 GitHub.

Échales un vistazo, nos encantaría recibir tus comentarios y, como siempre, nos encantaría que cualquier persona que esté interesada en aprender más o en construir con nuestros paquetes acumulativos se una al equipo en nuestro servidor de Discord.

Cartesi es una infraestructura multicadena de capa 2 que permite a cualquier desarrollador de software crear contratos inteligentes con las herramientas de software convencionales y los lenguajes a los que están acostumbrados, mientras logra una escalabilidad masiva y bajos costos. Cartesi combina una máquina virtual innovadora, acumulaciones optimistas y cadenas laterales para revolucionar la forma en que los desarrolladores crean aplicaciones blockchain.