Cálculo fuera de la cadena es todo lo que necesitas

Intermedio1/4/2024, 5:43:45 PM
Este artículo introduce los conceptos de co-procesadores y Rollup, así como la separación modular de la computación y verificación futuras en blockchain.

Introducción

Las blockchains son registros distribuidos a nivel mundial que llegan a un consenso sobre un estado global. Algunas blockchains vienen equipadas con un entorno de ejecución Turing-completo que permite la programabilidad sobre este estado global. Los programas que apuntan a los entornos de ejecución de las blockchains se llaman contratos inteligentes, y las blockchains subyacentes se llaman plataformas de contratos inteligentes. Ethereum, Solana y Avalanche son algunas de las plataformas de contratos inteligentes más conocidas. Podemos pensar en las plataformas de contratos inteligentes como computadoras distribuidas, con el entorno de ejecución (o máquina virtual) actuando como la CPU y el estado desempeñando el papel de almacenamiento.

Esta estructuración de las cadenas de bloques como computadoras será importante para motivar por qué es inevitable el cómputo de coprocesadores/fuera de la cadena, especialmente en el contexto de las cadenas de bloques. En la computación tradicional, los coprocesadores se originaron en la microarquitectura para mejorar el rendimiento. Del mismo modo, los coprocesadores en Ethereum prometen acceso a datos históricos y cómputo externo de alto rendimiento para ampliar las características y el espacio de diseño del protocolo de capa base. Echa un vistazo a este artículo introductorio sobre coprocesadores para más información.

Este artículo explora coprocesadores desde los primeros principios, con el objetivo de aclarar su importancia y meta-propiedades. Luego los comparamos con rollups, demostrando cómo estos dos conceptos, aunque diferentes, están estrechamente relacionados. También proporcionamos ejemplos de cuándo los rollups y los coprocesadores pueden ser utilizados en conjunto. Por ejemplo, incluso un rollup todo poderoso o L1 podría necesitar un coprocesador para tareas de gran envergadura.

Concluimos este artículo observando que las blockchains se están moviendo hacia un futuro en el que la computación está centralizada, pero la verificación sigue siendo descentralizada. Los Rollups, coprocesadores y cualquier otra forma de cálculo externo verificable son simplemente diferentes instanciaciones de este futuro.

Cómo llegamos hasta aquí:

En "Los límites de la escalabilidad de la cadena de bloques", Vitalik mencionó que para la descentralización de la cadena de bloques, es importante que los usuarios regulares puedan ejecutar un nodo.

Como se mencionó anteriormente, Ethereum se puede conceptualizar como una computadora global descentralizada en muchos aspectos. Es una red de nodos que ejecutan software que proporciona recursos computacionales para ejecutar contratos inteligentes. La cadena de bloques de Ethereum almacena información de estado y código, similar al almacenamiento y la memoria de una computadora. Y la máquina virtual de Ethereum (EVM) se ejecuta en cada nodo, procesando transacciones y ejecutando código como una CPU. Sin embargo, Ethereum no tiene permisos y está descentralizado, utilizando el consenso entre nodos que no son de confianza. Si algunos nodos se desconectan, la red sigue funcionando. Para garantizar la corrección de las operaciones de EVM, los validadores de las redes Proof-of-Stake (PoS) como Ethereum deben realizar todas las transiciones de estado para verificarlas. Esto limita la velocidad de una red PoS a sus nodos más lentos, lo que limita la cantidad de computación que los desarrolladores de aplicaciones tienen a su disposición.

A diferencia de una computadora regular, Ethereum limita la computación y el almacenamiento para prevenir el abuso de la red. Se cobran tarifas por cada operación, lo que hace que los bucles infinitos sean financieramente poco prácticos. Este enfoque mantiene las barreras de entrada bajas, lo que permite que hardware cotidiano como una Raspberry Pi ejecute nodos de red. Las limitaciones permiten un sistema inclusivo donde cualquiera puede ayudar a operar la red descentralizada de Ethereum.

Debido a estas restricciones computacionales de los nodos de Ethereum, aplicaciones complejas como modelos de aprendizaje automático, juegos o aplicaciones de computación científica no pueden ejecutarse de manera factible directamente en Ethereum hoy.

Es un compromiso para hacer que Ethereum sea ampliamente accesible, seguro y sostenible como base para aplicaciones básicas. Pero inevitablemente, existen algunas limitaciones en comparación con una computadora sin restricciones computacionales. Tiene limitaciones incluso en comparación con un procesador antiguo como un Pentium 5:

No hay cálculos de punto flotante complejos - La EVM solo admite operaciones matemáticas y lógicas básicas. Cálculos numéricos avanzados como redes neuronales no son factibles. (Un dato interesante es la incapacidad para manejar el punto flotante, lo que también ha dificultado el intercambio de activos de rebase como Ampleforth, etc., en la historia reciente y a veces incluso es incompatible con algunos DEXs).

Cómputo limitado por bloque - Las tarifas de gas miden los cálculos, por lo que el software complejo como los juegos sería prohibitivamente caro. El límite de gas por bloque es de 30M de gas.

Memoria restringida: los contratos inteligentes tienen límites de almacenamiento permanente pequeños, lo que hace que los programas grandes sean difíciles.

No hay almacenamiento de archivos persistente - No hay forma de almacenar archivos como gráficos, audio o video en la cadena de bloques.

Velocidad lenta - Las velocidades de transacción en Ethereum actualmente son de ~15 TPS, muchas órdenes de magnitud más lentas que una CPU.

En última instancia, el almacenamiento y la computación limitados restringen los grados de libertad disponibles para las aplicaciones (estos límites difieren de una cadena de bloques a otra, pero siempre existen). La gente ha comparado las cadenas de bloques con los entornos de computación restringida de los años 1970-1980, pero creemos que hay algunas diferencias importantes entre estos dos:

