¡Arbitrum Orbit estamos listos! Obtené más información sobre ser parte acá.

Interactuar con Arbitrum: despliegue de cadenas en Arbitrum Orbit

29 de Julio de 2024

Si estás en este artículo, sin duda habrás, como mínimo, investigado un poco este otro en el que te contamos qué servicio te ofrece Arbitrum Orbit. En este caso, vamos a dejarte un tutorial paso a paso para que puedas desplegar una chain en Orbit. Desde ya, cierto conocimiento en Ethereum, Arbitrum y testnets es necesario.

¿Qué necesitarás?

  1. Docker: una plataforma que permite a los desarrolladores automatizar la implementación de aplicaciones como contenedores portátiles y autosuficientes. Los contenedores incluyen todo lo necesario para ejecutar una aplicación, desde el código y las bibliotecas hasta las configuraciones y las dependencias del sistema
  2. Una billetera de Ethereum que puedas abrir en un navegador. Por ejemplo, MetaMask
  3. Al menos 1 ETH de prueba (para cadenas con tokens de gas personalizados, 0.6 ETH y 0.4 de tokens nativos)

1. Adquirir ETH para la testnet de Arbitrum (y el token nativo para cadenas Orbit con tokens de gas personalizados)

Necesitarás al menos 1 ETH de prueba para cadenas Orbit regulares o 0.6 ETH más 0.4 de tu token nativo deseado para cadenas Orbit con un token de gas personalizado. Estos fondos son necesarios para cubrir el costo de desplegar los cbase contracts de tu cadena Orbit en su base chain, que será Arbitrum Sepolia.

¿Cómo adquirir ese ETH? La forma más sencilla es transferir ETH de prueba de la red Sepolia L1 de Ethereum a la red de prueba L2 Arbitrum Sepolia. Esto puedes hacerlo, por ejemplo, desde Ethereum Sepolia Faucet, y transfiriendo tu ETH de prueba desde la L1 a la L2 usando el puente de Arbitrum.

2. Elige tu tipo de cadena: AnyTrust o Rollup

Simplemente, debes considerar bien cuál es la opción correcta para el tipo de proyecto que tienes en mente. Puedes elegir el Rollup de Arbitrum "de toda la vida", permisionless y trustless y heredero de la seguridad nativa de Ethereum al publicar toda la información de las transacciones en la L1. O, por otro lado, podrías elegir el servicio AnyTrust, que deposita la disponibilidad de datos en un Comité asignado para dicha tarea, aliviando así los costos pero convirtiendo a este servicio en un servicio no trustless.

Por ejemplo, si tu proyecto va a ser un exchange descentralizado, sería recomendable utilizar la primera opción; es decir, la más segura. Pero si quisieras construir una red social o un videojuego, donde no es necesario un nivel absoluto de seguridad, pero sí son importantes los bajos costos, ¿por qué no AnyTrust?

Puedes leer más al respecto haciendo click aquí o aquí.

En este caso, los pasos siguientes se aplicarán para la primera opción.

3. Configura el despliegue de tu cadena

Aquí deberás ir al portal de despliegue de cadenas de Orbit y conectar tu waller. Quizás se te pida que agregues Arbitrum Sepolia a tu wallet o bien que la cambies a dicha red.

Accederás a un portal de despliegue como este:

La recomendación básica es mantener todo tal cual esta: ir con las opciones marcadas por default. Pero si quisieras indagar más en configuraciones personalizadas, puedes hacerlo desde en este artículo

¿De qué se trata cada uno de estos items?

Chain ID: Un ID único que representa a tu cadena. No mucho sobre lo que preocuparte.

Chain name: El nombre de tu cadena. Un nombre identificable y por el cual va a ser conocida tu cadena por el público.

Challenge period (blocks): a cantidad de tiempo que los nodos de tu cadena Orbit tienen para disputar el estado actual de la cadena antes de que se confirme (y finalmente se finalice) en la cadena subyacente L2 (por ejemplo, Arbitrum Sepolia).

