¿Cómo el encadenamiento de bloques protege contra la alteración de datos?

Estoy confundido con el encadenamiento de bloques, ya que sé que un encabezado de bloque contiene una referencia al hash de encabezado de bloque anterior con la raíz de Merkle y otros campos. Este hash de encabezado está relacionado (computado) con el encabezado y no incluye el bloque de transacciones, por lo que si se manipula el encabezado, la cadena fallará. Lo entendí, pero si se editan las transacciones en el bloque, no cambiará el hash del encabezado solo si se vuelve a calcular la raíz de Merkle.

Mi pregunta es cuando un nodo recibe un bloque, ¿cómo lo verifica (simplemente rehaciendo el encabezado o recalculando la raíz de Merkle primero y luego rehaciendo el encabezado)?

Respuestas (1)

La raíz de Merkle es parte del encabezado del bloque y se calcula en función de las transacciones incluidas en el bloque. Si se cambian las transacciones en el bloque, cambiaría la raíz Merkle en el encabezado. Si se cambia la raíz de Merkle, el encabezado del bloque cambiará y el hash del encabezado que se calculó inicialmente ya no será válido.

Cuando un nodo recibe un bloque, ¿cómo lo verifica (simplemente rehaciendo el encabezado o recalculando la raíz de merkle primero y luego rehaciendo el encabezado)?

Cuando un nodo completo recibe un bloque, realiza varias comprobaciones para asegurarse de que el bloque se ajusta a las reglas de consenso. Esto incluye verificar que todas las transacciones en el bloque sean válidas. Si alguna transacción en particular no es válida, el bloque completo será rechazado por el nodo completo. Después de la verificación de las transacciones, el nodo completo verificaría el hash Merkle. Luego, el nodo completo mirará el encabezado del bloque y verificará la regla de marca de tiempo, el hash del bloque anterior y otros componentes y luego calculará el hash del encabezado del bloque y verificará si es menor que el objetivo. Si una de las reglas de verificación falla, el nodo rechazará el bloque. Puede encontrar una lista completa de reglas de verificación de bloqueo aquí.

ok, lo tengo ahora, me faltaban estas reglas de verificación. Estabas hablando de nodos completos, ¿qué pasa con otros nodos simples, también hacen estas verificaciones?
Los nodos de verificación de pago simple (SPV) que utilizan muchas billeteras livianas descargan solo los encabezados de los bloques y no las transacciones incluidas en cada bloque. Los nodos SPV se basan en un método de verificación ligeramente diferente y se basan en pares para proporcionar vistas parciales de las partes relevantes de la cadena de bloques a pedido. Los nodos SPV vinculan la transacción y el bloque que la contiene utilizando la ruta Merkle. Por lo tanto, no tiene una visibilidad completa de la cadena de bloques, pero, sin embargo, no se puede engañar para que suponga que una transacción está incluida en un bloque cuando en realidad no lo está.