El crecimiento de la computación en los años 1970-1980 fue rápido (con el recuento de transistores en microprocesadores pasando de ~1,000 a ~1,000,000 durante ese período). Pero este crecimiento no significaba que la gente comprara o actualizara sus computadoras con frecuencia. Dado que las plataformas de contratos inteligentes están limitadas por sus nodos más lentos, una aceleración en la frontera de las computadoras no necesariamente llevará a que las cadenas de bloques vean un aumento proporcional en la velocidad computacional. Una aceleración solo puede ocurrir si los requisitos básicos para los nodos en la cadena de bloques son actualizados.

También hay un claro equilibrio entre actualizar constantemente los requisitos mínimos de hardware para los nodos y la descentralización. Los validadores individuales pueden no querer actualizar el hardware cada dos años (y ciertamente no quieren monitorear el rendimiento a diario), lo que lleva a que solo los profesionales deseen administrar la infraestructura blockchain.

Todo esto es para decir que, a lo largo de los años, las CPU mejoraron y obtuvimos más núcleos de CPU en cada dispositivo para permitirnos realizar tareas cada vez más complicadas. Si pensamos que las computadoras blockchain no se acelerarán tan rápido como la computación tradicional (debido a los requisitos de los nodos de referencia), entonces tiene sentido tratar de encontrar fuentes alternativas de cómputo. Una analogía interesante es que las CPU en la computación tradicional no se volvieron buenas en las tareas de procesamiento gráfico, lo que llevó al aumento de las GPU en casi todas las computadoras. Del mismo modo, dado que las cadenas de bloques se están centrando en ser almacenes de estado seguros con baterías de cómputo simples habilitadas, existe una clara oportunidad para que la computación fuera de la cadena amplíe el espacio de diseño de aplicaciones. Hoy en día, las cadenas de bloques solo tienen sentido para aplicaciones de baja computación que desean propiedades como acceso abierto, autosoberanía, resistencia a la censura y componibilidad. Para poner una mayor variedad de aplicaciones en la cadena, necesitamos levantar las restricciones que imponemos a los desarrolladores de aplicaciones. Decimos esto con el entendimiento de que estas limitaciones también han sido una bendición para la experimentación. Por ejemplo, los CLOB no podían ejecutarse de manera efectiva en Ethereum debido a las limitaciones de cómputo, por lo que se adoptaron los AMM, que desde entonces han registrado un billón de dólares en volumen.

Hay dos enfoques comunes para hacer que más capacidad de cálculo esté disponible para las aplicaciones blockchain:

Aumentar relativamente a menudo los requisitos básicos del nodo. Esto es más o menos el camino que toman las blockchains de alto rendimiento integradas como Solana y Sui. Un nivel alto para los nodos les permite construir una cadena de bloques muy rápida y también elimina algunas restricciones de diseño del diseño de la aplicación. Phoenix, un DEX de Libro de Órdenes Limitadas en Solana, no podría construirse en Ethereum (o en cualquier L2) hoy en día. El lado negativo de aumentar los requisitos básicos es que si crecen constantemente, entonces ejecutar nodos podría ser viable solo para proveedores de infraestructura profesionales. Los requisitos históricos de RAM hacen un buen trabajo al mostrar cómo los requisitos de hardware han crecido consistentemente en Solana:

Archivo web (Nota: utilizamos requisitos de RAM medianos de 2020)

Mover la computación fuera de la cadena a terceros. Esta ha sido la estrategia adoptada por el ecosistema de Ethereum. Estos terceros podrían ser ellos mismos blockchains (en el caso de rollups), dispositivos de computación verificables fuera de la cadena (es decir, coprocesadores), o terceros de confianza (como es el caso de la computación fuera de la cadena específica de la aplicación, como el libro de órdenes de dydx).

Hacia la Unificación de la Computación Fuera de la Cadena

Recientemente, ha habido un aumento en las conversaciones sobre coprocesadores, que proporcionan cálculos verificables fuera de la cadena. Los coprocesadores pueden implementarse de varias formas, incluyendo pero no limitado a Pruebas de Conocimiento Cero o Entornos de Ejecución Confiables (TEEs). Algunos ejemplos son:

Coprocesadores ZK: Axiom, Bonsai de Risc Zero.

TEEs: Ostra de Marlin,

Al mismo tiempo, cuando se trata de descargar cálculos, la hoja de ruta centrada en rollups de Ethereum descarga cálculos a varios rollups que se liquidan en Ethereum. En los últimos años, una corriente constante de desarrolladores y usuarios se ha estado migrando a rollups debido a una combinación de transacciones más baratas y rápidas e incentivos proporcionados por los rollups. En un mundo ideal, los rollups permiten a Ethereum aumentar su capacidad computacional general mediante la ejecución fuera de la cadena sin añadir suposiciones de confianza. Más cálculos no se refiere solo a ejecutar más transacciones, sino también a realizar más cálculos expresivos por transacción. Los nuevos tipos de transacciones amplían el espacio de diseño disponible para las aplicaciones, y una mayor capacidad reduce el costo de realizar estas transacciones expresivas, asegurando un acceso asequible a una clase superior de aplicaciones.

Antes de seguir adelante, definamos brevemente tanto los rollups como los coprocesadores para evitar confusiones:

Rollups: Rollups mantienen un estado persistente y particionado diferente de sus cadenas base/anfitrionas, pero aún heredan las propiedades de seguridad de su base al publicar datos/pruebas en ella. Al mover el estado fuera de la cadena anfitriona, los rollups pueden utilizar cálculos adicionales para realizar transiciones de estado antes de publicar pruebas de integridad de estas transiciones de estado en la cadena anfitriona. Los rollups son más útiles para los usuarios que no quieren pagar las altas tarifas de Ethereum pero desean acceder a las propiedades de seguridad de Ethereum.

