# 16 - <font color="#F7A004">Soft Fork</font>
> Conectando bloques en la blockchain

Campo Previous Block: Es el eslabón que mantiene unida la cadena-
-> El campo de bloque anterior en el encabezado del bloque contiene el hash de un bloque anterior sobre el cual se construye el bloque .
-> Cada bloque se vincula a un bloque anterior, creando de esa manera una cadena de bloques, como se conoce más comúnmente, blockchain.
## 1️⃣ Ejemplo
> A continuación se muestran los 5 bloques principales de la cadena de bloques. Si los revisas, verás que cada uno contiene el hash del bloque inferior en sus encabezados.

> [!Tip]
Puedes revisar cada bloque de la cadena de bloques desde su extremo hasta el inicio de toda la cadena.
> [!Note]
El término cadena de bloques (blockchain) no es una metáfora: es literalmente una estructura de datos conectada criptográficamente donde cada bloque es un nodo que apunta al hash del anterior.
## 2️⃣Uso
Al construir un bloque candidato, un minero colocará el hash del bloque de la punta actual de la cadena de bloques en el campo del bloque anterior.
-> El campo Previous Block Hash dentro del (block header) almacena el hash SHA-256d del bloque anterior.
-> Es un identificador único (de 32 bytes) que permite encadenar todos los bloques desde el génesis hasta el más reciente.

Todos los mineros quieren extender la cadena de bloques más larga conocida actualmente, porque la cadena más larga es la que todos los nodos adoptan como versión canónica (reconocida/aprobada) de la cadena de bloques, y solo pueden cobrar la recompensa del bloque si este llega a 100 bloques de profundidad en la cadena más larga.
> [!Tip]
Puede encontrar el bloque en la punta actual de la cadena de bloques ejecutando
:::success
bitcoin-cli getbestblockhash
:::
> [!Caution]
Todos los bloques deben basarse en un bloque previo existente. Si se introduce un hash en el campo de bloque previo de un bloque inexistente, este será inválido y será excluido por los nodos de la red.
## 3️⃣ Objetivo
¿Por qué los bloques contienen el hash de un bloque anterior?
-> Su objetivo es Garantizar la integridad histórica del sistema.
El campo de bloque anterior es lo que conecta los bloques entre sí en la cadena de bloques.
Un hash de bloque es una referencia única para un bloque y se determina por su contenido. Por lo tanto, al incluir el hash de un bloque anterior en el encabezado del bloque, se puede crear una cadena de datos fiable, donde cada fragmento de datos (es decir, bloque de transacciones) está vinculado al anterior.

La cadena de bloques es simplemente una cadena de bloques conectados por hashes de bloque.
Entonces, si intentas modificar el contenido de un bloque más antiguo (por ejemplo, reemplazando y/o eliminando una transacción), esto cambiará el hash de ese bloque y ya no será parte de la misma cadena de bloques, porque el bloque que se construye sobre él ya no hará referencia a él.
> [!Important]
Este mecanismo no sólo protege la historia, sino que también define el consenso más largo válido (la cadena con más Proof-of-Work acumulado.

Si cambias uno de los hashes de bloque lo estás eliminando de la cadena.
Básicamente, esta cadena de hashes de bloques es lo que impide que alguien retroceda en el tiempo y modifique la cadena de bloques. Si lo hiciera, los nodos ignorarían el bloque modificado, ya que no formaría parte de la cadena más larga conocida.
Esto es lo que la gente quiere decir cuando se refiere a la cadena de bloques como un "libro contable inmutable".
> [!Note]
inmutable: Aquello que es inmutable nunca cambiará y/o no se puede cambiar.
## 4️⃣Bloque Génesis
El bloque génesis es único porque su campo de bloque anterior contiene solo ceros . Esto se debe a que es el primer bloque de la cadena de bloques, por lo que no existe un "bloque anterior" sobre el cual construir.
Ese es el único dato interesante que tengo sobre el campo de bloque anterior en el encabezado del bloque.
> [!Note]
Ese bloque no puede ser modificado ni referenciado nuevamente, pero es la base de toda la estructura criptográfica de Bitcoin.
## 5️⃣ Seguridad
Los nodos verifican que el hash del bloque anterior coincida exactamente con el registrado.
Esto asegura la continuidad del consenso y evita bifurcaciones falsas.
> [!Note]
El hash de cada bloque se calcula sobre todo su encabezado, incluyendo el previous block hash.
Por eso cualquier cambio en el pasado disapara un efecto dominó: cambia un bit -> cambia el hash -> invalida la cadena.
-> Esta relación hash-encadenada más la Proof-of-Work crean lo que se conoce como seguridad acumulativa: cada nuevo bloque hace mas fuerte (válidos) de todos los anteriores.
### Relación con la Prueba de Trabajo (PoW)
El encadenamiento por hash sería insuficiente sin PoW, ya que un atacante puede rearmar bloques falsos fácilmente.
Pero al requerir una enorme cantidad de cómputo, rehacer la historia es prácticamente imposible.
## 6️⃣ Datos
Cada bloque añade aproximadamente 2^32 intentos de hash (nonce + extraNonce), lo que representa recursos + tiempo invertidos.
Para alterar un bloque del pasado, se necesitaría rehacer ese trabajo y superar a la cadena verdadera.