Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?

原文:Herodotus: Probando el estado de Ethereum usando pruebas de almacenamiento en Starknet

Traducción y corrección: Comunidad china de Starknet"

Descripción general

  • StarkWare se ha asociado con Herodotus para desarrollar un método de prueba que rastrea todos los bloques de Ethereum desde su creación hasta el presente.
  • Esto se logra mediante el uso de pruebas criptográficas y hashes de bloques.
  • Logra el objetivo de EIP-2935: acceder a hashes de bloques históricos de más de 256 bloques de forma nativa de la cadena y desbloquear nuevas posibilidades para nuevos casos de uso como DeFi.
  • Herodotus y StarkWare están llevando esta tecnología a Ethereum como un bien público.

Introducción

Es importante tener acceso demostrable al estado histórico de Ethereum. Pero hasta ahora, hemos podido acceder a un historial limitado y sin confianza hasta la última hora.

Pero Starknet es una empresa vibrante, en constante innovación, que supera los límites de lo que es posible. Ahora, gracias a Herodotus y StarkWare, podemos rastrear y obtener todos los hashes de bloques de Ethereum desde el bloque génesis de una manera nativa de la cadena y demostrable.

Echemos un vistazo más de cerca a cómo Heródoto y StarkWare lograron esto y qué significa todo esto. Comenzaremos con los antecedentes de la prueba de almacenamiento.

¿Qué es la prueba de almacenamiento?

La prueba de almacenamiento nos permite demostrar que un estado realmente existió en algún momento del pasado sin ninguna confianza en un tercero. Al almacenar pruebas, la confianza se incorpora a las matemáticas. La prueba de almacenamiento también se puede utilizar para acceder a estos estados a través de las cadenas.

En un artículo reciente sobre Proof of Storage, presentamos a Heródoto, el equipo que lidera la investigación y la innovación de Proof of Storage. Actualmente, el equipo de Herodotus ha implementado una nueva tecnología que permite una prueba sin confianza del estado de Ethereum desde la creación del bloque, mejorando significativamente el rendimiento de la prueba de almacenamiento.

Exploremos cómo Heródoto logra esto y por qué es importante.

Prueba de los bloques fundacionales de Ethereum en la cadena

En primer lugar, tenemos que entender cómo funcionan los encabezados de bloque y los hashes de bloque de Ethereum.

¿Qué es un encabezado de bloque y un hash de bloque? **

El encabezado de bloque es la parte del bloque que resume toda la información contenida en el bloque, incluido el hash del bloque principal, la marca de tiempo del bloque, la raíz del estado, etc.