Antes de sumergirnos en los coprocesadores, démosle más antecedentes sobre lo limitado que es el desarrollo de contratos inteligentes en Ethereum en la actualidad. Ethereum tiene almacenamiento de estado persistente en su estado global: saldos de cuentas, datos de contratos, etc. Estos datos persisten en la cadena de bloques indefinidamente. Sin embargo, existen limitaciones:

El tamaño máximo de los datos del contrato está limitado (por ejemplo, 24KB por contrato actualmente y se estableció en EIP 170). Almacenar archivos grandes excedería esto. (*No resuelto por coprocesadores tampoco)

La lectura/escritura de almacenamiento de contratos es más lenta que un sistema de archivos o una base de datos. Acceder a 1KB de datos puede costar millones de gas.

Mientras el estado global persiste, los nodos individuales solo retienen el estado reciente localmente en modo de "poda". La historia completa del estado requiere un nodo de archivo.

No hay primitivas del sistema de archivos nativo para manejar archivos como imágenes, audio y documentos. Los contratos inteligentes solo pueden leer/escribir tipos de datos básicos en el almacenamiento.

Las soluciones en torno a esto son:

Los archivos grandes pueden dividirse en partes más pequeñas para ajustarse a los límites de almacenamiento del contrato.

Las referencias de archivos se pueden almacenar en cadena, con los archivos almacenados fuera de la cadena en sistemas como IPFS.

Coprocesadores: Los coprocesadores no mantienen ningún estado por sí mismos; se comportan como funciones lambda en AWS, donde las aplicaciones pueden enviarles una tarea de cálculo, y ellos devuelven el resultado con prueba de cálculo. Los coprocesadores aumentan fundamentalmente la cantidad de cálculo disponible para cualquier transacción, pero dado que la demostración en los coprocesadores también se realiza por transacción, usarlos será más caro que los rollups. Dado el costo, es probable que los coprocesadores sean útiles para protocolos o usuarios que deseen realizar tareas complejas puntuales de manera verificable. Otro beneficio de los coprocesadores es que permiten a las aplicaciones que utilizan cálculos fuera de la cadena acceder también al estado histórico completo de Ethereum sin agregar suposiciones de confianza a la aplicación misma; esto no es posible en un contrato inteligente básico hoy en día.

Para resaltar la diferencia entre los rollups y coprocesadores, vamos a referirnos a las variantes ZK de estas primitivas. Los rollups ZK acceden tanto a la verificabilidad como al aspecto de compresión de las pruebas de conocimiento cero, lo que les permite aumentar fundamentalmente la capacidad de procesamiento para su ecosistema. Los coprocesadores, por otro lado, solo acceden a la propiedad de verificabilidad de las pruebas zk, lo que significa que la capacidad de procesamiento general del sistema sigue siendo la misma. Además, los rollups ZK requieren circuitos que puedan demostrar cualquier programa que apunte a la máquina virtual de ese rollup (por ejemplo, los rollups en Ethereum han construido zkEVMs para contratos que apuntan a la EVM). En contraste, los coprocesadores ZK solo necesitan construir circuitos para las tareas para las que están enlistados para realizar.

Entonces, parece que las dos mayores diferencias entre rollups y coprocesadores son:

Rollups mantienen un estado persistente particionado, y los coprocesadores no (utilizan el estado de la cadena principal).

Los Rollups (como su nombre sugiere) agrupan varias transacciones juntas, y los coprocesadores se utilizan generalmente para tareas complicadas como parte de una sola transacción (al menos en el paradigma actual).

Recientemente, se han propuesto los Booster Rollups, que ejecutan transacciones como si se estuvieran ejecutando directamente en la cadena principal, con acceso al estado completo de la cadena principal. Sin embargo, los Booster Rollups también tienen su propio almacenamiento, lo que les permite escalar la computación y el almacenamiento en la cadena principal y en el rollup. La propuesta de Booster Rollup señala cómo hay un espectro en el diseño de computación fuera de la cadena, con rollups tradicionales y coprocesadores ubicados en cada extremo de este espectro. Los Rollups, los Booster Rollups y los Coprocesadores proporcionan acceso a más computación y solo difieren en la cantidad de estado que mantienen separado de su L1 base.

En una charla en la Cumbre Modular, 2023 llamada "Las transacciones protegidas son rollups", Henry De Valence habló sobre este concepto exacto y presentó una imagen muy simple para definir un rollup:

La charla postula que cualquier ejecución externalizada por la cadena base a un tercero es un rollup. Según su definición, los coprocesadores también serían rollups. Esto difiere ligeramente de nuestra visión de unificar rollups y coprocesadores bajo la bandera de cómputo verificable fuera de la cadena, ¡pero el sentimiento general sigue siendo el mismo!

En su visión de Endgame, Vitalik discute un futuro donde la producción de bloques es centralizada y la validación de bloques es sin confianza y altamente descentralizada. Creemos que este es aproximadamente el modelo correcto para pensar en lo que está sucediendo ahora. En un zk-rollup, la producción de bloques y la computación de transición de estado están centralizadas. Sin embargo, las pruebas permiten que la verificación sea barata y descentralizada. De manera similar, un coprocesador zk no tiene producción de bloques; solo accede a datos históricos y calcula transiciones de estado sobre estos datos. Es probable que la computación en un coprocesador zk siempre se realice en una máquina centralizada; sin embargo, la prueba de validez devuelta junto con un resultado permite a cualquiera verificar los resultados antes de usarlos. Quizás sea correcto reformular la visión de Vitalik como: 'un futuro donde la computación es centralizada, pero la verificación de la computación centralizada es sin confianza y altamente descentralizada'.

Igual pero diferente

