Los distintos servicios ofrecidos por Arbitrum —One y Nova— funcionan sobre un
conjunto de tecnologías subyacentes. Entre ellas, y principalmente, se encuentra
la que denominamos Arbitrum Nitro, evolución de lo que hoy se conoce como
Arbitrum Classic. ¿Pero qué era Arbitrum Classic y que es Nitro?
Arbitrum Nitro no es ni más ni menos que el stack tecnológico sobre el
cual se
construye Nova y One: el lenguaje de programación, los frameworks,
servidores,
bases de datos y demás rudimentos sin los cuales lo demás no podría construirse.
De alguna manera, este stack representa las bambalinas, el backstage de aquellos
servicios que son los que el usuario común utiliza y experimenta sin preocuparse
por saber qué hay tras ellos.
¿Y qué función realiza, entonces, Arbitrum Nitro? Pues bien: es el elemento que
se encarga de hacer el trabajo principal de Arbitrum; es decir, encargarse de la
ejecución a la hora de realizar una transacción, compilando los datos de la
misma, llevándolos al entorno de la L2 mientras se mantiene la seguridad de la
L1 a través de una compatibilidad entre ambas capas, lo que a la larga redunda,
como ya sabrás a esta altura, en mayor rapidez y en tarifas de gas mucho más
bajas.
Arbitrum Classic realizaba las mismas tareas, pero Nitro se presentó como una
actualización de las mismas, aportando, entre otras cosas:
- Mayor compatibilidad con Ethereum
- Compresión de data aumentada
- Total compatibilidad con el gas de Ethereum
- Mayor interoperabilidad con la L1
- Debugging avanzado
Un poco más en detalle
Antes de darte una definición más técnica acerca del modo en el que Nitro funcióna, es importante conocer el significado básico de algunos términos que, además, te permitirán conocer un poco más las entrañas de Arbitrum.
Arbitrum Virtual Machine (AVM) y Ethereum Virtual Machine (EVM)
- Podemos imaginar a una virtual machine como a una computadora, teléfono o servidor, con todas sus capacidades, pero sin una existencia física. Es decir: una computadora que solo existe a manera de código, en la esfera del software, pero no a nivel físico. Dentro de esta computadora, por supuesto, podemos encontrar a un sistema operativo.
- La EVM se encarga de establecer los parámetros y las reglas que regulan el funcionamiento de la red Ethereum; es la que permite llevar a cabo las transacciones, mantener en orden las cuentas y saldos y —primordial— ejecutar correctamente los smart contracts.
- La AVM se ha construido para ser un espejo de la EVM y tener con ella un nivel de compatibilidad total. Por lo tanto, en la AVM se ejecutan smart contracts y se puede interactar con ella del mismo modo del que se interactúa con la EVM. Ese es justamente su objetivo.
ArbOS
- Sí, al ver "OS" puedes pensar en "operative system" y, efectivamente, estás en lo correcto. ArbOS es un software; un sistema operativo que corre en la "computadora" que es AVM. ArbOS permite ejecutar distintas funciones —entre ellas smart contracts— y procesar información. Entre ArbOS y la EVM existe compatibilidad en ambas direcciones; ArbOS, en definitiva, es capaz de emular el funcionamiento de ejecuciones de la EVM.
WebAssembly
- Podemos pensar que el lenguaje básico de una máquina esta construido sobre un código binario. Apenas por encima de este nivel, imaginemos un tipo de lenguaje de programación que permita darle a la máquina o computadora sus instrucciones más básicas. Denominaremos a este lenguaje, lenguaje ensamblador; el mismo se dedica a dar low-level instructions: instrucciones estructurales, básicas, a nuestra maquina. Por encima de este lenguaje utilizaremos otros, más complejos —como Java o C++, por ejemplo— que nos permitirán programas elementos más finos y sofisticados.
- Puedes pensar en el lenguaje ensamblador como en aquellas primeras letras que te enseñan de niño: vocales. Luego, de manera simple, la separación en sílabas. Esto te permite, por ejemplo, escribir tu nombre.
- Más adelante se te enseñarán nuevas herramientas de lenguaje: rimas, tildes, puntuaciones, análisis de oraciones. Estas nuevas herramientas te permitirán construir frases más complejas. Podrías escribir un poema.
- Dandote una visión muy sumplificada, WebAssembly no es un lenguaje en sí, sino que es un compilador de lenguajes. Puedes incorporar lo elaborado en un lenguaje a WebAssembly, que "creará" un formato binario a modo de traducción.
Go. Lenguaje de programación
- No vamos a complicarnos mucho aquí, solo vamos a decirte que existe un lenguaje de programación denominado Go. Ethereum una interfaz de línea de comandos llamada Geth (Go-Ethereum) para mantener el funcionamiento de los nodos (puedes imaginarlos como los puntos de contacto entre todos los usuarios de la red Ethereum). Esta interfaz o matriz de instrucciones esta implementada en Go
Vayamos al hueso
Una vez entendidos los distintos elementos, estás en condiciones de poder tener
una comprensión general, pero bastante técnica, acerca del modo en el cual
Arbitrum Nitro trabaja y cumple su función principal.
Arbitrum Classic y Arbitrum Nitro cumplen una misma tarea: emular a la EVM para
llevar a cabo tareas de ejecución; las mismas se ejecutan, por lo tanto, fuera
de la red principal de Ethereum (L1). Se ejecutan en una L2, y esto ayuda a la
escalabilidad de Ethereum a través de mayor rapidez y menores costos de uso.
Para lograr esto, Arbitrum Classic utilizaba la AVM. En ella corría un sistema
operativo propio —ArbOS— que funcionaba como un emulador de EVM en cuanto a su
capacidad de ejecución.
En Arbitrum Nitro, en vez de utilizar la AVM como estructura general básica
—aquella en donde están las low-level instructions, se utiliza
directamente
WebAssembly. ArbOS, ahora, no se implementa en la AVM, sino que se implementa
directamente en Go. Go, a su vez, es un lenguaje que puede ser compilado dentro
de WebAssembly, y esto puede ser incluido —como si fuese un módulo— dentro del
propio Geth.
Vamos ahora a decirlo de la manera más gráfica posible (aquí nos daremos el
permiso de cierta imprecisiones en pos de una comprensión más sencilla):
- El sistema operativo de Arbitrum —ArbOS— ahora puede ser colocado dentro de un lenguaje llamado Go.
- Go puede compilarse dentro de una caja llamada WebAssembly.
- ArbOS, compilado en Go y dentro de WebAssembly, puede incorporarse como un módulo agregado a Geth, la columna vertebral de Ethereum
- Esto da como resultado una compatibilidad y una indentificación aún más perfecta entre Ehtereum y Arbitrum, pues ya nos hemos salteado el paso de la AVM.
- De esta manera, Arbitrum "anida" dentro de Ethereum.
Nuevamente: el objetivo principal de Arbitrum es la escalabilidad. Una de las
principales misiones es espejar de la manera más precisa y completa a Ethereum.
Cuanto más se logre esto, más sencilla, efectiva y barata será la interacción y
la operabilidad en Ethereum.
Para entender por qué esto es importante, podemos imaginar un mundo en el cual
existan muchos módulos incorporados a Ethereum que permitan cientos de miles de
transacciones por segundo a precios irrisorios. En un escenario así, estaríamos
ante un Ethereum con mìnimos problemas de escalabilidad y esto permitiría
ampliar el uso a nivel mundial de la red Ethereum, permitiendo que nos
acerquemos a aquel ideal: un mundo descentralizado, con auto-custodia de
nuestros bienes y nuestra información, al mismo tiempo auditable, seguro, e
independiente de estructuras verticalistas de poder.
Arbitrum Nitro, por lo tanto, se propone como el stack tecnológico que sustenta
los servicios de Arbitrum, la L2 principal a nivel mundial a la hora de lograr
un mundo como el antes descripto a través del aumento de la escalabilidad en
Ethereum.
Si quieres más información al respecto, no dudes en remitirte a la documentación
oficial de Arbitrum