¿La segunda EVM de Arbitrum?
Hola amix de Espacio Cripto, hoy te explicaré qué es Arbitrum Stylus y te acompañaré en este camino de exploración. Esta tecnología se encuentra en etapa de desarrollo y no es recomendable que se utilice en entornos de producción. Si tienes dudas, puedes pasar a la comunidad de Espacio Cripto o ver la documentación para enriquecer tu desarrollo.
Iniciaremos nuestra travesía por el camino Stylus, creando contratos inteligentes basados en Rust y acortando el camino de aprendizaje si ya eres developer con experiencia en lenguajes de alto performance. Antes de sumergirnos en esta emocionante aventura, ¿Qué es exactamente Stylus?
¿Qué es Arbitrum Stylus?
Stylus es una herramienta innovadora que nos permite escribir contratos inteligentes en una variedad de lenguajes de programación, incluyendo Rust, C, C++, y otros más. Lo más impresionante es que Stylus compila estos contratos en WASM sin perder compatibilidad con EVM (Ethereum Virtual Machine), lo que significa que podemos trabajar en nuestros lenguajes favoritos sin limitaciones técnicas. ¿No es emocionante?
Es muy probable que te estés preguntando ¿Qué es WASM? La implementación de WebAssembly (WASM) en la segunda máquina virtual de Arbitrum representa un avance significativo en la tecnología de las cadenas de bloques. WASM es un formato binario moderno ampliamente utilizado en los estándares web y en diversas industrias debido a su velocidad, portabilidad y legibilidad. Desde la actualización de Arbitrum Nitro, WASM ha sido esencial en las pruebas de fraude en Arbitrum. La versatilidad de WASM permite que cualquier lenguaje de programación que pueda compilar a WASM sea compatible con Arbitrum Stylus. Aunque Rust, C y C++ son los más adecuados para el desarrollo de contratos inteligentes, otros lenguajes como Go, Sway, Move y Cairo también son compatibles. En comparación con Solidity, los programas WASM son mucho más eficientes con una mejora de hasta 10 veces en la ejecución de contratos.
La implementación de programas en Stylus, la máquina virtual de Arbitrum, implica cuatro pasos clave:
- Codificación: Los desarrolladores pueden escribir contratos inteligentes en cualquier lenguaje de programación que pueda compilar en WebAssembly (WASM). Aunque inicialmente se priorizan Rust, C y C++, otros lenguajes también serán compatibles. Rust cuenta con un sólido soporte desde el principio, mientras que C y C++ permiten implementar contratos existentes con mínimas modificaciones.
- Compilación: Los programas Stylus se compilan dos veces. Primero, desde el lenguaje de alto nivel a WASM, utilizando la herramienta CLI proporcionada o cualquier otro compilador de Smart Contract adecuado. Luego, en un proceso de activación, se convierten a código de máquina nativo del nodo. Durante este proceso, se aplican medidas de seguridad y se optimiza el rendimiento del código.
- Ejecución: Una vez compilados y activados, los programas Stylus pueden ejecutarse en la cadena. Se utilizan middlewares para garantizar la seguridad y la ejecución determinista, con medidas como la medición de gas y la verificación de profundidad.
- Prueba: Finalmente, se realizan pruebas exhaustivas para garantizar el correcto funcionamiento y la seguridad de los programas Stylus en la cadena. Esto incluye pruebas de funcionalidad, rendimiento y seguridad.
El testnet de Stylus está abierto para toda la comunidad de desarrolladores interesados en explorar nuevas posibilidades de programar contratos inteligentes, te dejo un esquema de cómo es que se ven la compilación, de un smart contract de forma tradicional con EVM a una EVM+ de Arbitrum.
¿Cómo Stylus puede ayudarme ?
- Permite a los desarrolladores utilizar su lenguaje preferido sin necesidad de Solidity, reduciendo la curva de aprendizaje y desarrollo.
- Beneficia a los desarrolladores con experiencia en lenguajes como Rust, C y C++ al abrir nuevas oportunidades en el ecosistema blockchain.
- Facilita la incorporación de juegos construidos en C++ en la cadena, fomentando el desarrollo de GameDEFI.
- Abre un mundo de posibilidades para modelos de inteligencia artificial dentro del ecosistema Arbitrum.
- Posibilita la integración de bibliotecas de arte generativas que consumen grandes cantidades de RAM.
Tutorial: Creando smart contracts en Rust, sin aprender Solidity.
Para probar Stylus vamos a hacer un ejercicio rápido desarrollando un contrato inteligente.
Requerimientos:
- Wallet compatible con la EVM.
- Cargar sepolia en la red Arbitrum testnet.
- Descarga e instalar, el lenguaje de programación Rust.
- Y si no tenemos nuestro editor de código, descargar el de tu preferencia, pero para este tutorial utilizaremos VScode.
Empecemos con el tutorial.
Iniciaremos configurando nuestro entorno de desarrollo, este tutorial está basado en sistemas operativos Linux y OS de Apple, para más información de instalación te recomiendo que veas la documentación de las herramientas.
Instalemos Rust copiando el siguiente script, te dejo el link donde puedes obtener esta información de instalación. https://www.rust-lang.org/tools/install
Abre la terminal, pega el LINK (curl ) y da enter.
Al dar Enter iniciara la Instalación, puedes implementar otras configuraciones de instalación, te recomiendo la default. Seleccionando la opción 1.
Iniciara el proceso de instalación
Listo ya tenemos instalado Rust, ahora para verificar que está instalado correctamente, tecleamos el comando: cargo -v
Y si te aparece la versión, bien vamos por buen camino
Ahora instalare algunas extensiones dentro de mi editor de código, yo estoy utilizando VScode, estas extensiones son herramientas, para mejorar la experiencia de desarrollo en Rust dentro de VScode, rust-analyzer ofrece un análisis estático, Error Lens resalta errores directamente en el código, Even Better TOML mejora la edicion de archivos TOML, y Crates facilita la gestión de dependencias, proporciona información sobre paquetes directamente en el editor.
Les dejare una lista de extensiones con los links:
- rust-analyzer - Visual Studio Marketplace
- Error Lens - Visual Studio Marketplace
- Even Better TOML - Visual Studio Marketplace
- crates - Visual Studio Marketplace
Te dejo un ejemplo para seguir instalando extensiones es el mismo proceso.
Instalamos Rust-Analyzer, dentro de nuestro editor de código tenemos una barra lateral izquierda, hay un icono de extensiones, vamos a ese apartado damos Enter. Nos aparecerá algo similar a lo que estamos viendo.
Buscamos en nuestra barra de búsqueda y escribimos rust-analyzer.
Damos click en instalar, listo ahora solo hay que repetir el mismo procedimiento para instalar la lista de extensiones que mencioné anteriormente.
Listo, luego de instalar en nuestro VScode, regresaremos a la terminal.
Ahora nos falta instalar stylus, para poder iniciar nuestro proyecto.
Tecleando el siguiente comando:
RUSTFLAGS="-C link-args=-rdynamic" cargo install --force cargo-stylus
La instalación puede tardar algunos minutos, no te asustes si se demora.
En lo que termina de compilar iremos por sepolia testnet a la faucet de Arbitrum Stylus, con el siguiente Link: https://bwarelabs.com/faucets/arbitrum-stylus-testnet
Algunos Tips que te pueden, ayudar para conseguir Eth sepolia, en la tesnet de Arbitrum les dejo el link de la comunidad de espacio cripto, por si no funcionan las faucet`s y necesitan ayuda https://t.me/espaciocripto.
- Puedes ir a los link que te dejo a continuación
Arbitrum Faucet for Sepolia by QuickNode
Para este tutorial no necesitamos mucho ETH en Sepolia sobre arbitrum, con 0.005 es suficiente.
Luego de pegar nuestra dirección y dar enter en mint o claim, depende de la faucet que utilices, ahora solo falta resolver un Captcha, y listo, te dará la información de una transacción, del depósito de tus tokens de testnet.
Revisando la terminal Stylus está instalado en nuestra computadora.
Si escribimos el siguiente comando, nos aparecerá la lista de comandos de stylus:
cargo stylus -h
Veremos esto en la terminal, vamos por buen camino.
Lo agregamos con el siguiente comando: rustup target add wasm32-unknown-unknown
Ejecutemos el comando e instalará los componentes
Verifiquemos, que Stylus, está instalado con el comando: cargo stylus –help
Ahora que verificamos, todo nuestro entorno de trabajo está instalado correctamente e iniciamos el proyecto.
Inicio rapido.
Con el comando: cargo stylus new espacioCripto
Para comprobar que nuestro proyecto es correcto, tecleamos el siguiente comando:
cargo stylus check
Iniciará la compilación de nuestro proyecto, ahora es importante ver nuestro árbol del proyecto, luego de abrirlo en nuestro editor de código.
Les daré un explicación rápida sobre la estructura de nuestro proyecto y que guarda cada carpeta,
- Carpeta .cargo, guarda temas de wasm.
- Github, tenemos un archivo markdown, que es puro texto de un pull request.
- La carpeta examples, nos da un ejemplo de un smart contract en su composición.
- Carpeta licencias, licencias.
- Src, es la carpeta más interesante es donde desarrollamos nuestros smart contracts.
- En la carpeta Target, se encuentran configuraciones de compilación de nuestro compilador de Rust etc.
- Gitignore, para configurar los archivos que serán ignorados en nuestros commits.
- Mas configuraciones y demás que son parte de la documentación del proyecto.
Smart Contract Coding
Ahora estamos listos para empezar, el desarrollo de nuestros smart contracts.
Para este ejercicio vamos a hacer un smart contract que reciba datos y los almacene en la blockchain, un get y un set.
Así es como se vería en nuestro editor de código.
Es prudente hablar sobre la composición de nuestro contratos, librerías, estructura de datos, lo hablaré de una forma general.
Ejemplo:
Este es un fragmento de código en Rust que define un contrato inteligente utilizando el marco de trabajo Stylus. Permíteme explicarlo paso a paso:
- El código comienza con algunos comentarios que proporcionan información sobre lo que hace el contrato y cómo utilizarlo.
- El código Rust real comienza con algunas configuraciones y la importación de bibliotecas y módulos necesarios.
- El macro sol_storage! se utiliza para definir almacenamiento persistente para el contrato. En este caso, define una estructura llamada Counter con un único campo number de tipo uint256 (entero sin signo de 256 bits).
- El atributo #[external] marca el bloque de implementación de la estructura Counter como conteniendo métodos externamente llamables.
- Dentro del bloque de implementación, se definen tres métodos:
- number: Obtiene el valor actual de number desde el almacenamiento.
- set_number: Establece el valor de number a un valor especificado por el usuario.
- increment: Incrementa el valor de number en 1.
Estos métodos utilizan el tipo U256 proporcionado por el SDK de Stylus, que representa enteros sin signo de 256 bits.
- El contrato está diseñado para ser equivalente en ABI (Interfaz Binaria de Aplicación) con Solidity, lo que significa que puede ser llamado tanto desde Solidity como desde Rust.
- Finalmente, hay una nota que menciona que el código es solo una plantilla y no ha sido auditado, lo que implica que podría no ser completamente seguro para implementarlo en un entorno de producción sin una revisión y pruebas adicionales.
Pero para este tutorial no vamos a desplegar en ninguna testnet, ya que estamos en una etapa super temprana, y esta tecnología no esta habilitada en ninguna testnet ni en ninguna mainet. Si te gusto y te quedaste con ganas de seguir aprendiendo, te sugiero ir a la comunidad de Arbitrum y seguir explorando stylus.
Este es el fin de nuestro camino por Stylus, ahora eres uno de los primeros en probar y adaptar esta tecnología super innovadora, si te gustaría continuar enriqueciendo tu conocimiento, te recomendamos ir a la documentación y al discord de Arbitrum, muy seguramente alguien más está entusiasmado, por seguir aprendiendo este tema.
Ya vimos los básicos de Arbitrum y la tecnología de su rollup; ahora empezaremos a construir sobre Arbitrum y a utilizar las herramientas que nos dan para poder crear soluciones sustentables y escalables con el objetivo de ayudar a la comunidad de Arbitrum a continuar creciendo y seguir desarrollándose. Acompáñanos a descubrir la primera de estas herramientas. Arbitrum Stylus.
Ha sido un viaje largo, aprendimos funamentalmente que es Arbitrum y como funciona y nos metimos de lleno a las herramientas para desarrolladores como Orbit, para lanzar tu propia blockchain o Anytrust; una solución para servicios blockchain enfocados en la industria gamer.
Los rollups han sido revolucionarios. Heredan la seguridad de la capa de Ethereum, mientras proveen una forma mucho más barata de transaccionar gracias a su capacidad para poder procesar una mayor cantidad de transacciones. Hay aplicaciones que para poder tener un negocio viable utilizando blockchain necesitan costos de transacción ultra bajos, una industria como estas es el gaming. Para este tipo de aplicaciones, Arbitrum desarrollo las cadenas AnyTrust, las cuales permiten costos de operación mucho menores y retiros más rápidos, todo por un poco de confianza.
Hola comunidad de espacio cripto espero se encuentren muy bien, les saluda su dev de confianza; Eder. En este artículo haremos un viaje al planeta Orbit, que se encuentra en la galaxia de Arbitrum dentro del universo de Ethereum. Yo, su capitán por hoy, les acompañaré en este viaje; iremos desentrañando cada rincón de Orbit, desde una explicación de cómo funciona, hasta tener nuestra propia cadena corriendo en nuestra computadora, mejor conocida como una (devnet) 🫡🚀
En el artículo pasado conocimos Arbitrum, sus fundadores, su historia y sus primeros pasos como una L2. Esta serie de artículos tienen un enfoque en el ecosistema del desarrollo, con eso en mente y ya conociendo un poco a Arbitrum ahora si entraremos al lado técnico de la red, como funciona y que hace a Arbitrum especial. Al final de este escrito habrás comprendido como funciona el rollup de Arbitrum y como utilizarlo gracias a nuestro pequeño tutorial.
Te damos la bienvenida a esta serie de artículos donde nos sumergiremos en el profundo ecosistema de Arbitrum, centrándonos especialmente en el desarrollo y las herramientas que ofrece para construir un futuro sólido en la web3.