A pesar de sus similitudes generales, los rollups y los coprocesadores sirven a mercados muy diferentes en la actualidad. Uno podría preguntar, “Si podemos simplemente usar un coprocesador en ETH L1 y acceder a su liquidez, ¿por qué necesitamos rollups?” aunque esta es una pregunta justa, creemos que hay algunas razones por las que los rollups todavía tienen sentido (y presentan una oportunidad de mercado mucho más grande que los coprocesadores hoy en día):

Como se mencionó anteriormente, los coprocesadores le permiten acceder a más capacidad de cálculo en la misma transacción que la L1. Pero no pueden ayudar a mover la aguja en cuántas transacciones puede realizar la cadena de bloques que está llamando al coprocesador (si está pensando en lotes, voilà, ha llegado a un rollup). Al mantener un estado persistente particionado, los rollups pueden aumentar el número de transacciones disponibles para las personas que desean acceder al espacio de bloque con las propiedades de seguridad de Ethereum. Esto es posible porque los rollups solo publican en Ethereum cada n bloques y no requieren que todos los validadores de Ethereum verifiquen que ocurrió una transición de estado. Las partes interesadas simplemente pueden confiar en la prueba.

Incluso si utilizas coprocesadores, aún debes pagar el mismo orden de magnitud de tarifas que cualquier otra transacción en el L1. Por otro lado, los rollups a través de lotes pueden reducir los costos en órdenes de magnitud.

Además, dado que los rollups proporcionan la capacidad de ejecutar transacciones en este estado separado, siguen comportándose como blockchains (más rápidos, blockchains menos descentralizados, pero blockchains no obstante), por lo que también tienen límites claros en cuanto a cuánto cálculo se puede acceder desde el propio rollup. En este escenario, un coprocesador puede ser útil para los rollups si un usuario desea realizar transacciones arbitrariamente complejas (y ahora estás realizando transacciones verificables en un rollup, por lo que solo tienes que obedecer las leyes de la física del rollup).

Otro punto importante a tener en cuenta aquí es que la mayor parte de la liquidez hoy en día reside en ETH L1, por lo que para muchos protocolos que dependen de la liquidez para mejorar sus productos, podría ser astuto seguir lanzándose en la red principal de Ethereum. Una aplicación en la red principal de Ethereum puede obtener acceso a más cómputo realizando transacciones intermitentes en un coprocesador. Por ejemplo, un DEX como Ambient o Uniswap v4 puede usar ganchos junto con coprocesadores para hacer una lógica complicada sobre cómo cambiar las tarifas o incluso modificar la forma de la curva de liquidez en función de los datos del mercado.

Una interesante analogía compara la interacción entre los rollups y los coprocesadores con la programación imperativa y funcional. La programación imperativa se centra en estados mutables y efectos secundarios, especificando paso a paso cómo ejecutar tareas. La programación funcional enfatiza los datos inmutables y funciones puras, evitando cambios de estado y efectos secundarios. De la misma manera, los rollups son como programas imperativos que modifican el estado que contienen, mientras que los coprocesadores son como programas funcionales que no mutan el estado, pero producen un resultado junto con pruebas de computación. Además, al igual que la programación imperativa y funcional, los rollups y coprocesadores tienen su lugar y deben usarse en consecuencia.

Un Futuro Basado en Pruebas

Si terminamos en un mundo donde la computación está centralizada, pero la verificación de la computación centralizada es confiable y altamente descentralizada, ¿dónde deja eso a Ethereum? ¿Se reducirá la computadora mundial a una simple base de datos? ¿Es esto algo malo?

En última instancia, el objetivo de Ethereum es dar a sus usuarios acceso a cálculos y almacenamiento sin confianza. En el pasado, la única forma de acceder a cálculos sin confianza en Ethereum era que la computación fuera realizada y verificada por todos los nodos. Con el avance de las técnicas de demostración (especialmente las pruebas de conocimiento cero), podemos trasladar gran parte de la computación que se realizaba en los nodos validadores a cálculos fuera de la cadena y solo hacer que los validadores verifiquen los resultados en la cadena. Esto convierte esencialmente a Ethereum en el tablón de anuncios inmutable del mundo. Las pruebas de cálculo nos permiten verificar que una transacción se realizó correctamente, y al publicarlas en Ethereum, obtenemos una marca de tiempo y un almacén histórico inmutable para estas pruebas. A medida que las pruebas de conocimiento cero se vuelven más eficientes en cálculos arbitrarios, es probable que en algún momento el costo de realizar cálculos en ZK sea significativamente menor que el costo de hacerlo en una cadena de bloques (quizás incluso en una cadena CometBFT de 100 validadores). En un mundo así, es difícil imaginar que las pruebas de conocimiento cero no se conviertan en el modo dominante de acceder a cálculos sin confianza. Pensamientos similares también han sido expresados recientemente por David Wong:

Un futuro en el que cualquier cálculo pueda ser demostrado también nos permite construir infraestructura para los tipos de aplicaciones sin confianza que tienen demanda de usuarios en lugar de intentar adaptar la capa base de Ethereum para que sea el hogar de esas aplicaciones. En el caso ideal, la infraestructura personalizada creará experiencias de usuario más fluidas y también escalará con las aplicaciones construidas sobre ella. Esto esperemos que permita a las aplicaciones web3 competir con sus contrapartes web2 e introducir el futuro sin confianza, basado en pruebas, con el que siempre soñaron los ciberpunks.

En resumen, creemos que nos estamos moviendo hacia el siguiente paradigma:

————————————————————No confíes, verifica————————————————————-

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [espejo]. Todos los derechos de autor pertenecen al autor original [Jacob Ko]. If there are objections to this reprint, please contact the Gate Learnequipo, y ellos lo manejarán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son exclusivamente las del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione lo contrario, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Пригласить больше голосов