Stake token: El token que los validadores de tu cadena deben apostar para participar en tu cadena. Actualmente está codificado para ser $ETH, pero las versiones futuras de las cadenas Orbit permitirán especificar otros tipos de tokens ERC-20

Base stake: La cantidad del token elegido que los validadores de tu cadena deben apostar para participar en tu cadena. Debe ser mayor que 0.

Owner: La dirección administrativa de Ethereum que desplegará, poseerá y actualizará los contratos base de tu cadena. En términos sencillos: la address de tu wallet. Por cierto: deberás especificar la clave privada de esta wallet de esta cartera dentro de un archivo JSON. Pero eso más adelante.

Gas token: La dirección del token ERC-20 en la cadena principal que se utilizará como el token de gas nativo en la cadena Orbit. Es imoprtante que el token que hayas elegido este ya desplegado de forma nativa en la cadena principal y se transfiere a la cadena Orbit durante el despliegue de la cadena.

4. Configuración de los validadores de tu cadena

Aquí te encontrarás con la siguiente pantalla:

En el primer casillero se determina la cantidad de validadores que tendrá tu cadena. Los validadores de tu cadena son los que validan la integridad de las transacciones y publican assertions sobre el estado actual de tu cadena Orbit en su base chain. No hay mucho misterio.

En los siguientes, podrás colocar la address de cada uno de esos validadores. La primera dirección se genera de manera automática y no puede ser cambiada; a su vez, su clave privada se almacenará en un archivo JSON creado en el momento.

Cada una de las direcciones de validador especificadas en este paso se añadirá a una lista de permisos en uno de los base contracts de tu cadena, permitiéndoles apostar y validar las transacciones enviadas a tu cadena Orbit.

5. Configuración del batch poster de tu cadena

A continuación, te encontrarás con esta ventana:

La address de tu batch poster es la que se encarga de publicar los batches o "lotes" de transacciones de tu chain en Orbit al base contract de la base chain.

Tal cual sucedió en el paso anterior con respecto a los validadores, se creará una address de manera automática y su clave privada se conservará en un archivo JSON creado en el momento.

6. Revisión y despliegue de tu cadena en Orbit

Al hacer click en "Deploy", tu cartera debería pedirte que envíes una transacción a la red de prueba de Arbitrum. Tendrás que pagar un poco de gas; puedes usar el ETH de prueba para realizar esta acción.

Al hacer click han sucedido dos cosas:

  • Enviaste una transacción de despliegue a un smart contract de Orbit en la testnet de Arbitrum, la cadena pública L2 donde se liquidarán las transacciones de tu cadena Orbit local.
  • Este smart contract inicializó los base contracts de tu cadena Orbit con los valores que especificaste y configuraste en los pasos previos, y desplegó estos base contracts en la testnet de Arbitrum.

Los base contracts de tu cadena Orbit son los que intercambiarán la información entre los nodos de tu cadena y los de su cadena base: staking de tokens por parte de los validadores,

Los contratos base de tu cadena Orbit son responsables de facilitar el intercambio de información entre los nodos de tu cadena y los nodos de su cadena base. Esto incluye el envío por lotes de transacciones desde tu cadena Orbit a su cadena base, el staking de tokens por parte de los validadores de tu cadena Orbit, la forma en la que se realizarán los challenges, el uso de bridges, la secuencia de los batches, etcétera.

7. Descarga de archivos y lanzamiento de la cadena

Verás dos bloques de código JSON etiquetados como Configuración de Rollup y Configuración de L3. Usa los botones de descarga en la parte superior derecha de cada bloque de código para guardarlos localmente.

  • Rollup: este descarga generará el archivo nodeConfig.json que tendrá guardada toda la configuración del nodo de tu cadena, incluidas las claves privadas del validador y el batch poster, como ya hemos señalado.
  • L3 Config: la descarga generará el archivo orbitSetupScriptConfig.json, el que contiene la configuración de tu cadena.

