comienzo
comienzo

Uno de los muchos mecanismos que permiten que Bitcoin funcione correctamente es la cadena de bloques. Como habrás descubierto en los artículos del blog de Bitstack, la cadena de bloques permite evitar el doble gasto de una misma moneda de bitcoin (lo que se denomina UTXO).
Como su nombre indica, esta cadena de bloques está formada por bloques. En este artículo, exploramos qué son realmente los bloques de Bitcoin y cómo se construye cada bloque.
La cadena de bloques es un registro que enumera todas las transacciones de Bitcoin. Se utiliza en el protocolo para que cada usuario esté al tanto de las transacciones pasadas. Gracias a esto, podemos demostrar la inexistencia de un gasto previo de bitcoins y, por lo tanto, evitar el doble gasto.
Este concepto se explica de forma muy sencilla en el Libro Blanco sobre Bitcoin de Satoshi Nakamoto con la famosa frase:» La única forma de confirmar la ausencia de una transacción es estar al tanto de todas las transacciones. »
El objetivo de este registro es, por lo tanto, marcar la hora de las transacciones pasadas. Para poder dedicar una hora a esta información, la agrupamos en bloques. Cada bloque incluye la huella digital del bloque que lo precede para que sea inalterable, creando una especie de cadena. Por eso hablamos de blockchain, o «blockchain» en inglés.

➤ Obtenga más información sobre el papel de la cadena de bloques en Bitcoin.
Un bloque de Bitcoin se compone principalmente de dos partes distintas. La primera es su cabecera, que contiene 80 bytes de metadatos. La segunda es la lista de transacciones ejecutadas.
Desde la actualización de SegWit de 2017, el tamaño de un bloque está determinado por una unidad virtual llamada peso. El peso de un bloque se calcula sumando su tamaño real, hasta tres veces su tamaño, pero sin testigos (firmas). El límite máximo es de 4 millones de unidades de peso. Por lo tanto, en teoría, un bloque SegWit de Bitcoin puede tener un tamaño real máximo de poco menos de 4 MB. Sin embargo, el tamaño medio real de los bloques normalmente ha fluctuado entre 1 y 2 MB desde 2017.
La llegada del protocolo Ordinals a Bitcoin a principios de este año 2023 afectó al alza a esta media. Desde febrero, los bloques de Bitcoin han tenido un tamaño medio real cercano a los 3 MB.
La parte principal de un bloque de Bitcoin es su encabezado. Cuando hablamos de la huella digital de un bloque, o de su hash, es precisamente su cabecera la que hemos pasado dos veces en la función de hash SHA256.
Para entender la composición del encabezado de un bloque, lo mejor es estudiar uno real. Aquí hay información sobre el bloque número 714 254, extraído por F2Pool el 15 de diciembre de 2021:
.png)
Si quieres hacer lo mismo en tu nodo de Bitcoin, ejecuta el comando «getblockheader» seguido de la huella digital del bloque deseado en bitcoin-cli.
Gracias a este comando, descubrimos varios elementos sobre el bloque estudiado. No toda esta información está incluida en la cabecera. El encabezado real del bloque se compone de solo 6 elementos:

Un encabezado de bloque de Bitcoin contiene solo estos 6 elementos. El pedido getblockheader Sin embargo, recibimos otra información que puede ser interesante analizar, pero que en realidad no forma parte del encabezado en sí:
Ahora que hemos estudiado la primera parte del bloque, es decir, su cabecera, veamos juntos la segunda parte del bloque de Bitcoin.
Las transacciones en un bloque de Bitcoin no se enumeran simplemente una tras otra. En cambio, se organizan en un acumulador criptográfico llamado «árbol de Merkle». Esto permite generar una raíz de Merkle, que es un resumen muy pequeño de todas las transacciones del bloque.
Su principio es bastante sencillo de entender. Cada transacción pasa primero por una función hash. Los hashes resultantes se concatenan de dos en dos (es decir, se ponen de extremo a extremo). Luego, se vuelven a pasar por una función hash. Continuamos este proceso de esta manera hasta que obtengamos un único hash llamado «Merkle root».

Como se vio anteriormente, esta raíz de Merkle se incluye luego en el encabezado del bloque. Esto permite que todas las transacciones se representen de forma resumida en el encabezado. Por lo tanto, la más mínima modificación de una transacción pasada cambia el árbol de Merkle, por lo que también cambia la raíz de Merkle y, por lo tanto, cambia el encabezado del bloque y su tamaño. Como esta huella digital se utiliza en el siguiente bloque, la más mínima modificación de una transacción pasada acaba por romper la cadena de bloques de Bitcoin.
Desde 2017 y la introducción de SegWit, los bloques de Bitcoin contienen en realidad 2 árboles de Merkle. El primero contiene las transacciones sin su testigo, y el segundo contiene el testigo de cada transacción. La raíz del segundo árbol de Merkle se incluye en la transacción de Coinbase para que se puedan detectar los cambios.

📌 La transacción de coinbase es la primera transacción del bloque de Bitcoin. Permite al minero ganador recolectar los bitcoins que se le adeudan como recompensa por su trabajo minero. Está compuesto por la recompensa de coinbase, que emite nuevos bitcoins, y las comisiones de transacción incluidas en el bloque.
De aquí proviene el nombre «SegWit», que son las siglas de «Testigo segregado», que en francés significa «testigo separado».
En el diagrama de arriba, podemos ver que los testigos, denominados «WTX», tienen su propio árbol de Merkle. La raíz de este árbol se coloca en la transacción de coinbase. Las transacciones sin testigos también tienen su propio árbol de Merkle. La raíz del segundo árbol se coloca en la cabecera del bloque. Por lo tanto, todas las partes de todas las transacciones del bloque se condensan en el encabezado.
La cadena de bloques se usa en Bitcoin para evitar el doble gasto. Actúa como un servidor de marcas de tiempo. Por lo tanto, un bloque es simplemente una agrupación de transacciones de Bitcoin con algunos metadatos. Su estructura se divide principalmente en dos espacios: el encabezado y los árboles de Merkle.
La cabecera de un bloque se compone de 6 elementos: la versión, la huella del bloque anterior, la raíz de Merkle, la marca de tiempo, el objetivo de dificultad y el nonce.
Las transacciones, por otro lado, se agrupan en un árbol de Merkle. Este acumulador criptográfico produce una raíz que se incrementa en la cabecera del bloque para poder vincularlo todo.