Содержание

Cálculo fuera de la cadena es todo lo que necesitas

Intermedio1/4/2024, 5:43:45 PM
Este artículo introduce los conceptos de co-procesadores y Rollup, así como la separación modular de la computación y verificación futuras en blockchain.

Introducción

Las blockchains son registros distribuidos a nivel mundial que llegan a un consenso sobre un estado global. Algunas blockchains vienen equipadas con un entorno de ejecución Turing-completo que permite la programabilidad sobre este estado global. Los programas que apuntan a los entornos de ejecución de las blockchains se llaman contratos inteligentes, y las blockchains subyacentes se llaman plataformas de contratos inteligentes. Ethereum, Solana y Avalanche son algunas de las plataformas de contratos inteligentes más conocidas. Podemos pensar en las plataformas de contratos inteligentes como computadoras distribuidas, con el entorno de ejecución (o máquina virtual) actuando como la CPU y el estado desempeñando el papel de almacenamiento.

Esta estructuración de las cadenas de bloques como computadoras será importante para motivar por qué es inevitable el cómputo de coprocesadores/fuera de la cadena, especialmente en el contexto de las cadenas de bloques. En la computación tradicional, los coprocesadores se originaron en la microarquitectura para mejorar el rendimiento. Del mismo modo, los coprocesadores en Ethereum prometen acceso a datos históricos y cómputo externo de alto rendimiento para ampliar las características y el espacio de diseño del protocolo de capa base. Echa un vistazo a este artículo introductorio sobre coprocesadores para más información.

Este artículo explora coprocesadores desde los primeros principios, con el objetivo de aclarar su importancia y meta-propiedades. Luego los comparamos con rollups, demostrando cómo estos dos conceptos, aunque diferentes, están estrechamente relacionados. También proporcionamos ejemplos de cuándo los rollups y los coprocesadores pueden ser utilizados en conjunto. Por ejemplo, incluso un rollup todo poderoso o L1 podría necesitar un coprocesador para tareas de gran envergadura.

Concluimos este artículo observando que las blockchains se están moviendo hacia un futuro en el que la computación está centralizada, pero la verificación sigue siendo descentralizada. Los Rollups, coprocesadores y cualquier otra forma de cálculo externo verificable son simplemente diferentes instanciaciones de este futuro.

Cómo llegamos hasta aquí:

En "Los límites de la escalabilidad de la cadena de bloques", Vitalik mencionó que para la descentralización de la cadena de bloques, es importante que los usuarios regulares puedan ejecutar un nodo.

Como se mencionó anteriormente, Ethereum se puede conceptualizar como una computadora global descentralizada en muchos aspectos. Es una red de nodos que ejecutan software que proporciona recursos computacionales para ejecutar contratos inteligentes. La cadena de bloques de Ethereum almacena información de estado y código, similar al almacenamiento y la memoria de una computadora. Y la máquina virtual de Ethereum (EVM) se ejecuta en cada nodo, procesando transacciones y ejecutando código como una CPU. Sin embargo, Ethereum no tiene permisos y está descentralizado, utilizando el consenso entre nodos que no son de confianza. Si algunos nodos se desconectan, la red sigue funcionando. Para garantizar la corrección de las operaciones de EVM, los validadores de las redes Proof-of-Stake (PoS) como Ethereum deben realizar todas las transiciones de estado para verificarlas. Esto limita la velocidad de una red PoS a sus nodos más lentos, lo que limita la cantidad de computación que los desarrolladores de aplicaciones tienen a su disposición.

A diferencia de una computadora regular, Ethereum limita la computación y el almacenamiento para prevenir el abuso de la red. Se cobran tarifas por cada operación, lo que hace que los bucles infinitos sean financieramente poco prácticos. Este enfoque mantiene las barreras de entrada bajas, lo que permite que hardware cotidiano como una Raspberry Pi ejecute nodos de red. Las limitaciones permiten un sistema inclusivo donde cualquiera puede ayudar a operar la red descentralizada de Ethereum.

Debido a estas restricciones computacionales de los nodos de Ethereum, aplicaciones complejas como modelos de aprendizaje automático, juegos o aplicaciones de computación científica no pueden ejecutarse de manera factible directamente en Ethereum hoy.

Es un compromiso para hacer que Ethereum sea ampliamente accesible, seguro y sostenible como base para aplicaciones básicas. Pero inevitablemente, existen algunas limitaciones en comparación con una computadora sin restricciones computacionales. Tiene limitaciones incluso en comparación con un procesador antiguo como un Pentium 5:

No hay cálculos de punto flotante complejos - La EVM solo admite operaciones matemáticas y lógicas básicas. Cálculos numéricos avanzados como redes neuronales no son factibles. (Un dato interesante es la incapacidad para manejar el punto flotante, lo que también ha dificultado el intercambio de activos de rebase como Ampleforth, etc., en la historia reciente y a veces incluso es incompatible con algunos DEXs).

Cómputo limitado por bloque - Las tarifas de gas miden los cálculos, por lo que el software complejo como los juegos sería prohibitivamente caro. El límite de gas por bloque es de 30M de gas.

Memoria restringida: los contratos inteligentes tienen límites de almacenamiento permanente pequeños, lo que hace que los programas grandes sean difíciles.

No hay almacenamiento de archivos persistente - No hay forma de almacenar archivos como gráficos, audio o video en la cadena de bloques.

Velocidad lenta - Las velocidades de transacción en Ethereum actualmente son de ~15 TPS, muchas órdenes de magnitud más lentas que una CPU.

En última instancia, el almacenamiento y la computación limitados restringen los grados de libertad disponibles para las aplicaciones (estos límites difieren de una cadena de bloques a otra, pero siempre existen). La gente ha comparado las cadenas de bloques con los entornos de computación restringida de los años 1970-1980, pero creemos que hay algunas diferencias importantes entre estos dos:

