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?
- 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
- Una billetera de Ethereum que puedas abrir en un navegador. Por ejemplo, MetaMask
- 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="
Recuerda reemplazar
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!