Colección de citas famosas - Colección de poesías - ¿Cómo entienden los recién llegados los cálculos hash en blockchain?

¿Cómo entienden los recién llegados los cálculos hash en blockchain?

¿Cómo entienden los novatos los cálculos hash en blockchain?

Cuando estaba investigando blockchain, descubrí una palabra que seguía apareciendo como un fantasma, "hash" y "HASH" en inglés.

Estudiantes que digan "diarrea", ¡fuera! !

Se dice que este "hash" proviene de una función en criptografía. Intente buscar y encontrará montones de documentos, ya sean horizontales o verticales, ya sean tablas o imágenes, y todavía hay muchas personas que no pueden entender xyzabc. Hermano, sólo quiero saber los conceptos básicos de blockchain. ¿Por qué es tan difícil para mí? ! Mi contraseña más larga es 123456 y la más compleja es 654321. Cuando fue más complicado, agregué una A al final. ¡La complejidad que me escribiste claramente se siente como si mi poder cerebral se hubiera agotado y las células cerebrales restantes estuvieran muriendo en lotes! Para que los estudiantes novatos como yo sepan esto, no estoy dispuesto a explicar el cálculo de hash en un lenguaje tonto. No busco el más preciso, sino el más simple y fácil de entender. Comencemos:

# 1. ¿Qué es un algoritmo hash?

## 1. Definición: El algoritmo hash convierte una cadena de cualquier longitud en una cadena de longitud fija.

Se puede ver que se puede entender como ingresar una cadena de números para * * "operación hash", y generará una cadena de números * *.

Si definimos el "algoritmo más uno" nosotros mismos, entonces la entrada 1 y la salida 2 son 100 y 101;

Si definimos nuestro propio algoritmo de mayúsculas, entonces ingresamos "abc" y generamos "ABC".

¡Jaja, no me pegues todavía! En realidad, este es solo el concepto de función.

# 2. Características:

¿Cuáles son las características de este algoritmo hash en comparación con mi "algoritmo más uno" y mi "algoritmo de cambio de capitalización"?

1) *Cálculo determinista y rápido**: los resultados del cálculo son los mismos y la eficiencia del cálculo es alta.

2) **Irreversible* *: Indica que conociendo la salida no se puede inferir el valor de entrada.

3) **Resultados impredecibles* *: Indica que la entrada cambia poco y los resultados están al revés e irregulares.

En resumen, esta operación hash es una caja negra y una buena ayuda para el cifrado. Dices "1111", el cifrado es "b0bae 9d 279d 34 fa 1 fdf 71 aadb 908 c3f", dices "165438". De todos modos, la entrada y la salida están en el cielo y la tierra. Incluso si la entrada está relacionada, las dos salidas no están relacionadas.

# 2. El uso de operaciones hash en la cadena de bloques

## 1. Cifrado de datos

* *Los datos de las transacciones se cifran mediante operaciones hash, correspondientes a El valor hash se escribe en el encabezado del bloque**. Como se muestra en la figura siguiente, el encabezado del bloque contiene el valor hash del bloque anterior y el valor hash del siguiente bloque.

1), * *Identificar si los datos del bloque han sido manipulados* *: el valor hash de la cadena de bloques puede identificar de forma única y precisa un bloque, y cualquier nodo de la cadena de bloques puede pasar un hash simple Calcular el valor hash del bloque. El valor hash calculado no cambia, lo que significa que la información en la cadena de bloques no ha sido alterada.

2), * *Concatenar todos los bloques en una cadena de bloques* *: Cada bloque contiene el valor hash del bloque anterior y el valor del siguiente bloque, lo que equivale a concatenar el valor hash del bloque anterior. del bloque se engancha al final del bloque anterior, y el valor hash del siguiente bloque se engancha al comienzo de la siguiente cadena de bloques, formando así naturalmente una cadena de bloques con una estructura de cadena.

## 2. Dirección de transacción cifrada y hash

En el encabezado del bloque anterior, hay un valor hash de la raíz de Merkle. ¿Para qué se utiliza?

En primer lugar, ¿qué es la raíz de Merkle? Es la raíz de la estructura del árbol binario. ¿Qué es un árbol binario? ¿Qué es una raíz? Basta con mirar la imagen de abajo. Uno se puede dividir en dos, dos se pueden dividir en cuatro y cuatro se pueden dividir en ocho. Este es el llamado árbol binario. La raíz es el nodo de nivel superior, llamado raíz.

¿De dónde provienen estos datos raíz? Es tomar el hash de cada transacción en un bloque, luego hash en pares, luego hash, luego hash hasta llegar al máximo.