El crecimiento de la computación en los años 1970-1980 fue rápido (con el recuento de transistores en microprocesadores pasando de ~1,000 a ~1,000,000 durante ese período). Pero este crecimiento no significaba que la gente comprara o actualizara sus computadoras con frecuencia. Dado que las plataformas de contratos inteligentes están limitadas por sus nodos más lentos, una aceleración en la frontera de las computadoras no necesariamente llevará a que las cadenas de bloques vean un aumento proporcional en la velocidad computacional. Una aceleración solo puede ocurrir si los requisitos básicos para los nodos en la cadena de bloques son actualizados.

También hay un claro equilibrio entre actualizar constantemente los requisitos mínimos de hardware para los nodos y la descentralización. Los validadores individuales pueden no querer actualizar el hardware cada dos años (y ciertamente no quieren monitorear el rendimiento a diario), lo que lleva a que solo los profesionales deseen administrar la infraestructura blockchain.

Todo esto es para decir que, a lo largo de los años, las CPU mejoraron y obtuvimos más núcleos de CPU en cada dispositivo para permitirnos realizar tareas cada vez más complicadas. Si pensamos que las computadoras blockchain no se acelerarán tan rápido como la computación tradicional (debido a los requisitos de los nodos de referencia), entonces tiene sentido tratar de encontrar fuentes alternativas de cómputo. Una analogía interesante es que las CPU en la computación tradicional no se volvieron buenas en las tareas de procesamiento gráfico, lo que llevó al aumento de las GPU en casi todas las computadoras. Del mismo modo, dado que las cadenas de bloques se están centrando en ser almacenes de estado seguros con baterías de cómputo simples habilitadas, existe una clara oportunidad para que la computación fuera de la cadena amplíe el espacio de diseño de aplicaciones. Hoy en día, las cadenas de bloques solo tienen sentido para aplicaciones de baja computación que desean propiedades como acceso abierto, autosoberanía, resistencia a la censura y componibilidad. Para poner una mayor variedad de aplicaciones en la cadena, necesitamos levantar las restricciones que imponemos a los desarrolladores de aplicaciones. Decimos esto con el entendimiento de que estas limitaciones también han sido una bendición para la experimentación. Por ejemplo, los CLOB no podían ejecutarse de manera efectiva en Ethereum debido a las limitaciones de cómputo, por lo que se adoptaron los AMM, que desde entonces han registrado un billón de dólares en volumen.

Hay dos enfoques comunes para hacer que más capacidad de cálculo esté disponible para las aplicaciones blockchain:

Aumentar relativamente a menudo los requisitos básicos del nodo. Esto es más o menos el camino que toman las blockchains de alto rendimiento integradas como Solana y Sui. Un nivel alto para los nodos les permite construir una cadena de bloques muy rápida y también elimina algunas restricciones de diseño del diseño de la aplicación. Phoenix, un DEX de Libro de Órdenes Limitadas en Solana, no podría construirse en Ethereum (o en cualquier L2) hoy en día. El lado negativo de aumentar los requisitos básicos es que si crecen constantemente, entonces ejecutar nodos podría ser viable solo para proveedores de infraestructura profesionales. Los requisitos históricos de RAM hacen un buen trabajo al mostrar cómo los requisitos de hardware han crecido consistentemente en Solana:

Archivo web (Nota: utilizamos requisitos de RAM medianos de 2020)

Mover la computación fuera de la cadena a terceros. Esta ha sido la estrategia adoptada por el ecosistema de Ethereum. Estos terceros podrían ser ellos mismos blockchains (en el caso de rollups), dispositivos de computación verificables fuera de la cadena (es decir, coprocesadores), o terceros de confianza (como es el caso de la computación fuera de la cadena específica de la aplicación, como el libro de órdenes de dydx).

Hacia la Unificación de la Computación Fuera de la Cadena

Recientemente, ha habido un aumento en las conversaciones sobre coprocesadores, que proporcionan cálculos verificables fuera de la cadena. Los coprocesadores pueden implementarse de varias formas, incluyendo pero no limitado a Pruebas de Conocimiento Cero o Entornos de Ejecución Confiables (TEEs). Algunos ejemplos son:

Coprocesadores ZK: Axiom, Bonsai de Risc Zero.

TEEs: Ostra de Marlin,

Al mismo tiempo, cuando se trata de descargar cálculos, la hoja de ruta centrada en rollups de Ethereum descarga cálculos a varios rollups que se liquidan en Ethereum. En los últimos años, una corriente constante de desarrolladores y usuarios se ha estado migrando a rollups debido a una combinación de transacciones más baratas y rápidas e incentivos proporcionados por los rollups. En un mundo ideal, los rollups permiten a Ethereum aumentar su capacidad computacional general mediante la ejecución fuera de la cadena sin añadir suposiciones de confianza. Más cálculos no se refiere solo a ejecutar más transacciones, sino también a realizar más cálculos expresivos por transacción. Los nuevos tipos de transacciones amplían el espacio de diseño disponible para las aplicaciones, y una mayor capacidad reduce el costo de realizar estas transacciones expresivas, asegurando un acceso asequible a una clase superior de aplicaciones.

Antes de seguir adelante, definamos brevemente tanto los rollups como los coprocesadores para evitar confusiones:

Rollups: Rollups mantienen un estado persistente y particionado diferente de sus cadenas base/anfitrionas, pero aún heredan las propiedades de seguridad de su base al publicar datos/pruebas en ella. Al mover el estado fuera de la cadena anfitriona, los rollups pueden utilizar cálculos adicionales para realizar transiciones de estado antes de publicar pruebas de integridad de estas transiciones de estado en la cadena anfitriona. Los rollups son más útiles para los usuarios que no quieren pagar las altas tarifas de Ethereum pero desean acceder a las propiedades de seguridad de Ethereum.

