WebAssembly (Wasm) es un formato de instrucción binaria portátil y de alto rendimiento que se puede ejecutar en navegadores web. Está diseñado como un objetivo de compilación universal que puede usarse con múltiples lenguajes de programación y ejecutarse en diferentes plataformas.
Blockchain es una tecnología de contabilidad distribuida descentralizada que garantiza la seguridad y confiabilidad de los datos mediante el uso de criptografía y algoritmos de consenso. Blockchain se puede utilizar para registrar transacciones, almacenar datos y ejecutar contratos inteligentes, entre otras aplicaciones.
Existen varias relaciones y escenarios de aplicación entre Wasm y blockchain:
En resumen, la combinación de Wasm y blockchain proporciona aplicaciones y servicios blockchain más eficientes, seguros y flexibles. La portabilidad y el alto rendimiento de Wasm la convierten en una tecnología importante en el campo de blockchain.
WebAssembly es un estándar de conjunto de instrucciones eficiente y liviano desarrollado por el World Wide Web Consortium (W3C). Es aclamado como un disruptor para la web y la informática de alto rendimiento, ya que admite la ejecución entre navegadores. Esto significa que podemos compilar diferentes lenguajes de programación, incluidos C/C++, Go, Rust y más, en un formato binario estándar unificado y usarlo como reemplazo de JavaScript, ejecutándolo con una eficiencia de código casi nativa en los navegadores web.
WebAssembly, también conocido como WASM, es una tecnología independiente de la plataforma y segura para la memoria que puede asignarse de manera eficiente a diferentes arquitecturas de CPU. Ofrece varias ventajas clave:
Además, la Web es la única plataforma verdaderamente universal que permite el acceso a sus aplicaciones en cualquier dispositivo. Esto también le permite mantener una base de código única, simplificar las actualizaciones y garantizar que todos los usuarios puedan acceder a sus aplicaciones. WASM admite operaciones enteras de 64 y 32 bits, que corresponden directamente a las instrucciones de la CPU. Al eliminar las operaciones de punto flotante, se puede lograr fácilmente un comportamiento determinista, lo cual es necesario para los algoritmos de consenso. Con el respaldo del proyecto de infraestructura del compilador LLVM, WASM puede beneficiarse de más de una década de optimizaciones del compilador en LLVM. WASM es desarrollado continuamente por importantes empresas como Google, Apple, Microsoft, Mozilla y Facebook, y cuenta con el respaldo de los servidores de los navegadores desarrollados por estas empresas.
La belleza de WASM radica en su capacidad de ejecutarse en cualquier lugar sin necesidad de descargarlo ni instalarlo, ya que está en formato binario. Con solo un clic, las aplicaciones web se pueden ejecutar inmediatamente cuando sea necesario. Es incluso más seguro que descargar y ejecutar archivos binarios directamente, ya que los navegadores tienen mecanismos de seguridad integrados que evitan que el código ejecutado dañe su sistema. Además, compartir aplicaciones web es sencillo: los enlaces se pueden colocar en cualquier lugar como cadenas en las que se puede hacer clic.
La Web ha evolucionado desde una plataforma para contenido estático y pequeños lenguajes de escritura a una plataforma potente y popular repleta de aplicaciones y funciones sorprendentes, gracias a la funcionalidad integrada de los navegadores y la interactividad proporcionada por la Web. Sin embargo, las aplicaciones web siguen siendo predominantemente impulsadas por el mismo lenguaje de programación (JavaScript), que inicialmente no fue diseñado para realizar estas tareas.
Inicialmente, JavaScript era un lenguaje de secuencias de comandos simple destinado a brindar interactividad a documentos de hipertexto livianos en aplicaciones web. Su diseño era fácil de aprender y escribir y no priorizaba la velocidad del tiempo de ejecución. A lo largo de los años, mejoras significativas en el rendimiento en el análisis de JavaScript por parte de los navegadores han dado lugar a aumentos notables del rendimiento.
Con la velocidad acelerada de ejecución de JavaScript, la gama de cosas que se pueden hacer dentro de los navegadores se ha ampliado significativamente. Las nuevas API han introducido funciones como gráficos interactivos, transmisión de video, navegación sin conexión y más. Además, un número cada vez mayor de aplicaciones que antes estaban limitadas a entornos de escritorio han ingresado a la Web. Ahora puedes editar documentos y enviar correos electrónicos fácilmente en tu navegador. Sin embargo, en ciertos dominios, el rendimiento de JavaScript sigue siendo un desafío. Piense en las aplicaciones de software que utiliza además de los navegadores: juegos, edición de vídeo, renderizado 3D o producción musical. Estas aplicaciones requieren cálculos extensos y alto rendimiento. JavaScript lucha por cumplir con estos requisitos de alto rendimiento.
Sin embargo, no es práctico reemplazar JavaScript e incluso podría llevar décadas lograr ese objetivo, ya que todo Internet depende de él. Además, existe una gran comunidad que mejora constantemente JavaScript. De hecho, en comparación con otros lenguajes, JavaScript tiene algunas deficiencias en aspectos como nulo y ==. Sin embargo, estos problemas no son lo suficientemente graves como para justificar el reemplazo de toda la tecnología.
Por lo tanto, WebAssembly no reemplazará a JavaScript, pero eso no significa que WASM no se utilizará en el futuro. De hecho, el uso de WASM se generalizará cada vez más. Esto se debe a que WASM puede aportar poderosas capacidades computacionales a la web, como procesamiento de imágenes o juegos. Con WASM, puede crear una versión web de Photoshop que funcione bien, o un juego 3D que se ejecute a 60 fotogramas por segundo o incluso velocidades de fotogramas más altas en el navegador. Los juegos, en particular, presentan un desafío porque requieren la ejecución simultánea de procesamiento de audio y video, así como la coordinación de efectos físicos y de IA. WASM tiene la capacidad de ejecutar juegos de manera eficiente en el navegador, lo que abre la puerta para incorporar muchas otras aplicaciones al navegador.
La figura anterior muestra una comparación del flujo de trabajo entre JavaScript y WebAssembly (wasm). Se puede observar que wasm es mucho más conciso en comparación con JavaScript.
Máquina virtual WASM
En 2018, el ecosistema Ethereum comenzó a discutir el uso de una VM WASM como máquina virtual de contrato inteligente, ya que se consideraba que tenía un mejor rendimiento que la EVM. Gavin Wood, el inventor de EVM, expresó la viabilidad de reemplazarlo con WASM, y Vitalik también afirmó que Ethereum 2.0 se actualizará para admitir contratos WASM (eWASM) para satisfacer más necesidades de desarrollo. Hoy en día, el desarrollo de los contratos WASM ya ha tomado forma.
Problema de tamaño de la arquitectura
Las computadoras tradicionales tienen conjuntos de instrucciones que aceptan entradas de 32 o 64 bits. EVM, sin embargo, es diferente y único, ya que es una computadora de 256 bits diseñada para manejar más fácilmente el algoritmo hash de Ethereum, que produce salidas explícitas de 256 bits.
Sin embargo, la computadora real que ejecuta programas EVM necesita dividir las palabras de 256 bits en sus arquitecturas nativas para ejecutar contratos inteligentes, lo que hace que todo el sistema sea ineficiente y poco práctico.
Además, si desea implementar un algoritmo complejo como SHA256 utilizando los OPCODES básicos de EVM en Ethereum, ¡le espera un momento difícil! Para abordar el problema del alto costo del gas al ejecutar programas complejos a través del conjunto de instrucciones, Ethereum introdujo el concepto de precompilaciones, que compila el programa en EVM y consume una cantidad fija de gas. Una precompilación notable es el algoritmo hash de Ethereum, ya que implementarlo dentro de la máquina virtual resultaría en tarifas extremadamente costosas cuando se solicitan contratos.
Precompilación hinchada
El problema con la precompilación es que aumenta continuamente la hinchazón y la complejidad de la máquina virtual, sin abordar el problema central: el diseño ineficiente y deficiente del conjunto de instrucciones y especificaciones actuales.
¿Qué pasaría si pudiéramos definir una nueva especificación y conjunto de instrucciones que no requieran la precompilación de estos programas complejos, sino que logren eficientemente los resultados deseados a través de instrucciones básicas? Aquí es donde entra en juego WASM.
Actualmente, el equipo de EWASM está integrando WebAssembly en Ethereum para garantizar una capa de ejecución más eficiente y simplificada, lo que hace que Ethereum sea adecuado como una plataforma informática totalmente descentralizada. WASM ha sido adoptado como estándar por muchos otros proyectos, incluidos Dfinity y EOS, y ambos lo utilizan para mejorar sus capas de ejecución.
El proyecto Stylus es una iniciativa en la red Arbitrum Ethereum Layer 2 que tiene como objetivo mejorar el rendimiento de la ejecución de contratos inteligentes mediante la introducción de la máquina virtual WebAssembly (WASM). Los contratos se pueden ejecutar más rápido que con Solidity, al tiempo que se reducen los costos de gas. Esto facilita la creación de contratos inteligentes de alto rendimiento en la red Arbitrum y actualmente admite la compilación en C, C++ y Rust.
Compatibilidad con precompilaciones personalizadas: Stylus también admite precompilaciones personalizadas, lo que permite a los desarrolladores implementar sus propias precompilaciones de Rust o C++ en la red Arbitrum. Esto puede ayudar a introducir nuevos algoritmos criptográficos u otras funcionalidades específicas en la cadena sin esperar actualizaciones en la cadena. Por ejemplo, el cálculo de tensores se puede precompilar para reducir los costos de inferencia, lo que puede resultar beneficioso para el aprendizaje automático en cadena.
Interoperabilidad con EVM: Stylus logra la integración con el ecosistema Ethereum existente a través de la interoperabilidad con la Máquina Virtual Ethereum (EVM). Esto significa que los contratos Stylus pueden interactuar con los contratos EVM existentes y compartir el mismo estado global que el EVM.
Reentrada: a diferencia de Cosmos Wasm, Stylus Rust SDK introduce una función de reentrada y permite a los desarrolladores habilitarla manualmente. Esto permite que los contratos tengan más flexibilidad en la interoperabilidad, pero los desarrolladores deben administrar cuidadosamente el estado para garantizar la seguridad.
Basado en el próspero ecosistema de Arbitrum, la integración de Stylus es quizás la integración WASM más significativa. También mejora la competitividad de Arbitrum entre los campos de zkRollup.
El protocolo Gear está creando una tecnología que se puede implementar como una paracadena de Polkadot, que sirve como herramienta para albergar contratos inteligentes. Al igual que Polkadot, Gear también utiliza el marco Substrate, que simplifica el proceso de creación de diferentes cadenas de bloques para aplicaciones específicas. Substrate proporciona una funcionalidad lista para usar, lo que permite a las personas concentrarse en crear motores personalizados además del protocolo.
Anteriormente, el costo de lanzar una cadena de bloques era alto, pero Gear permite a los desarrolladores de dApps concentrarse en sus proyectos en lugar de construir y operar una cadena de bloques completa desde cero.
El motor principal del protocolo Gear es el módulo de contrato inteligente. En el caso de Gear, cualquier contrato inteligente es un programa WebAssembly compilado en diferentes lenguajes como Rust, C y C++. Para los desarrolladores ajenos al mundo de las criptomonedas, la barrera de entrada es baja porque pueden crear contratos inteligentes en un entorno familiar. A los desarrolladores les resulta más fácil experimentar con lenguajes de programación de contratos inteligentes.
La arquitectura de contrato inteligente de Gear utiliza el modelo de actor en su interior y proporciona las siguientes funcionalidades:
Cada programa tiene una cantidad fija de memoria, sobre la cual Gear permite controlar. Un programa solo puede leer y escribir en su propia memoria y no puede acceder al espacio de memoria de otros programas. Cada programa tiene su propio espacio de memoria independiente y la información de los nodos Gear se puede procesar en paralelo.
CosmWasm es una plataforma de contrato inteligente moderna y potente basada en Wasm que se puede integrar fácilmente con Cosmos-SDK. Esto muestra una de las principales ventajas de CosmWasm: los contratos escritos con CosmWasm están estrechamente integrados con IBC (Comunicación Inter-Blockchain) de forma nativa, lo que permite a los desarrolladores y usuarios ingresar a un futuro de múltiples cadenas. Actualmente, solo se admite Rust.
Ventajas de CosmWasm
Desafíos y limitaciones
Además de la máquina virtual wasm, también existe una tecnología emergente reciente llamada ZKWASM. El inventor, Delphinus Labs, ha abierto el código de ZK-WASM en GitHub. ZKWASM permite a los desarrolladores verificar la exactitud de los cálculos ejecutados sin volver a ejecutarlos. Al aprovechar ZKWASM, los desarrolladores pueden crear de manera flexible aplicaciones a prueba de conocimiento cero (ZKP) utilizando varios lenguajes de programación. Estas aplicaciones se pueden ejecutar sin problemas en los navegadores web.
ZKWASM se deriva de ZKSNARK, que es una combinación de SNARG y pruebas de conocimiento cero. Expliquemoslo más. Normalmente, para utilizar ZKSNARK, es necesario escribir un programa en un lenguaje de circuitos aritméticos o en un lenguaje compatible con circuitos como Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates, etc. Esto supone una barrera para los programas existentes, lo que les dificulta aprovechar el poder de ZKSNARK. Sin embargo, hay otra forma, que no es usar ZKSNARK en el nivel de código fuente sino en el nivel de código de bytes de una máquina virtual, y luego implementar una máquina virtual que admita ZKSNARK. Delphinus Labs ha adoptado este último enfoque incorporando toda la máquina virtual WASM en un circuito ZKSNARK. Como resultado, las aplicaciones WASM existentes pueden ejecutarse directamente en ZKWASM sin ninguna modificación. Por lo tanto, los proveedores de servicios en la nube pueden demostrar a cualquier usuario que los resultados del cálculo se calculan de manera honesta y no revelarán ninguna información privada.
ZKWASM proporciona varios casos de uso, como habilitar la verificación en cadena de las operaciones realizadas en el navegador. Permite interacciones basadas en la web que son verificables en blockchain. Otros casos de uso incluyen servicios de Oracle, computación fuera de cadena, automatización, cerrar la brecha entre Web2 y Web3, generar pruebas para el aprendizaje automático y el procesamiento de datos, e incluso juegos y aplicaciones sociales. Con una adopción cada vez mayor, zkWASM amplía las posibilidades de Web3 e integra a los desarrolladores de Web2 en este panorama transformador.
A través de la implementación ZKWASM de Delphinus Lab, los desarrolladores pueden aprovechar el poder de las pruebas de conocimiento cero para mejorar la seguridad y privacidad de sus aplicaciones, allanando el camino para un ecosistema digital más confiable y descentralizado.
El rendimiento de la Web y el futuro de la capa de ejecución de la plataforma de contratos inteligentes son prometedores. Las dApps no solo tendrán un mayor rendimiento, sino que la integración de WASM también hará que sea más fácil para aquellos familiarizados con lenguajes convencionales como Rust y Go desarrollar contratos inteligentes, sin tener que aprender las complejidades de la solidez u otros lenguajes de desarrollo de blockchain. Según Evans Data Corporation, hay casi 27 millones de desarrolladores en todo el mundo y este número está creciendo constantemente, con un aumento esperado a más de 28,7 millones para 2024. Sin embargo, el número de desarrolladores en el campo blockchain sigue siendo inferior a 30.000, lo que representa sólo aproximadamente una milésima parte del número total de desarrolladores. Aunque este número aumenta constantemente, aprender nuevos lenguajes de contratos inteligentes puede seguir siendo una barrera para que los desarrolladores ingresen a la industria blockchain.
Pero cada vez más cadenas de bloques están comenzando a admitir Web Assembly como código de bytes para contratos inteligentes compilados. WASM aporta eficiencia, interoperabilidad y una amplia gama de casos de uso a las cadenas de bloques. También sirve como llave para abrir la puerta a los desarrolladores, reduciendo la barrera de entrada al desarrollo de blockchain. Imagínese, en un futuro cercano, cuando los desarrolladores Web 2.0 quieran probar suerte en el desarrollo de blockchain, podrán usar lenguajes familiares como Python, C++ y JavaScript para crear aplicaciones a gran escala en blockchain, maximizando el valor de las redes descentralizadas. Primero, reducir la barrera para los creadores (desarrolladores), luego reducir la barrera para los usuarios y avanzar hacia la adopción masiva.
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21
https://wiki.polkadot.network/docs/learn-wasm
https://docs.arbitrum.io/stylus/stylus-gentle-introduction
https://medium.com/@gear_techs/introduciendo-gear-easy-to-use-polkadot-parachain-9ccd05437a9c
https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8
https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf
https://github.com/DelphinusLab/zkWasm
Gracias a Maggie y Xinyou Ji (CMU) por sus consejos y orientación sobre este artículo.
Descargo de responsabilidad: Todos los artículos de Foresight Ventures no pretenden ser consejos de inversión. Las inversiones implican riesgos, así que evalúe su propia tolerancia al riesgo y tome decisiones de inversión con cuidado.
WebAssembly (Wasm) es un formato de instrucción binaria portátil y de alto rendimiento que se puede ejecutar en navegadores web. Está diseñado como un objetivo de compilación universal que puede usarse con múltiples lenguajes de programación y ejecutarse en diferentes plataformas.
Blockchain es una tecnología de contabilidad distribuida descentralizada que garantiza la seguridad y confiabilidad de los datos mediante el uso de criptografía y algoritmos de consenso. Blockchain se puede utilizar para registrar transacciones, almacenar datos y ejecutar contratos inteligentes, entre otras aplicaciones.
Existen varias relaciones y escenarios de aplicación entre Wasm y blockchain:
En resumen, la combinación de Wasm y blockchain proporciona aplicaciones y servicios blockchain más eficientes, seguros y flexibles. La portabilidad y el alto rendimiento de Wasm la convierten en una tecnología importante en el campo de blockchain.
WebAssembly es un estándar de conjunto de instrucciones eficiente y liviano desarrollado por el World Wide Web Consortium (W3C). Es aclamado como un disruptor para la web y la informática de alto rendimiento, ya que admite la ejecución entre navegadores. Esto significa que podemos compilar diferentes lenguajes de programación, incluidos C/C++, Go, Rust y más, en un formato binario estándar unificado y usarlo como reemplazo de JavaScript, ejecutándolo con una eficiencia de código casi nativa en los navegadores web.
WebAssembly, también conocido como WASM, es una tecnología independiente de la plataforma y segura para la memoria que puede asignarse de manera eficiente a diferentes arquitecturas de CPU. Ofrece varias ventajas clave:
Además, la Web es la única plataforma verdaderamente universal que permite el acceso a sus aplicaciones en cualquier dispositivo. Esto también le permite mantener una base de código única, simplificar las actualizaciones y garantizar que todos los usuarios puedan acceder a sus aplicaciones. WASM admite operaciones enteras de 64 y 32 bits, que corresponden directamente a las instrucciones de la CPU. Al eliminar las operaciones de punto flotante, se puede lograr fácilmente un comportamiento determinista, lo cual es necesario para los algoritmos de consenso. Con el respaldo del proyecto de infraestructura del compilador LLVM, WASM puede beneficiarse de más de una década de optimizaciones del compilador en LLVM. WASM es desarrollado continuamente por importantes empresas como Google, Apple, Microsoft, Mozilla y Facebook, y cuenta con el respaldo de los servidores de los navegadores desarrollados por estas empresas.
La belleza de WASM radica en su capacidad de ejecutarse en cualquier lugar sin necesidad de descargarlo ni instalarlo, ya que está en formato binario. Con solo un clic, las aplicaciones web se pueden ejecutar inmediatamente cuando sea necesario. Es incluso más seguro que descargar y ejecutar archivos binarios directamente, ya que los navegadores tienen mecanismos de seguridad integrados que evitan que el código ejecutado dañe su sistema. Además, compartir aplicaciones web es sencillo: los enlaces se pueden colocar en cualquier lugar como cadenas en las que se puede hacer clic.
La Web ha evolucionado desde una plataforma para contenido estático y pequeños lenguajes de escritura a una plataforma potente y popular repleta de aplicaciones y funciones sorprendentes, gracias a la funcionalidad integrada de los navegadores y la interactividad proporcionada por la Web. Sin embargo, las aplicaciones web siguen siendo predominantemente impulsadas por el mismo lenguaje de programación (JavaScript), que inicialmente no fue diseñado para realizar estas tareas.
Inicialmente, JavaScript era un lenguaje de secuencias de comandos simple destinado a brindar interactividad a documentos de hipertexto livianos en aplicaciones web. Su diseño era fácil de aprender y escribir y no priorizaba la velocidad del tiempo de ejecución. A lo largo de los años, mejoras significativas en el rendimiento en el análisis de JavaScript por parte de los navegadores han dado lugar a aumentos notables del rendimiento.
Con la velocidad acelerada de ejecución de JavaScript, la gama de cosas que se pueden hacer dentro de los navegadores se ha ampliado significativamente. Las nuevas API han introducido funciones como gráficos interactivos, transmisión de video, navegación sin conexión y más. Además, un número cada vez mayor de aplicaciones que antes estaban limitadas a entornos de escritorio han ingresado a la Web. Ahora puedes editar documentos y enviar correos electrónicos fácilmente en tu navegador. Sin embargo, en ciertos dominios, el rendimiento de JavaScript sigue siendo un desafío. Piense en las aplicaciones de software que utiliza además de los navegadores: juegos, edición de vídeo, renderizado 3D o producción musical. Estas aplicaciones requieren cálculos extensos y alto rendimiento. JavaScript lucha por cumplir con estos requisitos de alto rendimiento.
Sin embargo, no es práctico reemplazar JavaScript e incluso podría llevar décadas lograr ese objetivo, ya que todo Internet depende de él. Además, existe una gran comunidad que mejora constantemente JavaScript. De hecho, en comparación con otros lenguajes, JavaScript tiene algunas deficiencias en aspectos como nulo y ==. Sin embargo, estos problemas no son lo suficientemente graves como para justificar el reemplazo de toda la tecnología.
Por lo tanto, WebAssembly no reemplazará a JavaScript, pero eso no significa que WASM no se utilizará en el futuro. De hecho, el uso de WASM se generalizará cada vez más. Esto se debe a que WASM puede aportar poderosas capacidades computacionales a la web, como procesamiento de imágenes o juegos. Con WASM, puede crear una versión web de Photoshop que funcione bien, o un juego 3D que se ejecute a 60 fotogramas por segundo o incluso velocidades de fotogramas más altas en el navegador. Los juegos, en particular, presentan un desafío porque requieren la ejecución simultánea de procesamiento de audio y video, así como la coordinación de efectos físicos y de IA. WASM tiene la capacidad de ejecutar juegos de manera eficiente en el navegador, lo que abre la puerta para incorporar muchas otras aplicaciones al navegador.
La figura anterior muestra una comparación del flujo de trabajo entre JavaScript y WebAssembly (wasm). Se puede observar que wasm es mucho más conciso en comparación con JavaScript.
Máquina virtual WASM
En 2018, el ecosistema Ethereum comenzó a discutir el uso de una VM WASM como máquina virtual de contrato inteligente, ya que se consideraba que tenía un mejor rendimiento que la EVM. Gavin Wood, el inventor de EVM, expresó la viabilidad de reemplazarlo con WASM, y Vitalik también afirmó que Ethereum 2.0 se actualizará para admitir contratos WASM (eWASM) para satisfacer más necesidades de desarrollo. Hoy en día, el desarrollo de los contratos WASM ya ha tomado forma.
Problema de tamaño de la arquitectura
Las computadoras tradicionales tienen conjuntos de instrucciones que aceptan entradas de 32 o 64 bits. EVM, sin embargo, es diferente y único, ya que es una computadora de 256 bits diseñada para manejar más fácilmente el algoritmo hash de Ethereum, que produce salidas explícitas de 256 bits.
Sin embargo, la computadora real que ejecuta programas EVM necesita dividir las palabras de 256 bits en sus arquitecturas nativas para ejecutar contratos inteligentes, lo que hace que todo el sistema sea ineficiente y poco práctico.
Además, si desea implementar un algoritmo complejo como SHA256 utilizando los OPCODES básicos de EVM en Ethereum, ¡le espera un momento difícil! Para abordar el problema del alto costo del gas al ejecutar programas complejos a través del conjunto de instrucciones, Ethereum introdujo el concepto de precompilaciones, que compila el programa en EVM y consume una cantidad fija de gas. Una precompilación notable es el algoritmo hash de Ethereum, ya que implementarlo dentro de la máquina virtual resultaría en tarifas extremadamente costosas cuando se solicitan contratos.
Precompilación hinchada
El problema con la precompilación es que aumenta continuamente la hinchazón y la complejidad de la máquina virtual, sin abordar el problema central: el diseño ineficiente y deficiente del conjunto de instrucciones y especificaciones actuales.
¿Qué pasaría si pudiéramos definir una nueva especificación y conjunto de instrucciones que no requieran la precompilación de estos programas complejos, sino que logren eficientemente los resultados deseados a través de instrucciones básicas? Aquí es donde entra en juego WASM.
Actualmente, el equipo de EWASM está integrando WebAssembly en Ethereum para garantizar una capa de ejecución más eficiente y simplificada, lo que hace que Ethereum sea adecuado como una plataforma informática totalmente descentralizada. WASM ha sido adoptado como estándar por muchos otros proyectos, incluidos Dfinity y EOS, y ambos lo utilizan para mejorar sus capas de ejecución.
El proyecto Stylus es una iniciativa en la red Arbitrum Ethereum Layer 2 que tiene como objetivo mejorar el rendimiento de la ejecución de contratos inteligentes mediante la introducción de la máquina virtual WebAssembly (WASM). Los contratos se pueden ejecutar más rápido que con Solidity, al tiempo que se reducen los costos de gas. Esto facilita la creación de contratos inteligentes de alto rendimiento en la red Arbitrum y actualmente admite la compilación en C, C++ y Rust.
Compatibilidad con precompilaciones personalizadas: Stylus también admite precompilaciones personalizadas, lo que permite a los desarrolladores implementar sus propias precompilaciones de Rust o C++ en la red Arbitrum. Esto puede ayudar a introducir nuevos algoritmos criptográficos u otras funcionalidades específicas en la cadena sin esperar actualizaciones en la cadena. Por ejemplo, el cálculo de tensores se puede precompilar para reducir los costos de inferencia, lo que puede resultar beneficioso para el aprendizaje automático en cadena.
Interoperabilidad con EVM: Stylus logra la integración con el ecosistema Ethereum existente a través de la interoperabilidad con la Máquina Virtual Ethereum (EVM). Esto significa que los contratos Stylus pueden interactuar con los contratos EVM existentes y compartir el mismo estado global que el EVM.
Reentrada: a diferencia de Cosmos Wasm, Stylus Rust SDK introduce una función de reentrada y permite a los desarrolladores habilitarla manualmente. Esto permite que los contratos tengan más flexibilidad en la interoperabilidad, pero los desarrolladores deben administrar cuidadosamente el estado para garantizar la seguridad.
Basado en el próspero ecosistema de Arbitrum, la integración de Stylus es quizás la integración WASM más significativa. También mejora la competitividad de Arbitrum entre los campos de zkRollup.
El protocolo Gear está creando una tecnología que se puede implementar como una paracadena de Polkadot, que sirve como herramienta para albergar contratos inteligentes. Al igual que Polkadot, Gear también utiliza el marco Substrate, que simplifica el proceso de creación de diferentes cadenas de bloques para aplicaciones específicas. Substrate proporciona una funcionalidad lista para usar, lo que permite a las personas concentrarse en crear motores personalizados además del protocolo.
Anteriormente, el costo de lanzar una cadena de bloques era alto, pero Gear permite a los desarrolladores de dApps concentrarse en sus proyectos en lugar de construir y operar una cadena de bloques completa desde cero.
El motor principal del protocolo Gear es el módulo de contrato inteligente. En el caso de Gear, cualquier contrato inteligente es un programa WebAssembly compilado en diferentes lenguajes como Rust, C y C++. Para los desarrolladores ajenos al mundo de las criptomonedas, la barrera de entrada es baja porque pueden crear contratos inteligentes en un entorno familiar. A los desarrolladores les resulta más fácil experimentar con lenguajes de programación de contratos inteligentes.
La arquitectura de contrato inteligente de Gear utiliza el modelo de actor en su interior y proporciona las siguientes funcionalidades:
Cada programa tiene una cantidad fija de memoria, sobre la cual Gear permite controlar. Un programa solo puede leer y escribir en su propia memoria y no puede acceder al espacio de memoria de otros programas. Cada programa tiene su propio espacio de memoria independiente y la información de los nodos Gear se puede procesar en paralelo.
CosmWasm es una plataforma de contrato inteligente moderna y potente basada en Wasm que se puede integrar fácilmente con Cosmos-SDK. Esto muestra una de las principales ventajas de CosmWasm: los contratos escritos con CosmWasm están estrechamente integrados con IBC (Comunicación Inter-Blockchain) de forma nativa, lo que permite a los desarrolladores y usuarios ingresar a un futuro de múltiples cadenas. Actualmente, solo se admite Rust.
Ventajas de CosmWasm
Desafíos y limitaciones
Además de la máquina virtual wasm, también existe una tecnología emergente reciente llamada ZKWASM. El inventor, Delphinus Labs, ha abierto el código de ZK-WASM en GitHub. ZKWASM permite a los desarrolladores verificar la exactitud de los cálculos ejecutados sin volver a ejecutarlos. Al aprovechar ZKWASM, los desarrolladores pueden crear de manera flexible aplicaciones a prueba de conocimiento cero (ZKP) utilizando varios lenguajes de programación. Estas aplicaciones se pueden ejecutar sin problemas en los navegadores web.
ZKWASM se deriva de ZKSNARK, que es una combinación de SNARG y pruebas de conocimiento cero. Expliquemoslo más. Normalmente, para utilizar ZKSNARK, es necesario escribir un programa en un lenguaje de circuitos aritméticos o en un lenguaje compatible con circuitos como Pinocchio, TinyRAM, Buffet/Pequin, Geppetto, xJsnark framework, ZoKrates, etc. Esto supone una barrera para los programas existentes, lo que les dificulta aprovechar el poder de ZKSNARK. Sin embargo, hay otra forma, que no es usar ZKSNARK en el nivel de código fuente sino en el nivel de código de bytes de una máquina virtual, y luego implementar una máquina virtual que admita ZKSNARK. Delphinus Labs ha adoptado este último enfoque incorporando toda la máquina virtual WASM en un circuito ZKSNARK. Como resultado, las aplicaciones WASM existentes pueden ejecutarse directamente en ZKWASM sin ninguna modificación. Por lo tanto, los proveedores de servicios en la nube pueden demostrar a cualquier usuario que los resultados del cálculo se calculan de manera honesta y no revelarán ninguna información privada.
ZKWASM proporciona varios casos de uso, como habilitar la verificación en cadena de las operaciones realizadas en el navegador. Permite interacciones basadas en la web que son verificables en blockchain. Otros casos de uso incluyen servicios de Oracle, computación fuera de cadena, automatización, cerrar la brecha entre Web2 y Web3, generar pruebas para el aprendizaje automático y el procesamiento de datos, e incluso juegos y aplicaciones sociales. Con una adopción cada vez mayor, zkWASM amplía las posibilidades de Web3 e integra a los desarrolladores de Web2 en este panorama transformador.
A través de la implementación ZKWASM de Delphinus Lab, los desarrolladores pueden aprovechar el poder de las pruebas de conocimiento cero para mejorar la seguridad y privacidad de sus aplicaciones, allanando el camino para un ecosistema digital más confiable y descentralizado.
El rendimiento de la Web y el futuro de la capa de ejecución de la plataforma de contratos inteligentes son prometedores. Las dApps no solo tendrán un mayor rendimiento, sino que la integración de WASM también hará que sea más fácil para aquellos familiarizados con lenguajes convencionales como Rust y Go desarrollar contratos inteligentes, sin tener que aprender las complejidades de la solidez u otros lenguajes de desarrollo de blockchain. Según Evans Data Corporation, hay casi 27 millones de desarrolladores en todo el mundo y este número está creciendo constantemente, con un aumento esperado a más de 28,7 millones para 2024. Sin embargo, el número de desarrolladores en el campo blockchain sigue siendo inferior a 30.000, lo que representa sólo aproximadamente una milésima parte del número total de desarrolladores. Aunque este número aumenta constantemente, aprender nuevos lenguajes de contratos inteligentes puede seguir siendo una barrera para que los desarrolladores ingresen a la industria blockchain.
Pero cada vez más cadenas de bloques están comenzando a admitir Web Assembly como código de bytes para contratos inteligentes compilados. WASM aporta eficiencia, interoperabilidad y una amplia gama de casos de uso a las cadenas de bloques. También sirve como llave para abrir la puerta a los desarrolladores, reduciendo la barrera de entrada al desarrollo de blockchain. Imagínese, en un futuro cercano, cuando los desarrolladores Web 2.0 quieran probar suerte en el desarrollo de blockchain, podrán usar lenguajes familiares como Python, C++ y JavaScript para crear aplicaciones a gran escala en blockchain, maximizando el valor de las redes descentralizadas. Primero, reducir la barrera para los creadores (desarrolladores), luego reducir la barrera para los usuarios y avanzar hacia la adopción masiva.
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
https://www.notion.so/18f67cee15c147dfae68b06269a455c0?pvs=21
https://wiki.polkadot.network/docs/learn-wasm
https://docs.arbitrum.io/stylus/stylus-gentle-introduction
https://medium.com/@gear_techs/introduciendo-gear-easy-to-use-polkadot-parachain-9ccd05437a9c
https://medium.com/cosmwasm/cosmwasm-for-ctos-f1ffa19cccb8
https://www.cncf.io/wp-content/uploads/2023/09/The-State-of-WebAssembly-2023.pdf
https://github.com/DelphinusLab/zkWasm
Gracias a Maggie y Xinyou Ji (CMU) por sus consejos y orientación sobre este artículo.
Descargo de responsabilidad: Todos los artículos de Foresight Ventures no pretenden ser consejos de inversión. Las inversiones implican riesgos, así que evalúe su propia tolerancia al riesgo y tome decisiones de inversión con cuidado.