Arquitectura de bloque Ethereum

¿Dónde puedo encontrar una descripción (preferiblemente un diagrama como el que se muestra a continuación) que muestre la estructura del bloque en una cadena de bloques de Ethereum?

Diagrama que muestra cómo se pueden verificar las transacciones de Bitcoin

Créditos: Wikipedia

Corríjame si me equivoco, pero esto no solo es relevante para la Prueba de trabajo, la Prueba de participación seguirá usando el mismo Merkle Tree, ¿no?

Respuestas (7)

Aquí está mi interpretación, basada en el papel amarillo:

ingrese la descripción de la imagen aquí

...los Tries deberían parecerse más a esto:

ingrese la descripción de la imagen aquí

Hola @atomh33ls, ¿te importaría compartir el archivo fuente de las ilustraciones (en cualquier formato de software que hayas usado para crearlas). Me gustaría crear una ilustración para transacciones trie. Se verá casi igual que el estado trie, excepto que se cambiarán algunos detalles. ¡Gracias!
Explícanoslas en un inglés sencillo
@ atomh33ls También estaría interesado en los archivos fuente. ¡Realmente me gusta este increíble resumen! ¿Qué software usaste?
@ atomh33ls +1 al archivo fuente, por favor. Si no, también me encantaría volver a crearlo en mermaid.js para que la comunidad pueda coeditarlo. Los tres cambios específicos que tengo en mente son agregar una nota de que el tamaño de la clave se acorta con fines simplificados, colocar la complejidad del árbol (profundidad máxima) en la parte inferior derecha y agregar un ejemplo de un nodo de extensión con el prefijo 1[].
@Olshansk El diagrama principal svg está aquí . Por desgracia, no tengo el diagrama de Merkle a mano. Parecen buenas ideas, será interesante ver qué se te ocurre.

Comencemos primero con mi adaptación de esta figura que ilustra la estructura del bloque Bitcoin:

Arquitectura de la cadena de bloques Boitcoin

Hasta aquí todo bien. Todo bastante básico.

Ingresa a Ethereum y las cosas se vuelven un poco más complejas. Después de leer this y this , y según la recomendación de @ eth this , mi mejor interpretación es la siguiente figura:

![Arquitectura de cadena de bloques de Ethereum

Las definiciones de los campos de encabezado están disponibles en la sección 4.3 del documento amarillo .

Uncles es un hash (de una lista de tíos), Yellow Paper tiene: "El hash Keccak de 256 bits de la parte de la lista de ommers de este bloque". Codehash es solo un hash ya que los contratos son inmutables. Los punteros apuntan a "hash de encabezado de bloque completo" (el hash Keccak-256 de todos los bytes en el encabezado de bloque). Para tener un diagrama completo, debería consultar el Libro Amarillo...
Respuesta actualizada después de consultar al YP. Empezando a ser más claro ahora. ¡Gracias!
¿Por qué las transacciones del bloque N están vinculadas a las del bloque N+1?
Estos enlaces corresponden al estado del contrato que no ha cambiado entre bloques. Hacer referencia al estado de los bloques anteriores en lugar de replicar es más eficiente desde la perspectiva del tamaño del bloque.
Olvidaste la dificultad en los encabezados de bitcoin.
¿Se incluyen las nuevas transacciones extraídas en el bloque como una 'referencia' (p. ej., solo el hash de la transacción transmitida previamente en mempool) o la estructura de la transacción está completamente integrada en el bloque? Si está en línea/copiado: hay cierta ineficiencia de datos redundantes, ¿verdad? una vez donde la transacción se transmite a mempool y luego cuando se copia al bloque? Si la transacción de bloque hace referencia a la transacción de mempool: ¿qué sucede si un bloque de validación de nodo tiene una transacción desconocida? por ejemplo: ¿la transacción no está en el nodo mempool?

Aquí hay una estructura completa de un bloque y dónde juega su papel en la cadena de bloques de Ethereum.

Estructura del bloque Ethereum

Usted pidió un diagrama, pero creo que esto sería más explicativo.

La descripción se puede encontrar en el Libro Amarillo, que es la especificación formal del protocolo Ethereum.

Estas son las piezas principales de un bloque:

4.3. El bloque. El bloque en Ethereum es la recopilación de información relevante (conocida como el encabezado del bloque), H, junto con la información correspondiente a las transacciones comprendidas, T, y un conjunto de otros encabezados de bloque U que se sabe que tienen un padre igual a el padre del padre del bloque actual.

Sin embargo, no hay diagrama (una oportunidad para la comunidad).

Vamos, pensé que a ustedes les iría mejor con esta explicación.

Aquí hay una imagen del artículo de V sobre estructuras de datos para clientes ligeros:

https://blog.ethereum.org/2014/02/18/ethereum-scalability-and-decentralization-updates/

ingrese la descripción de la imagen aquí

Lo anterior es una abstracción de un árbol de Merkle. Prefiero buscar la estructura del bloque Ethereum (incluidos todos los campos de encabezado reales).

Vitalik Buterin da una respuesta compacta:

Cada encabezado de bloque en Ethereum contiene 3 árboles para tres tipos de objetos: transacciones, recibos (esencialmente, datos que muestran el efecto de cada transacción), estado.

Puede leer una versión más larga con imágenes aquí .

Extrapolando a partir de la estructura de bloques sintácticos, también podemos preguntarnos cómo es la estructura semántica del estado mundial de ethereum. Utilizo este diagrama para explicar la relación entre "en cadena", "fuera de cadena" y todo lo demás, incluidas las soluciones de escalado L2. Consulte la publicación de blog adjunta para obtener más detalles.

ingrese la descripción de la imagen aquí