Antes de sumergirnos en los coprocesadores, démosle más antecedentes sobre lo limitado que es el desarrollo de contratos inteligentes en Ethereum en la actualidad. Ethereum tiene almacenamiento de estado persistente en su estado global: saldos de cuentas, datos de contratos, etc. Estos datos persisten en la cadena de bloques indefinidamente. Sin embargo, existen limitaciones:

El tamaño máximo de los datos del contrato está limitado (por ejemplo, 24KB por contrato actualmente y se estableció en EIP 170). Almacenar archivos grandes excedería esto. (*No resuelto por coprocesadores tampoco)

La lectura/escritura de almacenamiento de contratos es más lenta que un sistema de archivos o una base de datos. Acceder a 1KB de datos puede costar millones de gas.

Mientras el estado global persiste, los nodos individuales solo retienen el estado reciente localmente en modo de "poda". La historia completa del estado requiere un nodo de archivo.

No hay primitivas del sistema de archivos nativo para manejar archivos como imágenes, audio y documentos. Los contratos inteligentes solo pueden leer/escribir tipos de datos básicos en el almacenamiento.

Las soluciones en torno a esto son:

Los archivos grandes pueden dividirse en partes más pequeñas para ajustarse a los límites de almacenamiento del contrato.

Las referencias de archivos se pueden almacenar en cadena, con los archivos almacenados fuera de la cadena en sistemas como IPFS.

Coprocesadores: Los coprocesadores no mantienen ningún estado por sí mismos; se comportan como funciones lambda en AWS, donde las aplicaciones pueden enviarles una tarea de cálculo, y ellos devuelven el resultado con prueba de cálculo. Los coprocesadores aumentan fundamentalmente la cantidad de cálculo disponible para cualquier transacción, pero dado que la demostración en los coprocesadores también se realiza por transacción, usarlos será más caro que los rollups. Dado el costo, es probable que los coprocesadores sean útiles para protocolos o usuarios que deseen realizar tareas complejas puntuales de manera verificable. Otro beneficio de los coprocesadores es que permiten a las aplicaciones que utilizan cálculos fuera de la cadena acceder también al estado histórico completo de Ethereum sin agregar suposiciones de confianza a la aplicación misma; esto no es posible en un contrato inteligente básico hoy en día.

Para resaltar la diferencia entre los rollups y coprocesadores, vamos a referirnos a las variantes ZK de estas primitivas. Los rollups ZK acceden tanto a la verificabilidad como al aspecto de compresión de las pruebas de conocimiento cero, lo que les permite aumentar fundamentalmente la capacidad de procesamiento para su ecosistema. Los coprocesadores, por otro lado, solo acceden a la propiedad de verificabilidad de las pruebas zk, lo que significa que la capacidad de procesamiento general del sistema sigue siendo la misma. Además, los rollups ZK requieren circuitos que puedan demostrar cualquier programa que apunte a la máquina virtual de ese rollup (por ejemplo, los rollups en Ethereum han construido zkEVMs para contratos que apuntan a la EVM). En contraste, los coprocesadores ZK solo necesitan construir circuitos para las tareas para las que están enlistados para realizar.

Entonces, parece que las dos mayores diferencias entre rollups y coprocesadores son:

Rollups mantienen un estado persistente particionado, y los coprocesadores no (utilizan el estado de la cadena principal).

Los Rollups (como su nombre sugiere) agrupan varias transacciones juntas, y los coprocesadores se utilizan generalmente para tareas complicadas como parte de una sola transacción (al menos en el paradigma actual).

Recientemente, se han propuesto los Booster Rollups, que ejecutan transacciones como si se estuvieran ejecutando directamente en la cadena principal, con acceso al estado completo de la cadena principal. Sin embargo, los Booster Rollups también tienen su propio almacenamiento, lo que les permite escalar la computación y el almacenamiento en la cadena principal y en el rollup. La propuesta de Booster Rollup señala cómo hay un espectro en el diseño de computación fuera de la cadena, con rollups tradicionales y coprocesadores ubicados en cada extremo de este espectro. Los Rollups, los Booster Rollups y los Coprocesadores proporcionan acceso a más computación y solo difieren en la cantidad de estado que mantienen separado de su L1 base.

En una charla en la Cumbre Modular, 2023 llamada "Las transacciones protegidas son rollups", Henry De Valence habló sobre este concepto exacto y presentó una imagen muy simple para definir un rollup:

La charla postula que cualquier ejecución externalizada por la cadena base a un tercero es un rollup. Según su definición, los coprocesadores también serían rollups. Esto difiere ligeramente de nuestra visión de unificar rollups y coprocesadores bajo la bandera de cómputo verificable fuera de la cadena, ¡pero el sentimiento general sigue siendo el mismo!

En su visión de Endgame, Vitalik discute un futuro donde la producción de bloques es centralizada y la validación de bloques es sin confianza y altamente descentralizada. Creemos que este es aproximadamente el modelo correcto para pensar en lo que está sucediendo ahora. En un zk-rollup, la producción de bloques y la computación de transición de estado están centralizadas. Sin embargo, las pruebas permiten que la verificación sea barata y descentralizada. De manera similar, un coprocesador zk no tiene producción de bloques; solo accede a datos históricos y calcula transiciones de estado sobre estos datos. Es probable que la computación en un coprocesador zk siempre se realice en una máquina centralizada; sin embargo, la prueba de validez devuelta junto con un resultado permite a cualquiera verificar los resultados antes de usarlos. Quizás sea correcto reformular la visión de Vitalik como: 'un futuro donde la computación es centralizada, pero la verificación de la computación centralizada es sin confianza y altamente descentralizada'.

Igual pero diferente

