Mastering Bitcoin
9. La Cadena de Bloques » Enlazando Bloques en la Cadena de Bloques
Página 64 de 98
Enlazando Bloques en la Cadena de Bloques
Los nodos completos de bitcoin mantienen una copia local de la cadena de bloques, comenzando en el bloque génesis. La copia local de la cadena de bloques se actualiza constantemente a medida que se encuentran y se utilizan nuevos bloques para extender la cadena. A medida que un nodo recibe bloques entrantes desde la red, validará estos bloques y luego los enlazará a la cadena de bloques existente. Para establecer un enlace, un nodo examinará la cabecera del bloque entrante buscando el «hash del bloque anterior».
Supongamos, por ejemplo, que un nodo tiene 277.314 bloques en la copia local de la cadena de bloques.
El último bloque que el nodo conoce es el bloque 277.314, con un hash de cabecera de bloque de 00000000000000027e7ba6fe7bad39faf3b5a83daed765f05f7d1b71a1632249.
El nodo bitcoin recibe después un nuevo bloque de la red, que se analiza de la siguiente manera:
{
"size" : 43560,
"version" : 2,
"previousblockhash" :
"00000000000000027e7ba6fe7bad39faf3b5a83daed765f05f7d1b71a1632249",
"merkleroot" :
"5e049f4030e0ab2debb92378f53c0a6e09548aea083f3ab25e1d94ea1155e29d",
"time" : 1388185038,
"difficulty" : 1180923195.25802612,
"nonce" : 4215469401,
"tx" : [
"257e7497fb8bc68421eb2c7b699dbab234831600e7352f0d9e6522c7cf3f6c77",
#[… muchas otras transacciones omitidas …]
"05cfd38f6ae6aa83674cc99e4d75a1458c165b7ab84725eda41d018a09176634"
]
}
Interpretando este nuevo bloque, el nodo encuentra el campo previousblockhash, que contiene el hash de su bloque padre. Es un hash que el nodo ya conocía, y que corresponde al último bloque en la cadena, a la altura de 277.314. Por lo tanto, este nuevo bloque es un hijo del último bloque de la cadena y extiende la cadena de bloques existente. El nodo añade este nuevo bloque al final de la cadena, añadiendo a la cadena de bloques una nueva altura de 277.315. Bloques enlazados en una cadena, por referencia al hash de la cabecera del bloque anterior muestra la cadena de tres bloques, enlazados por referencias en el campo previousblockhash.