---
# System prepended metadata

title: 'Capítulo 9: *"The Blockchain"*'
tags: [MB]

---

# Capítulo 9: *"The Blockchain"*

###### tags: `MB`
[TOC]

## Material Principal
Para esta sesión socrática, debes leer el [Capítulo 9: *"The Blockchain"*](https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch09.asciidoc) del Libro **Mastering Bitcoin**.  Estos son los enlaces a la versión del [libro en inglés](https://github.com/bitcoinbook/bitcoinbook) y la versión del [libro en español](https://drive.google.com/file/d/18NDHehFLGBDi_EVQQ59wQ2I99cvrrTJZ/view?usp=sharing). **Se recomienda leer en inglés, ya que es la versión más actualizada y completa**, pero es tu elección. Hemos estructurado las sesiones de acuerdo con los capítulos del libro en inglés.
:::info
:bangbang: **Importante:** Los términos técnicos siempre se dirán en inglés para facilitar el aprendizaje del idioma y la inmersión en el desarrollo de software de Bitcoin y LN. [Ver metodología de traducción](https://docs.google.com/document/d/1uPy771hf2xUElcaOR_Sk9NTqODeg9QZENYWL9leQc1g/edit?usp=sharing).
:::

## Lecturas complementarias
| Contenido | Tiempo (min) |
|:-------- |:--------:|
|[Blockchain](https://en.wikipedia.org/wiki/Blockchain)|  90|
|[What Is a Blockchain?](https://river.com/learn/what-is-a-blockchain/)| 60|
|[Initial Block Download (IBD)](https://river.com/learn/terms/i/initial-block-download-ibd/)| 30|


## Preguntas de aprendizaje
:::warning
🛑 Antes de resolver las preguntas del capítulo, revisa las instrucciones de trabajo de la sesión [aquí](https://hackmd.io/E5ZmWkcZRXi5K77gw0CVlg#Instrucciones-de-aprendizaje)
:::
1. What is a blockchain?
2. How do nodes share the blockchain?
3. Where are the blocks stored?; Are the blocks ordered in this storage?
4. What is a parent block, and what are the child blocks?
5. What does a block header contain? 
6. How do you get a block hash?
7. What is Nonce? What is it for?
8. What is a candidate block?
9. How are blocks linked in the blockchain?
10. What’s a Merkle Tree? How does it work? How are they created?
11. How does Merkle Tree work in SPV nodes?
12. The genesis block contains a hidden message within it. What field was used for this, and what are some other examples of this field being used? Do you think superfluous data should be allowed in the blockchain?
13. How much data would be required to calculate a Merkle path for a tree with 4 transactions?
14. What is _signet_ and how is it different than _testnet_ and _regtest_?

:::spoiler _En español_
1. ¿Qué es una cadena de bloques?
2. ¿Cómo comparten los nodos la cadena de bloques?
3. ¿Dónde se almacenan los bloques? ¿Los bloques van ordenados en ese almacenamiento?
4. ¿Qué es un bloque padre y cuáles son los bloques hijos?
5. ¿Qué contiene un encabezado de bloque?
6. ¿Cómo se obtiene el hash de un bloque?
7. ¿Qué es el nonce?, ¿para qué sirve?
8. ¿Qué es un bloque candidato?
9. ¿Cómo se vinculan los bloques en la cadena de bloques?
10. ¿Qué es un Merkle Tree, cómo funciona, y cómo se crea?
11. ¿Cómo funciona el Merkle Tree en los nodos SPV?
12. El bloque génesis contiene un mensaje oculto en él. ¿Que campo se utilizó para esto y qué otros ejemplos hay del uso de este campo? ¿Crees que la información trivial debería ser permitida en la blockchain?
13. ¿Cuánta información se requiere para calcular un path de Merkle para un árbol de 4 transacciones?
14. ¿Qué es la _signet_ y como difiere de _testnet_ y _regtest_?
:::

## Ejercicios
:::info
1. Create a diagram showing ++how Merkle Trees work++ and share it with your study partners. 
2. Create a diagram showing the ++contents of the block header++ and share it with your study partners.
3. On your Bitcoin node, do the following:
- Locate the block hash of the genesis block and display the contents of the sole transaction of this block.
```sass
bitcoin-cli getblock <block-hash>
bitcoin-cli getrawtransaction <tx>
```
- Why do you think that message is displayed?
- How do you think you could display the content of this transaction? 
:bulb: **Tip:** The command _"bitcoin-cli help <command>"_ shows the verbose options of any command.
4. If you could display the content of the coinbase transaction of the genesis block, locate the input script of the transaction, and introduce it in the following command (for Linux or macOS) What is the result of this command?
``` sass
echo "script_content_goes_here" | xxd -r -p
```
:::
:::spoiler _En español_
:::info
1. Crea un diagrama de ++cómo funcionan los Merkle Trees++  y compártelo  con tus compañeros. 
2. Crea un diagrama del ++encabezado del bloque++ y compártelo con tus compañeros
3. En tu nodo de bitcoin realiza lo siguiente:
- Localiza el hash del bloque génesis y visualiza el contenido de la única transacción de este bloque.
```sass
bitcoin-cli getblock <block-hash>
bitcoin-cli getrawtransaction <tx>
```
- ¿Por qué crees que manda el mensaje al visualizar la transacción?
- ¿Cómo crees que podrías vistualizar la transacción del bloque génesis? 
:bulb: **Tip:** El comando _"bitcoin-cli help <comando>"_ te muestra las opciones de verbose de cualquier comando.
4. Si lograste visualizar el contenido de la transacción coinbase del bloque génesis, localiza el script de entrada de la transacción e introdúcelo en el siguiente comando (en Linux o macOS) ¿Cuál es el resultado del comando?:
    
``` sass
echo "aqui_va_el_contenido_del_script" | xxd -r -p
```
:::