A pesar de sus similitudes generales, los rollups y los coprocesadores sirven a mercados muy diferentes en la actualidad. Uno podría preguntar, “Si podemos simplemente usar un coprocesador en ETH L1 y acceder a su liquidez, ¿por qué necesitamos rollups?” aunque esta es una pregunta justa, creemos que hay algunas razones por las que los rollups todavía tienen sentido (y presentan una oportunidad de mercado mucho más grande que los coprocesadores hoy en día):

Como se mencionó anteriormente, los coprocesadores le permiten acceder a más capacidad de cálculo en la misma transacción que la L1. Pero no pueden ayudar a mover la aguja en cuántas transacciones puede realizar la cadena de bloques que está llamando al coprocesador (si está pensando en lotes, voilà, ha llegado a un rollup). Al mantener un estado persistente particionado, los rollups pueden aumentar el número de transacciones disponibles para las personas que desean acceder al espacio de bloque con las propiedades de seguridad de Ethereum. Esto es posible porque los rollups solo publican en Ethereum cada n bloques y no requieren que todos los validadores de Ethereum verifiquen que ocurrió una transición de estado. Las partes interesadas simplemente pueden confiar en la prueba.

Incluso si utilizas coprocesadores, aún debes pagar el mismo orden de magnitud de tarifas que cualquier otra transacción en el L1. Por otro lado, los rollups a través de lotes pueden reducir los costos en órdenes de magnitud.

Además, dado que los rollups proporcionan la capacidad de ejecutar transacciones en este estado separado, siguen comportándose como blockchains (más rápidos, blockchains menos descentralizados, pero blockchains no obstante), por lo que también tienen límites claros en cuanto a cuánto cálculo se puede acceder desde el propio rollup. En este escenario, un coprocesador puede ser útil para los rollups si un usuario desea realizar transacciones arbitrariamente complejas (y ahora estás realizando transacciones verificables en un rollup, por lo que solo tienes que obedecer las leyes de la física del rollup).

Otro punto importante a tener en cuenta aquí es que la mayor parte de la liquidez hoy en día reside en ETH L1, por lo que para muchos protocolos que dependen de la liquidez para mejorar sus productos, podría ser astuto seguir lanzándose en la red principal de Ethereum. Una aplicación en la red principal de Ethereum puede obtener acceso a más cómputo realizando transacciones intermitentes en un coprocesador. Por ejemplo, un DEX como Ambient o Uniswap v4 puede usar ganchos junto con coprocesadores para hacer una lógica complicada sobre cómo cambiar las tarifas o incluso modificar la forma de la curva de liquidez en función de los datos del mercado.

Una interesante analogía compara la interacción entre los rollups y los coprocesadores con la programación imperativa y funcional. La programación imperativa se centra en estados mutables y efectos secundarios, especificando paso a paso cómo ejecutar tareas. La programación funcional enfatiza los datos inmutables y funciones puras, evitando cambios de estado y efectos secundarios. De la misma manera, los rollups son como programas imperativos que modifican el estado que contienen, mientras que los coprocesadores son como programas funcionales que no mutan el estado, pero producen un resultado junto con pruebas de computación. Además, al igual que la programación imperativa y funcional, los rollups y coprocesadores tienen su lugar y deben usarse en consecuencia.

Un Futuro Basado en Pruebas

Si terminamos en un mundo donde la computación está centralizada, pero la verificación de la computación centralizada es confiable y altamente descentralizada, ¿dónde deja eso a Ethereum? ¿Se reducirá la computadora mundial a una simple base de datos? ¿Es esto algo malo?

En última instancia, el objetivo de Ethereum es dar a sus usuarios acceso a cálculos y almacenamiento sin confianza. En el pasado, la única forma de acceder a cálculos sin confianza en Ethereum era que la computación fuera realizada y verificada por todos los nodos. Con el avance de las técnicas de demostración (especialmente las pruebas de conocimiento cero), podemos trasladar gran parte de la computación que se realizaba en los nodos validadores a cálculos fuera de la cadena y solo hacer que los validadores verifiquen los resultados en la cadena. Esto convierte esencialmente a Ethereum en el tablón de anuncios inmutable del mundo. Las pruebas de cálculo nos permiten verificar que una transacción se realizó correctamente, y al publicarlas en Ethereum, obtenemos una marca de tiempo y un almacén histórico inmutable para estas pruebas. A medida que las pruebas de conocimiento cero se vuelven más eficientes en cálculos arbitrarios, es probable que en algún momento el costo de realizar cálculos en ZK sea significativamente menor que el costo de hacerlo en una cadena de bloques (quizás incluso en una cadena CometBFT de 100 validadores). En un mundo así, es difícil imaginar que las pruebas de conocimiento cero no se conviertan en el modo dominante de acceder a cálculos sin confianza. Pensamientos similares también han sido expresados recientemente por David Wong:

Un futuro en el que cualquier cálculo pueda ser demostrado también nos permite construir infraestructura para los tipos de aplicaciones sin confianza que tienen demanda de usuarios en lugar de intentar adaptar la capa base de Ethereum para que sea el hogar de esas aplicaciones. En el caso ideal, la infraestructura personalizada creará experiencias de usuario más fluidas y también escalará con las aplicaciones construidas sobre ella. Esto esperemos que permita a las aplicaciones web3 competir con sus contrapartes web2 e introducir el futuro sin confianza, basado en pruebas, con el que siempre soñaron los ciberpunks.

En resumen, creemos que nos estamos moviendo hacia el siguiente paradigma:

————————————————————No confíes, verifica————————————————————-

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [espejo]. Todos los derechos de autor pertenecen al autor original [Jacob Ko]. If there are objections to this reprint, please contact the Gate Learnequipo, y ellos lo manejarán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son exclusivamente las del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione lo contrario, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!