Desarrolla un Smart Contract en Arbitrum
Ya que tenemos una idea general de lo que es Arbitrum, exploremos un poco sobre cómo desplegar un contrato inteligente sobre este maravilloso ecosistema.
Este no es un artículo para principiantes, asumimos que tienes conocimiento de programación, estás familiarizadx con Solidity y tienes un ambiente de desarrollo preparado.
Es necesario tener conocimiento de programación con Solidity para poder realizar este proceso. Solidity es el lenguaje de programación en que convencionalmente entienden las EVMs y tiene una estructura similar a Javascript. El increíble equipo de Arbitrum está trabajando muy duro en Stylus, una herramienta con la que podrás desplegar contratos inteligentes en otros lenguajes que compilan a un archivo WASM, pero por ahora enfoquémonos en las bases: utilicemos Solidity.
¿Qué necesitamos?
- Un IDE para poder desarrollar el contrato inteligente, de preferencia VSCode. Puedes descargarlo aquí.
- Una cartera en la que puedas agregar redes de prueba. MetaMask es una opción, pero también funcionan otras. Revisa si tu cartera preferida soporta esta opción.
- Yarn: el administrador de paquetes con el que haremos la instalación de todas las dependencias. (Para esto probablemente necesites tener instalado Node.js -- una versión compatible con Corepack -- y su administrador de paquetes como NPM). Aquí hay una guía rápida que puede servirte si tienes problemas para instalar yarn.
Una vez que tenemos todo listo, podemos comenzar.
Máquina de Cupcakes
En esta ocasión construiremos una máquina expendedora que dará cupcakes. Esta máquina expendedora seguirá dos reglas:
- La máquina entregará un cupcake a cualquier persona que no haya recibido uno recientemente.
- Nadie puede cambiar estas reglas.
Aquí hay una implementación de una máquina de cupcakes en JS:
Esta máquina es perfectamente funcional y parece que cumple con las reglas que establecimos, pero está en el servidor de un proveedor centralizado. Estamos confiando en que él no cambiará estas reglas, pero aun así pueden negarle el acceso a varias personas, o podrían estarle dando más cupcakes a algunas personas en especial.
Una forma de asegurarnos que no haya puntos de falla únicos que puedan explotarse es descentralizando la lógica de la máquina expendedora.
Preparando todo
Ha llegado la hora divertida. Implementar en Arbitrum, que es una red descentralizada y hereda la seguridad de Ethereum.
Primero es necesario configurar el directorio del proyecto.
- Crea una carpeta en donde irán todos nuestros archivos y herramientas.
- En terminal, dirígete a la carpeta recién creada.
- Inicializa yarn.
- yarn init -y
- Instala hardhat.
- yarn add hardhat @nomicfoundation/hardhat-toolbox -D
Con hardhat podremos escribir, probar y desplegar nuestros contratos inteligentes. Además, como instalamos Hardhat-toolbox, tendremos varios plugins útiles para después.
- Inicializa hardhat
- yarn hardhat init
- Selecciona "Create a JavaScript project" y selecciona el directorio en el que está la carpeta que creamos al inicio.
Ahora deberías ver varias cosas dentro de la carpeta que creamos. Entre ellas estarán:
- contracts, que es la carpeta donde irán los contratos inteligentes. Aquí deberás ver Lock.sol.
- scripts, que contienen los scripts necesarios para interactuar con los contratos. Aquí deberás ver deploy.js.
- hardhat.config.js, que contiene la configuración de Hardhat.
Es necesario indicar en la configuración de Hardhat cosas como la cadena en la que estamos construyendo y la versión de solidity. Reemplaza lo que haya dentro del archivo de configuración con esto:
Es necesario instalar dependencias adicionales antes de poder compilar los contratos.
- Ejecuta
- yarn hardhat compile
- No va a funcionar precisamente porque faltan dependencias. Sigue las instrucciones hasta que cuando lo corras diga:
- Compiled 1 Solidity file successfully
- También verás una carpeta llamada artifacts, que contendrá el smart contract compilado.
Abre el archivo scripts/deploy.js y remplázalo con:
Máquina de Cupcakes Web3
Es momento de finalmente convertir nuestra apestosa máquina expendedora de cupcakes web2 a una que verdaderamente cumpla las dos reglas. Su versión Web3.
Aquí está la misma máquina implementada en Solidity:
Como está desarrollado en Solidity, el contrato puede ser desplegado en cualquier blockchain compatible con la EVM porque se compila a EVM bytecode.
- Finalmente, corre el comando
- yarn hardhat compile
- Deberá mostrar
- Compiled 1 Solidity file successfully
También deberás ver un directorio: artifacts/contracts/maquinaDeCupcakes.sol
Desplegar el contrato localmente
Aquí es necesario usar dos terminales en dos ventanas y una cartera.
- En la primer terminal ejecutaremos el programa de Hardhat que permite emular un nodo de Ethereum.
- Usaremos la segunda terminal para desplegar nuestro contrato inteligente a ese nodo.
- Con la cartera interactuaremos con el contrato.
- Desde la primera terminal, dirígete a la carpeta de tu proyecto y ejecuta
- yarn hardhat node
- Deberás ver algo así:
- Started HTTP and WebSocket JSON-RPC server at <http://127.0.0.1:8545/>
- También algunas pruebas se habrán ejecutado:
- Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
- Recuerda nunca compartir tus llaves privadas. Esta es una dirección de una cartera y su llave privada asociada.
Ahora pasemos a nuestro MetaMask.
- Inicialmente MetaMask se conectará con Ethereum.
- Cambia de red.
- Si está desactivado, activa Show test networks.
- Selecciona localhost 8545
- No tendrás balance en esa red, por lo que deberás importar una de las cuentas de prueba.
- Después, selecciona agregar una nueva red manualmente.
- Estos son los datos de la red:
Network Name: Arbitrum Sepolia
New RPC URL: https://sepolia-rollup.arbitrum.io/rpcChain
ID: 421614
Currency Symbol: ASPL
- Ahora, desde otra instancia en terminal, instala algunas otras dependencias que son necesarias para hacer el despliegue. Ejecuta:
- yarn add --dev @nomicfoundation/hardhat-ethers ethers hardhat-deploy hardhat-deploy-ethers
- Ahora para desplegar el contrato en la red local:
- yarn hardhat run scripts/deploy.js --network localhost
- Verás un mensaje de confirmación y una dirección del contrato en la red local.
- Si todo ha salido bien, podrías intentar colocar la dirección de contrato en este sitio de la documentación de Arbitrum y probarlo.
Desplegar el contrato a una red de pruebas
Como ya probamos que el contrato funciona, es momento de pasarlo a una red de pruebas.
Primero, dirígete al archivo de hardhat.config.js y especifica la llave privada de la cuenta con la que harás el despliegue del contrato y con el que pagarás el gas.
Debe verse así:
Te diste cuenta de que pudimos desplegar el contrato anterior sin pagar? Esta vez tendremos que pagar un pequeño gas fee. Para eso es necesario obtener el token de la red de Arbitrum Sepolita (conocido coloquialmenre como $ASPL). La forma más fácil es puentear $ETH Sepolia desde la red de pruebas de Ethereum.
- Dirígete a Sepolia Faucet para obtener un poco de ETH en Sepolia. Puedes obtener hasta 0.5 ETH al día.
- Haz un puente de ETH Sepolia a ARB Sepolia.
Ahora es momento de desplegar.
- Ejecuta
- yarn hardhat run scripts/deploy.js --network arbitrumSepolia
- Esto tomará el RPC que pusimos en hardhat.config.js para que despliegue sobre Arbitrum Sepolia.
- Deberá mostrarte un mensaje de confirmación con la dirección de tu contrato.
- Si deseas verlo en un explorador de bloques, copia esa dirección y escríbela después de la diagonal en el siguiente enlace
- https://sepolia.arbiscan.io/address/
- Si quieres interactuar con tu contrato, ingresa al sitio de la documentación de Arbitrum y pega la dirección de este y la de tu cartera.
Despliega a Arbitrum One
Ha llegado el momento de entrar a las ligas mayores. Como el contrato ya fue estudiado y probado y estamos 100% seguros de que no tenemos errores, es momento de desplegarlo directamente sobre Arbitrum One.
Vuelve a actualizar el contenido de hardhat.config.js de tal forma que se vea así:
Esta vez se tendrá que pagar ETH de verdad para poder desplegar el contrato.
- Ejecuta:
- yarn hardhat run scripts/deploy.js --network arbitrumOne
- Esto tomará el RPC que pusimos en hardhat.config.js para que despliegue sobre Arbitrum One.
- Deberá mostrarte un mensaje de confirmación con la dirección de tu contrato.
- Si deseas verlo en un explorador de bloques, copia esa dirección y escríbela después de la diagonal en el siguiente enlace
- https://arbiscan.io/address/
- Si quieres interactuar con tu contrato, ingresa al sitio de la documentación de Arbitrum y pega la dirección de este y la de tu cartera.
¡Y listo! Ya sabes cómo desplegar contratos inteligentes a Arbitrum One.
En otro artículo revisamos cómo porgramar un contrato inteligente en otro lenguaje y desplegarlo por medio de Stylus.
Mientras tanto, te agradecemos por habernos leído.
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.
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.
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.