Conocimientos relacionados con blockchain

1. Lista hash:

Al realizar la transmisión de datos en una red de igual a igual, descargaremos datos de varias máquinas al mismo tiempo, y muchas de estas máquinas pueden considerarse inestables o poco confiables. Cuando la red peer-to-peer transmite datos, en realidad corta un archivo relativamente grande en pequeños bloques de datos. La ventaja de esto es que si una pequeña parte de los datos se daña durante la transmisión, solo necesito volver a descargar esta parte de los datos en lugar de volver a descargar el archivo completo. Esto requiere que cada bloque de datos tenga su propio hash. Antes de descargar los datos reales, primero descargamos una lista de hashes. El valor hash de cada bloque pequeño se junta y luego se realiza una operación hash en toda la cadena larga. El resultado final es el hash raíz de la lista hash, que se puede usar para verificar la lista hash Cada hash es correcto , que a su vez garantiza la exactitud de cada bloque de datos descargado.

2. Características del árbol de Merkle:

Merkle Tree es un árbol construido en base a datos HASH.

  1. La estructura de datos es un árbol, que puede ser un árbol binario o un árbol de múltiples bifurcaciones (árbol binario para análisis).

  2. El valor del nodo hoja del Merkle Tree es la unidad de datos o la unidad de datos HASH del conjunto de datos.

  3. El valor de un nodo sin hoja de Merke Tree es el valor HASH de todos sus valores de nodo secundario.

árbol de etiquetas

3. Árbol Merkle:

1) El árbol de Merkle en la cadena de bloques es un árbol binario que se utiliza para almacenar información de transacciones. Cada transacción se empareja en pares para formar los nodos hoja del árbol de Merkle y luego generar todo el árbol de Merkle.

2) El árbol Merkle permite a los usuarios verificar si una transacción está incluida en un bloque a través de la raíz del árbol Merkle obtenida del encabezado del bloque y la lista de valores hash intermedios proporcionados por otros usuarios. No es necesario confiar en el usuario que proporciona el valor hash intermedio, porque el costo de falsificar el encabezado del bloque es muy alto y, si se falsifica el valor hash intermedio, la verificación fallará.

3) En la cadena de bloques, el árbol de Merkle actúa como un papel representativo, y toda la información de transacciones en un bloque se resume en él, lo que mejora en gran medida la eficiencia de la cadena de bloques. ** Entonces, ¿por qué usar un árbol de Merkle en la cadena de bloques? **Tome Bitcoin como ejemplo para explicar: Todas las transacciones generadas en la red de Bitcoin deben empaquetarse en bloques. En circunstancias normales, es muy común que un bloque contenga cientos o miles de transacciones. Debido a la naturaleza descentralizada de Bitcoin, cada nodo de la red debe ser independiente y autosuficiente, es decir, cada nodo debe almacenar una copia completa de la cadena de bloques. Por lo tanto, un nodo completo en la red de Bitcoin necesita almacenar y procesar los datos de todos los bloques. A medida que la gente lo use, la cantidad de datos aumentará. Con el espacio cada vez mayor requerido por el nodo completo, estas reglas son cada vez más difíciles de seguir para las personas ¿Es necesario que todos ejecuten un nodo completo? También hay nodos que son participantes completos en la red blockchain. Deben cumplir con el hecho de que los nodos deben verificar transacciones y bloques. Además, quieren interactuar con otros nodos y descargar nuevos bloques. También hay ciertos requisitos para el tráfico de red. Nodos deben Hacerlo será cada vez más problemático e ineficiente. Entonces, Satoshi Nakamoto propuso una solución a este problema en el libro blanco de Bitcoin: Verificación de pago simplificada (SPV) . SPV es
un nodo ligero de Bitcoin, es decir, una billetera liviana de Bitcoin que la mayoría de nosotros instalamos en nuestras computadoras. En teoría, para verificar una transacción, la billetera necesita atravesar todos los bloques para encontrar las transacciones relacionadas con la transacción. Es confiable para verificar todas las transacciones una por una. Pero con SPV, no hay tal problema, no necesita descargar los datos de toda la cadena de bloques de forma sincrónica, es decir, puede verificar el pago sin ejecutar el nodo completo y no necesita verificar los bloques y las transacciones. el usuario solo necesita guardar todos los encabezados de los bloques. Cabe señalar aquí que SPV enfatiza la verificación del pago, no la verificación de las transacciones. Estos
dos conceptos son diferentes. La verificación del pago es relativamente simple, solo necesita juzgar si la transacción utilizada para el pago ha sido verificada y cuántas veces ha sido confirmada por la red (es decir, cuántos bloques se superponen). Sin embargo, la verificación de transacciones es mucho más complicada, necesita verificar si el saldo de la cuenta es suficiente para el gasto, si hay un pago doble, si se pasa el script de transacción, etc.