8. Clona del repositorio del script de configuración y agrega tus archivos de configuración

  • Clona el repositorio de orbit-setup-script: git clone https://github.com/OffchainLabs/orbit-setup-script.git
  • Mueve el archivo nodeConfig.json que descargaste al directorio config en la raíz de tu repositorio clonado.
  • Mueve el archivo orbitSetupScriptConfig.json que descargaste al directorio config en la raíz de tu repositorio clonado.
  • Instala las dependencias ejecutando yarn install desde la raíz del repositorio orbit-setup-script.

9. Ejecuta el nodo de tu cadena y el explorador de bloques

Ejecuta Docker y luego ejecuta docker-compose up -d desde la raíz del repositorio orbit-setup-script.

Se iniciará un nodo Nitro y una instancia del explorador BlockScout. Visita http://localhost/ para acceder a tu instancia del explorador BlockScout, lo que te permitirá ver las transacciones y los bloques de tu cadena: algo útil a la hora de revisar si existe algún bug.

10. Terminar de configurar tu cadena

Te encontrarás un script de Hardhat ya configurado para que realizar las siguientes tareas:

  • Financiar las cuentas del batch poster y del validador en tu cadena subyacente L2.
  • Depositar ETH en tu cuenta en la cadena usando el puente recién desplegado.
  • Desplegar los smart contracts de tu Token Bridge en ambas cadenas, L2 y Orbit.
  • Configurar parámetros en la cadena.

Para ejecutar este script, emite el siguiente comando desde la raíz del repositorio orbit-setup-script, reemplazando OxYourPrivateKey con la clave privada de la cuenta del Propietario que usaste para desplegar los contratos de tu cadena, y reemplazando http://localhost:8449 con la URL RPC del nodo de tu cadena.

En Arbitrum Sepolia:

PRIVATE_KEY="0xYourPrivateKey" L2_RPC_URL="https://sepolia-rollup.arbitrum.io/rpc" L3_RPC_URL="http://localhost:8449" yarn run setup

Algunas cosas más…

A. Tomando el pulso (registros)

¿Quieres ver qué está pasando dentro de tu cadena? Ve al directorio raíz del repositorio de scripts de configuración de Orbit y ejecuta este comando:

docker-compose logs -f nitro

Esto mostrará los registros de tu cadena en tiempo real, como un monitor de sistema. Piensa en ello como echar un vistazo al capó del coche para ver cómo funcionan las cosas.

B. Llenando el tanque (depositando fondos)

¿Te falta combustible (ETH o tokens nativos) para tu cuenta de la cadena Orbit? ¡Sin problema! Simplemente ejecuta este comando en el directorio base de tu script de configuración:

PRIVATE_KEY="0xYourPrivateKey" L2_RPC_URL="https://sepolia-rollup.arbitrum.io/rpc"
L3_RPC_URL="http://localhost:8449"
AMMOUNT="" yarn run deposit


Recuerda reemplazar con la cantidad que deseas enviar y 0xYourPrivateKey con tu clave privada real (¡mantén esa a salvo!). Este comando, ejecutado con "yarn run deposit", recargará tu cuenta en la red de prueba Arbitrum Sepolia.

C. Baches en el camino (solución de problemas)

A veces, puedes ver un mensaje de error que diga "error getting latest batch count" en tus registros. ¡No te asustes! Esto suele ser inofensivo y se puede ignorar. A menudo aparece cuando la implementación del base contract de tu cadena Orbit en la red principal (L1) aún no ha terminado de ser procesada. ¿La buena noticia? Este proceso puede tardar de 15 a 20 minutos, pero tu cadena aún puede funcionar perfectamente mientras esto sucede. Piensa en ello como enviar un paquete: tarda un poco en llegar, ¡pero sigue en camino!