¿A qué se debe todo esto? ¿Qué hace?

1), * *Localice rápidamente cada transacción* *: debido a que las transacciones se almacenan linealmente, localizar una transacción requerirá un recorrido, lo cual es ineficiente y lento.

Puede localizar rápidamente la transacción requerida a través de dicho árbol binario.

Para dar un ejemplo inapropiado: ¿Cómo encontrar cualquier número entero entre 0-100? (Supongamos que la respuesta es 88) Entonces, una mejor manera es preguntar: 1. ¿Es mayor que 50 o menor que 50? 2. ¿Es mayor o menor que 75? 3. ¿Es mayor o menor que 88? Sólo unas pocas preguntas para encontrar respuestas rápidamente.

2), * *Verifique si los datos de la transacción han sido manipulados* *: Cualquier cambio numérico de la transacción al valor hash de cada árbol binario resultará en un cambio en el valor raíz de Merkle. Al mismo tiempo, si se produce un error, se puede localizar rápidamente.

#3, Minería

? ¡Hay un parámetro en el encabezado de nuestro bloque llamado * *número aleatorio Nonce, y el proceso de encontrar este número aleatorio se llama "minería" * *! Siempre que cualquier máquina en la red encuentre un número adecuado para llenar la posición Nonce de su propio bloque de modo que el valor hash de los datos en los seis campos (80 bytes) en el encabezado del bloque comience con 18 ceros, ¿quién encontrará? oro"! Como no podemos escribir un número que satisfaga 18 ceros por adelantado y luego deducir Nounce, la única forma es probar uno por uno comenzando desde cero para ver si el resultado cumple con los requisitos. Si no, intente con el siguiente hasta encontrarlo.

¿Qué buscas con este número? ¿De qué sirve hacer esto?

1), * *Busque bastante el ordenador con mayor potencia de cálculo* *: Es un poco como si tuviera un granito de arena aquí, y luego les digo que es igual que una de las playas, y encuentras el mismo. ¡La forma factible es elegir cada uno y compararlos! Entonces, la persona más rápida tendrá más probabilidades de llegar temprano a la playa. Esto se llama "prueba de trabajo". Primero encuentras la arena, creo que es la que más compara y la que más trabaja.

2), * *Ajuste dinámico de dificultad* *: Para garantizar que se genere un bloque en 10 minutos, Bitcoin calculará cada 2,065,438+06 bloques (2 semanas) para encontrar esto. La dificultad de el número nonce. Si el tiempo promedio de estos 2.065.438+06 bloques es menor a 10 minutos la dificultad aumentará, si es mayor a 10 minutos la dificultad disminuirá. De esta manera, no importa cómo cambie la potencia informática minera de toda la red, el número aleatorio nonce se puede calcular en 10 minutos.

# 3. ¿Qué es la operación hash?

Habiendo dicho tantas operaciones hash, parece que las operaciones hash son de un solo tipo, ¡pero en realidad no lo son! Como operación hash en criptografía, ha generado muchas escuelas y continúa desarrollándose. Después de ver "Man Tou Bao", todavía siento que el mecanismo interno es demasiado complicado. Lo enumero a continuación por el momento para que los blancos puedan tener una impresión y saber lo que está pasando.

Como se puede ver en la siguiente tabla, las operaciones hash también están en constante evolución, con varios algoritmos, y varias aplicaciones también aplican de manera flexible algoritmos únicos o múltiples. En el sistema Bitcoin, las operaciones DASH usan básicamente el algoritmo SHA256, mientras que Litecoin usa el algoritmo SCRYPT, la moneda Quark usa muchos algoritmos en serie y la moneda pesada (HAV) usa los siguientes algoritmos en paralelo, y cada parte está mezclada. La fase POW de Ethereum utiliza el algoritmo ETHASH y ZCASH utiliza el algoritmo EQUIHASH.

Cabe señalar que varios algoritmos para operaciones hash se actualizan y mejoran constantemente, y los algoritmos utilizados por varias monedas no son estáticos y se optimizan constantemente.

* *Resumen* *: Las operaciones hash se utilizan ampliamente en varios proyectos blockchain. Tomando Bitcoin como ejemplo, podemos ver que juega un papel extremadamente importante en *cifrado de datos, posicionamiento de datos de transacciones, minería, etc. Como rama de la criptografía, las operaciones hash se desarrollan y amplían constantemente. Como gente blanca común y corriente, queremos comprender algunos conceptos básicos de blockchain, y comprender este nivel es suficiente.