árbol de merkle

El encabezado del bloque contiene los atributos necesarios del bloque, que tiene un tamaño de solo 80 bytes, mientras que el cuerpo del bloque contiene cientos de transacciones, y cada transacción generalmente tiene un tamaño de más de 400 bytes.

4. Árbol Merkle en Bitcoin:

1) El encabezado del bloque contiene el valor hash del nodo raíz, mientras que los nodos intermedios, los nodos hoja y los datos básicos se colocan en el cuerpo del bloque.

2) El árbol de Merkle en la red de bits es un árbol binario, por lo que necesita un número par de nodos hoja. Si solo se necesita resumir un número impar de transacciones, la última transacción se copiará para formar un número par de nodos de hoja.Este
árbol con un número par de nodos de hoja también se denomina árbol equilibrado.
árbol merkle en bitcoin

5. Otros escenarios de aplicación del árbol de Merkle:

1) Los escenarios de aplicación del árbol Merkle son realmente muy amplios, y el típico es la descarga P2P. Cuando los datos se transmiten en una red de igual a igual, los datos se descargarán de varias máquinas al mismo tiempo, y muchas máquinas pueden considerarse inestables o poco confiables. Para verificar la integridad de los datos, una mejor manera es dividir el archivo grande en pequeños bloques de datos (por ejemplo, dividirlo en bloques de datos de 2K). La ventaja de esto es que si una pequeña parte de los datos se daña durante la transmisión, solo necesita volver a descargar estos datos rápidos en lugar de volver a descargar el archivo completo.

2) Además de la descarga P2P, los árboles de Merkle también se pueden usar para comparar rápidamente una gran cantidad de datos , porque cuando dos raíces de árboles de Merkle son iguales, significa que los datos representados deben ser los mismos. También se puede utilizar para implementar pruebas de conocimiento cero .

La prueba de conocimiento cero significa que el probador puede convencer al verificador de que cierta afirmación es correcta sin proporcionar ninguna información útil al verificador. Por ejemplo, si quiere que le demuestre que poseo cierta llave. En este momento, no necesito mostrarle la llave directamente, pero use esta llave para desbloquear y mostrarle algo en el gabinete. Demostrar que poseo esta llave

6. Estructura del bloque:

Cada bloque consta principalmente de dos partes, el encabezado del bloque y el cuerpo del bloque. El encabezado del bloque se usa principalmente para almacenar algunos atributos relevantes del bloque, y el cuerpo del bloque se usa para almacenar registros de datos de transacciones reales. Un bloque conecta el bloque principal y el bloque secundario antes y después.
estructura de bloque

7. Cuerpo del bloque:

El cuerpo del bloque incluye todos los registros de transacciones generados durante el proceso de creación del bloque que han sido verificados en el bloque actual. Estos registros generan un Merkle único a través del proceso de hashing del árbol, la raíz y el registro de Merkle en el encabezado del bloque.

estructura de bloques

8. Tres conjuntos de datos incluidos en el encabezado del bloque:

1) Primero, los datos del valor hash del bloque principal. Creo que se puede entender como genes.

2) Segundo, valor de dificultad de minería, marca de tiempo del bloque y Nonce. Este conjunto de datos registra contenido relacionado con la minería.

3) Tercero, la raíz del árbol Merkle. Esto es algo mágico, que puede entenderse como los datos que describen todas las transacciones en el bloque.
bloque de datos de encabezado

La razón por la que la cadena de bloques se llama cadena es porque su estructura es una estructura de datos conectada en orden desde atrás hacia adelante, como una cadena cuya cola siempre se alarga.

Entonces, ¿qué causó que este dato se conectara de manera tan ordenada de atrás hacia adelante?
Esto depende del valor hash del bloque principal.

El llamado valor hash del bloque padre es el valor hash del encabezado del bloque del bloque padre. Como se puede ver en la Tabla 2, el encabezado del bloque contiene varios datos, el tamaño es de 80 bytes y los datos de 80 bytes se codificarán para obtener una cadena de 32 bytes, esta cadena de 32 bytes es el hash del encabezado del bloque.

Supongo que te gusta

Origin blog.csdn.net/qq_48826058/article/details/124328611
Recomendado
Clasificación