¿Cómo entienden los recién llegados los cálculos hash en blockchain?
Cuando estaba investigando blockchain, encontré una palabra que aparecía repetidamente como un fantasma, "hash" y "HASH" en inglés.
Estudiantes que digan "diarrea", ¡fuera de aquí! !
Se dice que este "hash" proviene de una función en criptografía. Intente buscar y encontrará montones de papeles, ya sea horizontal o verticalmente, 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. Lo que me escribiste es complicado y obviamente siento que mi capacidad cerebral se ha agotado y que las células cerebrales restantes están muriendo en lotes. Para que los estudiantes novatos como yo sepan esto, no estoy dispuesto a utilizar un lenguaje tonto para explicar los cálculos hash. No busco lo más preciso, sino lo 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 el algoritmo de mayúsculas nosotros mismos, ingresamos "abc" y generamos "ABC".
¡Jaja, no me pegues todavía! En realidad, es solo un concepto de función.
## 2. Función:
¿Cuáles son las características de este algoritmo hash en comparación con mi "algoritmo de incremento en uno" y "algoritmo de mayúsculas"?
1) **Velocidad de cálculo rápida y determinista**: 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**: Significa que la entrada cambia un 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 "B0 BAE 9d 279d 34 fa 1 DFD 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 en la cadena de bloques puede pasar un hash simple cálculo para obtener el valor hash de este 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, que es equivalente al valor hash del bloque anterior Enganche al final del bloque anterior y enganche el valor hash del siguiente bloque al encabezado de la siguiente cadena de bloques, formando así naturalmente una cadena de bloques estructurada en 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. Se llama árbol binario. La raíz es el nodo de nivel superior, llamado raíz.
¿De dónde provienen estos datos raíz? Simplemente obtenga el valor hash de cada transacción en un bloque, luego hágalo en pares, hágalo nuevamente, hágalo nuevamente, hasta alcanzar el valor superior.
¿Qué está pasando con todo este lío? ¿Qué hace?
1), * *Localice rápidamente cada transacción* *: Dado 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? 2. ¿Es mayor o menor que 75? 3. ¿Es mayor o menor que 88? Sólo unas pocas preguntas para encontrar rápidamente las respuestas.
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 provocará 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 completar la posición Nonce de su propio bloque, de modo que el valor hash de los datos en los 6 campos (80 bytes) del encabezado del bloque comience con 18 ceros, quien encuentre el "oro" ! Como no podemos escribir un número que satisfaga 18 ceros por adelantado y luego deducir Nounce, la única forma es comenzar desde cero e intentar uno por uno para ver si los resultados cumplen con los requisitos. Si no, intente con el siguiente hasta que lo encontremos. .
¿Por qué buscas este número? ¿De qué sirve hacer esto?
1), * * Equivale a encontrar la computadora con mayor poder de cómputo * *: Es un poco como si tuviera un granito de arena aquí, y luego les digo que es lo mismo que uno de las playas, y encuentras lo 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 carga de trabajo". Primero encuentras la arena. Creo que haces más comparaciones y haces más trabajo.
2), * *Ajuste dinámico de dificultad* *: Para garantizar que se genere un bloque en 10 minutos, Bitcoin calculará la dificultad de encontrar este número nonce cada 2016 bloques (2 semanas). Si el tiempo medio de estos bloques de 2016 es inferior a 10 minutos aumenta la dificultad, y si es superior a 10 minutos disminuye la dificultad. 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 "A Head Full of Bags", todavía siento que el mecanismo interno es demasiado complicado. Los enumeraré a continuación por ahora, 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 se desarrollan continuamente, con varios algoritmos, y varias aplicaciones también aplican de manera flexible algoritmos únicos o múltiples. En el sistema Bitcoin, la operación Dash básicamente usa el algoritmo SHA256, Litecoin usa el algoritmo SCRYPT, Quarkcoin usa una variedad de algoritmos para conectarse en serie y Heavycoin (HAV) usa el siguiente algoritmo para conectarse en paralelo, y todas las partes están mezcladas. . La fase POW de Ethereum utiliza el algoritmo ETHASH y ZCASH utiliza 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, ubicación de datos de transacciones, minería, etc. Como rama de la criptografía, las operaciones hash también 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.