Descargo de Responsabilidad
Este artículo ha sido traducido de su idioma original para tu comodidad. A pesar de que nos esforzamos por ser precisos, puede haber pequeños errores o diferencias en la interpretación. Para obtener la representación más precisa y veraz, consulta la publicación original, disponible aquí
Agradecemos tu comprensión y te animamos a consultar la fuente original para obtener información detallada.
Este artículo es la Parte III de una serie de varias partes de Fuel Labs que cubre temas relacionados con la escalabilidad y la ejecución en Ethereum. El objetivo de esta serie es ofrecer una visión completa de los retos asociados a la mejora del rendimiento y la capacidad de Ethereum y las soluciones actuales que trabajan para hacerlo más eficiente y escalable para su adopción generalizada.
Fuel comenzó como un rollup optimista en Ethereum con el lanzamiento de Fuel V1 a finales de diciembre de 2020. Fuel V1 tenía como objetivo proporcionar a Ethereum una cadena lateral de confianza minimizada que heredaba la seguridad de Ethereum pero tenía un modelo de ejecución radicalmente rediseñado que utilizaba el modelo de salida de transacciones no consumidas (Unspent Transaction Output, UTXO). Fuel V1 fue el único rollup que logró heredar la seguridad de Ethereum (ahora definida como estado «stage-2» por L2Beat) en la práctica sin multi-sig de terceros y con una prueba de fraude optimista completa.
La mayoría de los proyectos actuales de blockchain se basan en máquinas virtuales de propósito general como la EVM y la WASM. Aunque tales arquitecturas nos han llevado lejos, existe una brecha para abordar las necesidades específicas de escalabilidad más allá de las arquitecturas monolíticas anteriores a 2018. Las máquinas virtuales (VM) de propósito general, aunque versátiles, a menudo carecen de las optimizaciones necesarias para las demandas únicas de la ejecución de blockchain (Véase la Parte II).
La evolución de Fuel desde la V1 es expansiva y estratégica. Hemos dedicado los últimos tres años y medio a redefinir y reconstruir nuestra arquitectura desde cero. Nuestra arquitectura aborda en profundidad los problemas comunes a los que se enfrentan las blockchains modernas, como la necesidad de una máquina programática flexible, un modelo de transacciones orientado a los activos, multihilo, paralelismo, sostenibilidad del estado e interoperabilidad entre cadenas.
Hoy nos complace profundizar en el corazón de Fuel: la FuelVM.
La Máquina Virtual de Fuel (FuelVM) incorpora 17 años de diseño de blockchain para ofrecer a la comunidad Ethereum una arquitectura de máquina fiable construida para la longevidad. FuelVM proporciona una arquitectura similar a las arquitecturas de máquina de bajo nivel con conjunto reducido de instrucciones como RISC-V ISA, ARM ISA y arquitecturas virtualizadas como Web Assembly y ePBF. Nuestra VM también incorpora conocimientos de anteriores arquitecturas de máquinas blockchain como los scripts de Bitcoin, la máquina virtual de Ethereum y la máquina virtual de Move.
La FuelVM está diseñada y adaptada para los desafíos únicos de los rollups, con el objetivo de resolver tanto la sostenibilidad del estado como el rendimiento de la ejecución.
FuelVM se creó teniendo en cuenta que la entrada/salida de disco es la parte más lenta de la computación y se utiliza normalmente para el estado activo de la blockchain durante la verificación del full node. FuelVM permite a los desarrolladores alejarse de los diseños de aplicaciones con estado, a menudo habilitados por smart contracts, al proporcionar más funciones de instalaciones con estado minimizado, como activos nativos, secuencias de comandos efímeras y condiciones de gasto efímeras, que alivian la presión de la verificación del full node (ya que no necesitan almacenarse en el estado), intercambiando búsquedas de estado y almacenamiento (IO) por ancho de banda, CPU y memoria. Al proporcionar métodos alternativos para que los desarrolladores creen aplicaciones más minimizadas en cuanto al estado, podemos lograr los objetivos de una mejor sostenibilidad del full node, manteniendo la arquitectura accesible para todos y descentralizada, siguiendo los pasos de los valores fundamentales de Ethereum.
Aquí hay una lista más completa de consideraciones de diseño para FuelVM:
Rendimiento y eficiencia
Rendimiento de la ejecución en tiempo real
Sostenibilidad del estado
Sobrecarga de E/S de disco
Optimización del ancho de banda
Capacidad de procesamiento paralelo
Seguridad y verificación
Virtualización y sandboxing
Complejidad del juego de verificación interactivo
Probabilidad de fraude
Seguridad de ejecución adversaria (mitigación de DOS)
Operaciones criptográficas
Acceso a funciones criptográficas comunes de blockchain (hashing, verificación de firmas)
Compatibilidad con Ethereum (hashing Keccak256, verificación de firmas Secp256k1)
Condiciones de gasto al estilo Bitcoin (P2SH)
Funcionalidad de los smart contracts
Smart contracts al estilo Ethereum
Gestión nativa de activos
Acceso a facilidades de llamada externas
Capacidades de codificación efímera (scripts y predicados)
Aritmética y manejo de datos
Aritmética de números grandes
Seguridad aritmética en tiempo de ejecución (matemáticas seguras, registros de desbordamiento)
Accesibilidad de lectura de memoria en tiempo de ejecución a datos de transacciones
Gestión de gas y recursos
Potencial y sobrecarga de la medición de gas
Consideraciones sobre el consumo de energía
Características avanzadas
Complejidad del circuito ZK
Complejidad del análisis sintáctico de instrucciones
El desarrollo de FuelVM representa una evolución significativa desde el lanzamiento inicial de Fuel V1 en 2020. Fuel V1 fue el primer rollup optimista en Ethereum y una de las únicas máquinas de estado susceptibles de fraude. Aunque las transacciones por segundo (TPS) suelen ser una métrica pobre para analizar una arquitectura, es útil entender el potencial de FuelVM de forma más amplia para los proyectos que buscan incorporar nuestra VM. A fecha de mayo de 2024, FuelVM puede alcanzar puntos de referencia de transferencia de activos de 12.000 TPS por núcleo en una CPU de gama alta, y probablemente pueda lograr resultados mucho más altos con más optimizaciones.
Exploremos cómo FuelVM y el exclusivo modelo de transacciones UTXO de Fuel consiguen un mayor rendimiento y flexibilidad gracias a innovaciones fundamentales, como la ejecución paralela de transacciones, la minimización de estados y funciones user-friendly.
El modelo de ejecución paralela de transacciones de Fuel es la piedra angular de su eficiencia y escalabilidad. La paralelización mejora drásticamente el rendimiento y reduce la latencia en comparación con los métodos tradicionales de procesamiento secuencial. Permite dividir las tareas en subtareas más pequeñas que pueden ejecutarse simultáneamente en varias unidades de procesamiento.
La paralelización se construye sobre una base de Listas de Acceso y el modelo UTXO (Unspent Transaction Output), que trabaja en tándem para permitir el procesamiento concurrente de transacciones no conflictivas.
Las listas de acceso categorizan las transacciones en Solo-Lectura, Escritura-Eliminación y Escritura-Creación. Cada transacción especifica todos los recursos con los que interactuará, incluidos los UTXO y los identificadores de contrato. Analizando estas listas antes de la ejecución, FuelVM puede identificar las transacciones que no comparten recursos superpuestos y ejecutarlas en paralelo, maximizando la eficiencia.
Fuente: Exploring the FuelVM
El modelo UTXO desempeña un papel crucial a la hora de facilitar esta ejecución paralela. Dado que los UTXOs son únicos y sólo pueden gastarse una vez, Fuel puede paralelizar eficazmente transacciones que no interactúan con los mismos UTXOs. Nuestro enfoque garantiza que cada transacción opere sobre salidas distintas y no consumidas, minimizando los conflictos y permitiendo el procesamiento simultáneo.
Para ilustrar este concepto, consideremos dos escenarios sencillos de transferencia de tokens: Alice envía 1 ETH a Bob y Charlie envía 100 USDC a David. En ambos casos, las transacciones implican activos distintos. Las transacciones se procesan simultáneamente sin conflictos mediante los siguientes pasos:
Alice inicia su transacción, incluyendo una lista de acceso de sólo lectura para su saldo de ETH y una lista de acceso de Escritura-Eliminación para el UTXO que representa 1 ETH.
Al mismo tiempo, Charlie crea su transacción con una lista de acceso de Solo-Lectura para su saldo de USDC y una lista de acceso de Escritura-Eliminación para el UTXO que representa los 100 USDC.
El motor de ejecución de Fuel verifica ambas transacciones, confirmando su validez y la ausencia de solapamiento en sus listas de acceso de Escritura-Eliminación.
Sin conflictos detectados, la FuelVM procesa ambas transacciones en paralelo, enviando el ETH de Alice a Bob y el USDC de Charlie a David simultáneamente.
Ambas transacciones se confirman y completan rápidamente.
Esta paralelización aumenta la capacidad de procesamiento de transacciones y resuelve los problemas de escalabilidad que históricamente han afectado a los sistemas de blockchain. Al permitir el procesamiento simultáneo de transacciones no conflictivas, Fuel ofrece una solución robusta para gestionar grandes volúmenes de transacciones en entornos rollup, garantizando una escalabilidad eficaz a medida que crece la demanda de espacio blockchain.
El diseño orientado a activos de FuelVM complementa su ejecución paralela. Los opcodes incorporados permiten a las aplicaciones crear y gestionar múltiples activos nativos directamente dentro de la máquina virtual. Esta elección de diseño mejora significativamente el rendimiento de la ejecución al permitir la manipulación de activos nativos a un nivel inferior. La manipulación de activos a un nivel inferior es posible gracias al uso de primitivas como el sistema UTXO en lugar del almacenamiento de estados más complejo que suelen requerir los smart contracts tradicionales.
La manipulación de activos nativos a nivel de transacción es intrínsecamente más barata y eficiente, ya que evita la necesidad de grandes cambios de estado y bibliotecas de terceros. Nuestro enfoque también ofrece una mejor experiencia de usuario. Manejar activos nativos, como el envío de ETH, es más sencillo que la alternativa de tratar con tokens ERC-20, que a menudo requieren aprobaciones de configuración y pasos adicionales. Nuestro enfoque da lugar a transacciones más rápidas y rentables y a un proceso simplificado tanto para los desarrolladores como para los usuarios.
Otro aspecto crucial del diseño de FuelVM es la implementación de predicados. Los predicados son una innovación fundamental en FuelVM, ya que actúan como contratos ligeros y sin estado que mejoran significativamente el procesamiento de transacciones y el rendimiento de la ejecución.
Los predicados permiten la creación de transacciones condicionales, lo que permite a los desarrolladores establecer condiciones complejas para la ejecución de transacciones en FuelVM.
Nuestro diseño y funcionalidad ofrecen varias ventajas clave, que son las siguientes:
Ligero y sin estado: A diferencia de los smart contracts tradicionales que mantienen una gran cantidad de información de estado, los predicados son sin estado por diseño. Su naturaleza sin estado significa que no almacenan datos entre ejecuciones, lo que permite una reducción de la sobrecarga y simplifica el proceso de ejecución. La naturaleza sin estado de los predicados asegura un procesamiento rápido y eficiente sin la necesidad de gestionar estados complejos.
Abstracción nativa de cuentas: Una de las ventajas más significativas de los predicados es su papel a la hora de facilitar la abstracción nativa de cuentas. Los predicados permiten una forma flexible y eficiente de gestionar e interactuar con los activos. Por ejemplo, los predicados pueden ejecutar transacciones que implican múltiples pasos, como la ejecución de operaciones complejas o la gestión de activos, sin necesidad de contratos intermediarios. Esta capacidad simplifica las interacciones y reduce la necesidad de estructuras contractuales complejas, facilitando a los usuarios la realización de operaciones sofisticadas con menos pasos.
Procesamiento de transacciones racionalizado: Los predicados agilizan el proceso de transacción gestionando tareas específicas de forma directa y eficiente. Los predicados pueden validar y ejecutar transacciones basándose en reglas o condiciones predefinidas, evitando la necesidad de procesos redundantes o pasos de validación adicionales. Esta racionalización contribuye a acelerar los tiempos de transacción y a reducir los costes computacionales.
Rendimiento de ejecución mejorado: La combinación de sin estado y tareas de gestión de predicados mejora directamente el rendimiento de la ejecución. Minimizar los datos procesados y almacenados reduce la carga del sistema y acelera la ejecución de las transacciones. Esta minimización resulta especialmente valiosa en entornos de alto rendimiento, donde el rendimiento y la eficiencia tienen una importancia crucial.
El crecimiento del estado en los sistemas blockchain implica ampliar los datos que los nodos deben almacenar y gestionar. A medida que las redes de blockchain evolucionan, la acumulación de datos de estado puede causar problemas como un mayor almacenamiento, un procesamiento de transacciones más lento y mayores costes operativos.
Las tasas de crecimiento del estado han variado desde la creación de Ethereum en 2015. Actualmente, el estado crece alrededor de 2,62GiB al mes, por debajo de un pico de 5,99 GiB al mes. Esta tasa proyecta el tamaño total del estado entre 396 GiB y 606 GiB en cinco años. Los recientes descensos en el crecimiento se deben principalmente a la menor actividad de NFT y ERC-20. La actual tasa de crecimiento del estado es la más baja desde 2022.
Fuente: Paradigm
Fuel aborda los retos de crecimiento del estado con técnicas innovadoras de minimización del estado que gestionan y reducen eficazmente la huella de datos del estado. Analicemos algunas de ellas.
Fuel introduce el concepto de rehidratación del estado nativo, un método para gestionar eficazmente los cambios de estado. En lugar de mantener y actualizar continuamente un estado global, una aplicación de Fuel compartimentaría los cambios de estado en segmentos más pequeños y manejables que se almacenan como tokens no fungibles (NFT) dentro de su arquitectura de activos nativos. Nuestro enfoque permite el acceso bajo demanda a los datos de estado cuando sea necesario, reduciendo la carga global de almacenamiento y mejorando la eficiencia del procesamiento de transacciones. Al rehidratar únicamente los datos de estado necesarios para una transacción específica, FuelVM minimiza la carga de datos en los nodos y mejora la velocidad de acceso al estado.
Scripts: En FuelVM, los scripts son la lógica temporal incrustada dentro de las transacciones. Estos scripts ejecutan funciones u operaciones específicas sin alterar permanentemente el estado global. Dado que los scripts son efímeros y se limitan al contexto de la transacción, no contribuyen al crecimiento del estado a largo plazo, ya que pueden eliminarse tras su ejecución.
**Predicados: **Los predicados toman entradas y devuelven un valor booleano para determinar el éxito de la transacción. A diferencia de los smarts contracts tradicionales, los predicados no leen ni escriben en el almacenamiento global. La ausencia de operaciones de almacenamiento en los predicados garantiza que no contribuyan al crecimiento del estado. Un predicado puede validar transacciones basándose en condiciones específicas sin alterar el estado global, agilizando así el procesamiento de transacciones.
Modelo UTXO: En el modelo UTXO, cada transacción consume UTXOs anteriores y produce otros nuevos. Un enfoque localizado de la gestión del estado significa que los cambios de estado se limitan a los UTXO específicos implicados en una transacción, en lugar de afectar al estado global. Los full nodes de Fuel sólo necesitarán almacenar hashes de 32 bytes de cada UTXO para garantizar que las futuras transiciones de estado sean válidas, lo que significa que al mover más aplicaciones a activos nativos y predicados, podemos reducir el volumen de estado de blockchain en un factor significativo. Como resultado, el modelo UTXO reduce la complejidad de la gestión de estados, favoreciendo la escalabilidad y la eficiencia.
El enfoque de minimización de estado de Fuel ofrece varias ventajas clave, incluida la gestión eficiente del estado mediante la compartimentación de los cambios de estado, lo que conduce a un procesamiento más rápido de las transacciones. La minimización de estados también mejora la escalabilidad, lo que permite a Fuel gestionar un mayor volumen de transacciones sin degradar el rendimiento. Además, al reducir la dependencia de un estado global, Fuel mejora la descentralización, permitiendo que más nodos participen en la red sin verse abrumados por una gran cantidad de datos de estado.
Fuente: Delphi Digital
Los siguientes ejemplos ponen de manifiesto la potencia y versatilidad de FuelVM y demuestran las posibilidades que ofrece la implantación de nuestra pila tecnológica. Para obtener una visión más amplia del ecosistema en evolución, consulte la página del ecosistema de Fuel.
Fuel allana el camino para aplicaciones transformadoras, principalmente con su uso del modelo UTXO para anclar los libros de órdenes de los exchanges, como demuestran proyectos como Spark. El modelo UTXO ofrece una experiencia de trading más eficiente, con una latencia reducida y una gestión de estados simplificada en comparación con los enfoques tradicionales. Al resolver problemas como la lentitud del procesamiento de transacciones y la saturación del estado, Spark hace que los exchanges descentralizados sean más escalables y prácticos.
Bako Safe ofrece una wallet multi-sig sin estado construida sobre el constructo de predicados de FuelVM. Bako Safe refuerza la seguridad y ofrece gestión de activos sin custodia con funciones como bóvedas colectivas, permitiendo la visualización y firma segura de contratos.
FuelVM destaca en las interacciones entre cadenas gracias a su abstracción nativa de cuentas y su compatibilidad con diversos esquemas de firma. Fuelet, una wallet multicadena creada específicamente para el ecosistema Fuel, ejemplifica este potencial multicadena ofreciendo una interfaz unificada para gestionar activos en múltiples redes. Fuelet está diseñado para mejorar la interoperabilidad y permite una integración perfecta con wallets de varias blockchains. Los usuarios pueden conectarse e interactuar con FuelVM utilizando sus wallets preferidas, haciendo bridges entre diferentes ecosistemas de blockchains sin sacrificar la seguridad ni la funcionalidad.
Por ejemplo, en un desarrollo reciente, Fuel agregó soporte para wallets Solana al permitir que las dApps construidas en Fuel se conecten con cualquier wallet SVM, además de su soporte de wallet EVM existente. Esta integración SVM permite a los usuarios utilizar de forma segura tanto wallets de Solana como Phantom, Solflare y Backpack para crear cuentas Fuel, firmar transacciones y hacer swaps de activos de forma nativa dentro de estas wallets. Varias dApps de Fuel también adoptaron este enfoque, incluido MIRA Protocol, que ahora admite Wallets Ethereum y Solana en su DEX. El DEX de MIRA protocol está disponible en la testnet de Fuel Sepolia.
Las capacidades de FuelVM van más allá del trading y la integración de wallets para incorporar otras aplicaciones cruciales de blockchain. Thunder es un mercado NFT que permite operaciones masivas en una sola transacción con comisiones mínimas. A través de la paralelización, Thunder proporciona una experiencia de trading más fluida con tiempos de transacción rápidos para los operadores de NFT experimentados.
Mientras tanto, Kassiopeia demuestra el potencial de FuelVM en sistemas descentralizados de identidad y reputación, utilizando las características únicas de la plataforma para crear una capa de identidad robusta y preservadora de la privacidad para aplicaciones Web3. Kassiopeia ilustra además cómo las capacidades de FuelVM pueden aplicarse para resolver retos complejos en varios dominios de la tecnología blockchain.
Fuel aborda retos clave en la tecnología rollup a través de su modelo UTXO, predicados sin estado y técnicas de minimización de estado. Estas innovaciones pretenden mejorar la escalabilidad y la eficiencia de las aplicaciones descentralizadas.
Esto nos lleva al final de nuestra serie de tres partes sobre Ethereum, que cubre temas relacionados con la escalabilidad y la ejecución en Ethereum.
Y permanece atento a nuestra próxima serie. Mientras tanto, consulta nuestra documentación en docs.fuel.network para empezar a desarrollar con Fuel. Además, comprueba de primera mano las aplicaciones que funcionan con FuelVM en nuestra Testnet.
Lecturas complementarias