! [Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?] ](https://cdn-img.panewslab.com//panews/2022/11/6/images/2f7bf27a826afe72e5e7dcdee98a10e5.jpeg)

Encabezado de bloque de Ethereum y árbol de Merkle de estado (fuente de contenido)

El encabezado del bloque contiene mucha información. En este artículo, nos centramos en las raíces estatales. Veamos por qué.

Como puede ver en la imagen de arriba, debajo del encabezado del bloque está el estado de la cuenta de Ethereum. Cada cuenta de Ethereum tiene un espacio de almacenamiento asociado que almacena las variables de la cuenta (esencialmente el estado del contrato inteligente). Una vez que se aplica un hash al compromiso criptográfico almacenado por la cuenta, se almacena como una raíz de almacenamiento, junto con el saldo de la cuenta, el número aleatorio y el hash del código. En conjunto, estos forman básicamente un resumen del estado de la cuenta.

Se construye un árbol de Merkle Patricia Trie que contiene el estado de todas las cuentas de Ethereum, y su hash se almacena como una raíz de estado en el encabezado del bloque (etiquetado como stateRoot en la imagen de arriba). Esta raíz de estado contiene toda la información necesaria para demostrar el estado de toda la red Ethereum en un momento dado.

Finalmente, dado que cada bloque en Ethereum (y la cadena EVM) contiene esta raíz de estado, y cada bloque también tiene una cadena asociada llamada hash de bloque (que es el resultado de hashear todo en el encabezado del bloque, incluida la raíz de estado), el hash de bloque es el compromiso criptográfico de todo el estado de Ethereum en un momento específico.

Hash de bloque histórico en EVM

Dada la gran cantidad de información crítica almacenada en los hashes de bloque, a menudo necesitamos acceder a su historial.

En Solidity, si queremos recuperar el hash de un bloque minado hace dos bloques (el recuento de retroceso comienza desde el bloque que contiene la transacción), podemos usar la siguiente sintaxis:

! [Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?] ](https://cdn-img.panewslab.com//panews/2022/11/6/images/29fbdb1146f58b1d0023649d585188fb.jpeg)

El método es muy sencillo. Pero hay un problema: este método de hash de bloque solo puede recuperar el hash de los últimos 256 bloques. Basado en el promedio de 12 segundos de un bloque en Ethereum, equivale a un historial de 51,2 minutos en la cadena.

El límite de 256 bloques suele ser suficiente para las personas que desean utilizar el hash de bloque histórico como fuente de entropía (aleatoriedad). Sin embargo, dada la historia de ocho años de Ethereum, si desea usar un hash de bloque para obtener su estado histórico en un bloque en particular, un historial de 51 minutos no es suficiente.

Este límite de recuperación de hash en cadena de 256 bloques está destinado principalmente a mejorar la eficiencia del almacenamiento de estado y reducir los posibles problemas de crecimiento del estado.

Herodotus hace posible obtener un historial completo de hash de bloques

Cómo Heródoto resuelve esta limitación y nos permite lograr:

  • Accede al historial completo de hashes de bloques de Ethereum
  • Probar todo el estado de Ethereum desde el bloque de inicio
  • Y todo se hace de una manera sin confianza

La clave está en el poder de las pruebas criptográficas.

Profundicemos en los pasos procedimentales del acumulador de hash de bloque histórico de Heródoto:

Paso 1: Registrar un hash de bloque reciente

En la red principal de Ethereum, un hash de bloque reciente se registra en un contrato inteligente llamado SharpFactsAggregator. Este hash de bloque se puede recuperar utilizando el código de operación de hash de bloque (valor de código de operación 0x40) y guardarse como una variable de cadena simple en el contrato inteligente anterior. También puede registrar el número de bloque correspondiente para acceder a él más adelante.

Suponiendo que el número de bloque registrado es 18.000.000, podemos ver a través de Etherscan que el valor hash de este bloque es 0x95b1… 4baf3。

Paso 2: Probar el hash del último bloque

El siguiente paso es recuperar la información del encabezado del bloque 18.000.000 de un nodo de archivo, calcular su valor de hash de bloque fuera de la cadena y 0x95b1 con el valor de hash de bloque registrado… 4BAF3. Este proceso de cálculo también utiliza un probador para crear una prueba de este cálculo.

El hash de este bloque se añade a la Cordillera de Merkle. Esta es una variante del árbol de Merkle, y agregar nuevos elementos al árbol no requiere muchos cálculos.

Paso 3: Probar el hash del bloque X-1

Una vez que hemos demostrado que el encabezado de bloque recuperado del nodo de archivo es válido, tomamos el encabezado de bloque del bloque X-1, calculamos su valor hash y lo comparamos con el hash principal del bloque X (este valor se puede encontrar en el encabezado de bloque del bloque X que recuperamos anteriormente).

Si los hashes coinciden, podemos estar seguros de que el encabezado del bloque X-1 también es válido. Dado que todo el cálculo se puede modelar como una función, se puede crear una prueba STARK de ese cálculo al mismo tiempo. Esto dio como resultado una prueba de la validez del encabezado del bloque X-1 (ver figura a continuación).

! [Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?] ](https://cdn-img.panewslab.com//panews/2022/11/6/images/50db34684e403b4d5dd508de876d3e94.jpeg)

Paso 4: Probar recursivamente el hash del bloque anterior

El hash de bloque de todos los bloques de pre-pedido se calcula de manera similar hasta que se rastrea hasta el bloque génesis de la red principal de Ethereum. Estos hashes se anexan al árbol MMR, creando una raíz MMR final.

! [Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?] ](https://cdn-img.panewslab.com//panews/2022/11/6/images/00e168dfc3307b7451050fe994a42d13.jpeg)

Es importante tener en cuenta que estos cálculos se realizan fuera de la cadena, y Heródoto también genera pruebas de cálculo.

Paso 5: Publicar la prueba en la cadena y su uso posterior

Una vez que se ha generado la raíz MMR final, esta raíz se puede publicar en la cadena (en un contrato inteligente de agregación de pruebas) junto con las pruebas computacionales de millones de bloques. El costo de verificar estas pruebas en la cadena se justifica debido al costo extremadamente bajo de verificar las pruebas STARK generadas.

Hemos implementado una forma de rastrear y acceder a todo el estado de Ethereum desde el bloque génesis.

El equipo de Herodotus se refiere a estos MMR como “acumuladores históricos de hash de bloques” e implementa el objetivo EIP-2935 propuesto por Vitalik Buterin y Tomasz Stanczak en 2020, una forma de acceder a más de 256 bloques de datos históricos. ¡Este es un tema que ha estado abierto durante más de tres años! Sin embargo, Heródoto y Starknet han logrado esto sin cambiar ninguna capa de protocolo.

Algunos puntos clave sobre el proceso anterior:

  • Herodotus procesa alrededor de 1350 bloques por lote, y las pruebas de cada lote se publican en la cadena. Una vez que se completa todo el proceso de procesamiento de los primeros 18 millones de bloques de Ethereum, la raíz MMR del historial de bloques se puede actualizar periódicamente a medida que se agregan nuevos bloques al historial de la cadena.

! [Heródoto: ¿Cómo aprovechar la prueba de almacenamiento de Starknet para demostrar el estado de Ethereum?] ](https://cdn-img.panewslab.com//panews/2022/11/6/images/7442f10afdba6bed044c215b9f057a7c.jpeg)

Una vez que la raíz MMR se encuentra en la cadena, se puede demostrar que la MMR contiene un hash de cada bloque (que es una propiedad fundamental del árbol de Merkle).

Antes de enviar las pruebas a la red principal de Ethereum, los Provers del equipo de Herodotus utilizan el sistema SHARP creado por el equipo de StarkWare. La principal ventaja del sistema SHARP es su capacidad para reducir costes y aumentar la eficiencia de la generación de pruebas.

El flujo de trabajo anterior se está replicando en dos MMR separados, uno usando la función hash Keccak256 y el otro usando Poseidon. Ethereum utilizará la variante Keccak256, mientras que Starknet utilizará la variante Poseidón.

La raíz MMR de la red principal de Ethereum se envía a Starknet a través del protocolo de mensajería nativo Starknet L1 a L2 para su uso en Starknet. El acumulador de hash de bloques de Herodotus también implementa la capacidad de acceder a datos históricos de Ethereum en Starknet. El sistema de mensajería Starknet L1 a L2 se puede utilizar para reenviar hashes de bloque L1 y raíces MMR verificadas a Starknet de forma segura. Una vez enviada a Starknet, la prueba de almacenamiento de los datos históricos de Ethereum puede verificarse con estos compromisos.

Nuevas oportunidades para el acumulador de hash de bloques de Heródoto

Herodotus y StarkWare están trayendo acumuladores de hash de bloque a Ethereum como un bien público. Una vez que la raíz final de MMR y la prueba de cálculo se publican en la red principal de Ethereum, cualquier desarrollador puede aprovecharlas para acceder al estado demostrable en cualquier momento desde el inicio de la cadena.

Dado que la raíz MMR de Ethereum también se enviará a Starknet a través del protocolo nativo de mensajería entre cadenas, se puede acceder a la información de estado entre cadenas de una manera simple y sin confianza. Los protocolos DeFi pueden beneficiarse de la prueba de estado histórica al aprovechar la información de saldo de una cuenta o la información de posición apalancada de una cuenta en un momento específico. Es posible generar números aleatorios más robustos utilizando un registro hash de bloque histórico más grande. La votación entre cadenas también se ha simplificado, ya que los usuarios no necesitan transferir activos entre cadenas antes de votar en L2. Hay muchas más posibilidades que vienen con esto.

Conclusión

En un mundo en el que la escalabilidad, la descentralización y la verificabilidad de la cadena de bloques están en constante evolución, el equipo de Starknet se está convirtiendo en un faro de innovación. Los proyectos creados en Starknet se están convirtiendo en un elemento clave para escalar Ethereum. A medida que nos adentramos en este nuevo futuro, familiarizarse con el ecosistema de Starknet sentará las bases para su crecimiento futuro.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
Añadir un comentario
Añadir un comentario
Sin comentarios
  • Anclado