Básico de Bitcoin Minería de Bitcoin

¿Qué Es Un Bloque De Bitcoin?

Que son los bloques de BTC

Los bloques de Bitcoin son archivos donde la información de la red de Bitcoin es registrada de forma permanente. Aquí se almacenan las más recientes, o todas, las transacciones que no han sido puestas en un bloque anteriormente.

De esta forma, un bloque puede ser visto como una página de un libro contable o registro, que, una vez es llenado con transacciones, se pasa a la siguiente página.

El bloque de Bitcoin es un lugar para almacenar de forma permanente los registros una vez que han sido escritos, ya que no pueden ser modificados o eliminados una vez que han sido agregados a la blockchain.

¿Cómo funcionan los bloques de Bitcoin?

La red de Bitcoin procesa varias transacciones diarias durante un día normal. Por eso es importante mantener un registro de todas las transacciones válidas para ayudar a los usuarios a realizar pagos y a tener un registro de quien envió a quién.

Las transacciones que se ejecutaron en Bitcoin son registradas en un archivo que se conoce como bloque, que es la fuente principal de la tecnología blockchain (también conocida como tecnología de cadena de bloques).

Dentro de un bloque no solo tenemos la información del presente, con las transacciones válidas actuales, sino también una mirada al pasado y al futuro de la red.

Cada vez que un bloque se completa, este se vuelve parte de la cadena, uniéndose a los anteriores y confirmándolos, y sentando las bases para los bloques futuros.

El bloque registra las transacciones de forma permanente y hace más difícil que se puedan modificar las transacciones antiguas.

Esto se debe a que el nuevo bloque tiene una referencia al anterior, formando una cadena y haciendo más difícil que el día de mañana pueda llegar otro bloque con otras transacciones a ocupar ese lugar.

Se trata de una parte fundamental de la cadena de bloques y lo que le brinda su seguridad, haciendo prácticamente imposible que una transacción sea revertida luego de que su bloque tenga muchos bloques por encima.

Cadenas de bloqus en Bitcoin

En el caso de la imagen de arriba, B2 no tiene el sustento para formar parte de la cadena de bloques, ya que no tiene otros bloques unidos a él, como si ocurre con el bloque B y la cadena que forma con C y D.

¿Cómo es la estructura de un bloque en Bitcoin?

Como vimos, un bloque tiene dentro suyo las transacciones que los usuarios desean enviar, pero también cuenta con otra información propia de este.

Si utilizamos un comando en un nodo de Bitcoin (¿qué son los nodos?) para obtener un bloque, nos arrojará una información que para nosotros es imposible de leer:

0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff7f20020000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

Este es el bloque génesis, y ahora vamos a ver como entenderlo de una forma sencilla, ya que cuenta con tres secciones principales:

  1. Cabecera
  2. Contador
  3. Transacciones

¿Qué Es La Cabecera De Un Bloque De Bitcoin?

La cabecera de un bloque es usada para identificar un bloque en particular dentro de la cadena de bloque. También es transformada en un hash en repetidas ocasiones para crear la prueba de trabajo que necesita la minería y cambio obtener recompensas.

Sabemos que una cadena de bloques consiste en una serie de bloques que son utilizados para almacenar la información relacionada con las transacciones que ocurren en la red.

Cada uno de estos bloques contiene una cabecera única, y cada bloque es identificado con el hash de su cabecera.

¿Para qué sirven las cabeceras en los bloques de Bitcoin?

Las cabeceras del bloque de Bitcoin contiene información importante del bloque, los cuales finalmente tienen las transacciones que se llevan a cabo en la red de esta criptomoneda.

Estas se dividen en 6 campos que proveen en detalle un resumen del bloque.

CampoTamañoInformación
Versión4 bytesLittle-endian
Hash del bloque previo32 bytesBig-endian
Raíz del árbol de Merkle32 bytesBig-endian
Marca de tiempo4 bytesLittle-endian
Bits4 bytesLittle-endian
Nonce4 bytesLittle-endian

Además de la cabecera, los bloques también cuentan con las transacciones normales y las de tipo coinbase, que son partes separadas del bloque.

Cada cabecera es única y criptográficamente segura, lo que le da una propiedad de inmutabilidad, es decir que son difíciles de modificar.

Las cabeceras de los bloques se serializan con una longitud total de 80 bytes. A partir de allí, se realiza un hashing que es parte del algoritmo de consenso llamado Prueba de Trabajo (PoW por sus siglas en inglés) que se utiliza para la minería de Bitcoin.

Durante este proceso, la cabecera se convierte en parte de las reglas de consenso que los mineros deben seguir como parte del mecanismo de consenso.

Los mineros son nodos completos que participan de este protocolo en donde los bloques son validados y a cambio obtienen recompensa en forma de BTC.

Para eso deben pasar la cabecera por una función hash llamada SHA-256 y así obtener el hash, que comparan con un nonce (que veremos más adelante) para poder resolver el bloque.

¿Cuál es el tamaño de una cabecera de Bitcoin?

Por lo que el tamaño de la cabecera de bloque de Bitcoin es de 80 bytes. Mientras que una transacción de Bitcoin tiene un tamaño promedio de 250 bytes y en el bloque caben aproximadamente es de 2.000.

Tamaño que resulta de sumar: Versión (4 bytes), Hash del bloque previo (32 bytes), Raíz del árbol de Merkle (32 bytes), Marca de tiempo (4 bytes), bits de dificultad (4 bytes) y el Nonce (4 bytes).

¿Cuál es la estructura de una cabecera de Bitcoin?

La cabecera se divide en 6 campos, cada uno con un objetivo en particular que ahora veremos.

1. Número de versión

Este es un campo de 4 bytes que provee el número de versión usado en el bloque.

Existen diferentes versiones que forman parte de la historia del desarrollo de Bitcoin:

  • Versión 1: fue introducida con el bloque génesis en enero de 2009. Se trata del primer bloque generado en cadena de bloques de Bitcoin.
  • Versión 2: fue introducida en Bitcoin Core 0.7.0 en septiembre de 2012 como un soft fork activado por el usuario (UASF por sus siglas en inglés). Como se describe en la BIP34, un bloque válido de versión 2 requiere un parámetro con la altura del bloque en la transacción coinbase. BIP34 también describe reglas para rechazar ciertos bloques. Bitcoin Core 0.7.0 y otras versiones posteriores comenzaron a rechazar versiones 2 de bloques que no tengan la altura del bloque en la coinbase empezando por el bloque con la altura 224.412 en marzo de 2013. También comenzaron a rechazar nuevos bloques versión 1 tres semanas después en la altura 227.930.
  • Versión 3: fue introducida en Bitcoin Core 0.10.0 en febrero de 2015 como una UASF. Cuando el fork alcanzo la adopción completa en julio de 2015, exigió la codificación DER estricta de las firmas ECDSA en los nuevos bloques, tal y como se describe en BIP66. Las transacciones que no utilizan la codificación DER estricta no eran estándar desde Bitcoin Core 0.8.0 (febrero de 2012).
  • Versión 4: especificada en la BIP65 e introducida en Bitcoin Core 0.11.2 en noviembre de 2015 como una UASF, comenzó a estar activa en diciembre de ese mismo año. Ahora los bloques soportan el nuevo opcode OP_CHECKLOCKTIMEVERIFY descrito en la propuesta de mejora de Bitcoin que la introdujo.

La versión se refiere a que conjunto de reglas debe seguir el bloque para ser válido. Estas reglas forman parte del protocolo que se va actualizando con cada nueva versión.

Si un bloque tiene un número diferente al de otros bloques entonces no puede seguir formando parte de la cadena. En ese caso, funcionará en una diferente y dará como resultado en un hard fork.

2. Hash del bloque previo

El hash del bloque previo es un campo de 32 bytes que contiene precisamente esa información en la cabecera del nuevo bloque.

Este es un puntero al bloque con el cual conecta, una característica muy importante de la blockchain de la que deriva su nombre (cadena de bloques).

La información no puede ser modificada sin la necesidad de modificar los bloques anteriores. Entonces, si tenemos 300.000 bloques e intentamos cambiar un hash, será necesario cambiar el de los bloques previos en un efecto avalancha.

Esto requería una gran cantidad de poder computacional que lo haría muy difícil conseguir. Y es precisamente esa característica que hace que los bloques sean seguros y a prueba de manipulación.

Es posible hacerlo, pero esto provocaría que la cadena de bloques cambiara completamente. Para conseguirlo se necesitaría un ataque del 51%.

La cabecera del bloque utiliza el algoritmo de hashing SHA-256 con una función (por si te interesa) que es así:

SHA256(SHA256())SHA256(SHA256(Prev_Block_Header))

Esto prevé que ningún bloque pueda ser modificado sin cambiar la cabecera del bloque.

Esto es una pieza fundamental para evitar que se reviertan las transacciones, ya que se necesitaría cambiar el hash de todos los bloques. Eso consumirá una gran cantidad de energía y recursos computacionales para hacer todos los cálculos de nuevo.

Aun así, en el mundo real los mineros podría repeler uno de estos ataque haciendo fork de la cadena. Pero es mejor tener una herramienta de consenso que mantenga los bloques válidos sin recurrir a esa última instancia.

3. Raíz del árbol de Merkle

El campo para la raíz del árbol de Merkle también es de 32 bytes y contiene el hash del árbol de Merkle con las transacciones. Que utiliza la misma función hash del bloque previo.

La raíz de Merkle se obtiene de los hashes de todas las transacciones que son incluidas en el bloque. Esto sirve para asegurarnos de que ninguna transacción haya sido modificada sin modificar la cabecera completa.

Una medida para evitar la alteración de la información que provee seguridad al bloque, y una importante característica de un sistema que es público, descentralizado y sin confianza.

La raíz del árbol de Merkle consisten en todos los TxIDs (ID de transacciones) de las transacciones de; bloque. Y son colocados en el orden requerido por la regla de consenso:

  • El ID de la transacción coinbase es colocado primero.
  • Cualquier entrada del bloque puede gastar una salida que también aparece en este bloque si es un gasto válido. Debe ser un TXID correspondiente a la salida colocado en algún momento anterior al TXID correspondiente a la entrada. Esto sigue la regla UTXO (Unspent Transaction Output) de que una entrada de transacción debe ser la salida de transacción anterior.

La entrada, de una longitud variable, es transformada en un resultado de longitud fija de 256 bits. La raíz de Merkle siempre puede rastrearse hasta la estructura de datos del árbol, y es una forma rápida y eficaz de verificar los datos.

Ejemplo de arbol de Merkle con transacciones impares
4. Marca de tiempo

La marca de tiempo es un campo de 4 bytes con fecha y hora del bloque medida en tiempo Unix. Que son básicamente los segundos que han transcurrido desde enero de 1970 hasta el momento de creación del bloque.

Esta es colocada dentro de la cabecera cuando el minero comienza a buscar el hash de esta.

Debe ser más grande que la media de tiempo de los 11 bloques previos. Pero los nodos completos tampoco aceptarán bloques cuyas cabeceras se encuentran 2 horas adelantadas de la hora que tengan en sus relojes.

El tiempo Unix no es una representación real de UTC. Ignora los segundos bisiestos, y cada día contiene un total de 86.400 segundos (60 segundos/minuto x 60 minutos/hora x 24 horas).

De acuerdo con los protocolos de Bitcoin, el tiempo de propagación de los bloques debe ser de una media de 10 minutos, por lo que la marca de tiempo debe caer dentro del tiempo permitido que está dentro de este rango.

La variabilidad, sin embargo, se debe a la dificultad que se discutirá a continuación.

5. Dificultad/Bits

La dificultad o hash objetivo es también un campo de 4 bytes que también se conoce como Bits. La versión codificada del objetivo es un rango en la que el hash del bloque debe ser igual o menor.

Los Bits especifican un valor o umbral objetivo que contiene ceros a la izquierda. Esta es la base del objetivo de dificultad, donde el hash de la cabecera tienen que tener la misma cantidad o más de ceros a la izquierda.

El objetivo de dificultad se ajusta cada 2.016 bloques en la red Bitcoin. Esta información es importante para los mineros en particular.

La dificultad es calculada gracias al protocolo Bitcoin, que determina como debe ser de difícil encontrar el hash de acuerdo a la cantidad total de hash rate que hay en la red.

Cuando hay muchos mineros, la dificultad se incrementa para poder controlar la oferta de BTC. Si fuera muy fácil encontrar nuevos bloques, entonces se conseguirán generar en menos de 10 minutos. Esto provocaría que se minaran el total de bitcoins que pueden existir de forma muy rápida.

Por otro lado, cuando el periodo de descubrimiento de un bloque nuevo es mayor a 10 minutos, entonces la dificultad se encuentra demasiado alta y es necesario disminuir la dificultad para volver a ese promedio de 10 minutos.

6. Nonce

Finalmente llegamos al nonce, un campo de 4 bytes, que es un número que los mineros modifican para que el hash de la cabecera produzca un resultado diferente y así alcanzar el hash objetivo.

El nonce s como un número mágico, ya que cualquier que lo descubra primero será el validador del bloque. La recompensa obtenida es creada en la transacción coinbase y es dada al minero que resuelve el problema.

Descubrir cuál es el nonce es la actividad principal de los mineros que se involucran en el mecanismo de consenso que válida los bloques.

Ejemplo de cabecera de Bitcoin

Aquí hay un ejemplo de como se ve la cabecera de un bloque de Bitcoin:

Ejemplo de cabecera de Bitcoin
  • bits: la dificultad de la minería que es codificada en un valor numérico.
  • mrkl_root: es el hash de todas las transacciones dentro del bloque. Representado en valor hexadecimal, por eso son 64 caracteres.
  • nonce: el número que el minero ha encontrado para conseguir que el hash caiga dentro del umbral necesario.
  • pre_block: el hash de la cabecera del bloque precio. Esto es lo que vincula todos los bloques de la cadena.
  • time: indica cuando el minero comenzó a minar el bloque. El formato es diferente al de Unix, pero está basado en esta.
  • ver: número de versión del bloque que sigue las reglas de consenso de la versión del protocolo.

¿Qué es el contador de transacciones?

En esta sección se incluyen un contador de transacciones de tamaño variable. Es un campo con el número transacciones en el bloque, representado con un valor entero.

¿Qué son las transacciones de Bitcoin?

Las transacciones de Bitcoin se encuentran organizadas en un árbol de Merkle, que es una estructura que tiene una raíz y de ella salen otras transacciones que a su vez conectan con otras, como vemos en el dibujo de aquí abajo:

Arbol de Merkle en Bitcoin

¿Cuánto es un bloque de bitcoin?

El tamaño del bloque de Bitcoin es de 1 MB, que es lo que cada bloque tiene de límites para integrar todas las transacciones posibles.

Donde cada transacción de Bitcoin tiene un tamaño diferente, por eso la cantidad de transacciones que caben en un bloque varía.

¿Cómo minar un bloque de Bitcoin?

Los mineros se encuentran constantemente procesando y registrando transacciones que consiste en una especie de carrera por ver quién es el primero que consigue generar un bloque nuevo.

Básicamente, crean un bloque y lo llenan con transacciones que pueden gastar los BTC que dicen enviar. Luego agregan una referencia al bloque anterior, en el caso de arriba del bloque B al bloque A, junto a otra información importante. Finalmente, todo el bloque es pasada por una función matemática que genera un valor.

El objetivo del minero es encontrar un valor en particular, por eso deben probar distintas combinaciones en donde cambian un pequeño parámetro, hasta que finalmente hallan el correcto. El primero que lo consigue es el ganador, y el que obtiene la recompensa de BTC.

Todo esto es lo que se conoce como la minería de Bitcoin. Un proceso que utiliza recursos y es difícil realizar en solitario.

¿Cuánto se tarda en minar un bloque de Bitcoin?

El valor que deben descubrir es lo que permite cambiar la dificultad de la minería, haciendo que sea más fácil o difícil en cualquier momento. Lo que lleva a que cada bloque en promedio tarde unos 10 minutos en ser creado.

¿Puede un minero solitario resolver un bloque de Bitcoin?

Minar en solitario es algo muy difícil, pero es algo que ha sucedido en el pasado. Primero con Satoshi Nakamoto, su creador, quien minaba con su propio ordenador, ya que la dificultad era muy baja. Pero también ha habido en tiempos más cercanos mineros que lo lograron solo.

Como un minero en agosto de 2023 que logro resolver el bloque de Bitcoin solo y obtuvo una recompensa de 6,25 BTC, que equivalían a $160.000.

¿Cuánto da un bloque de Bitcoin?

La recompensa por bloque de Bitcoin actualmente es de 6,25. Pero no siempre fue así.

En el comienzo, una persona podía obtener 50 BTC por cada bloque que resolvía, lo cual fue disminuyendo hasta la cifra que cada bloque otorga actualmente. Hasta que finalmente este valor llegue a 0 BTC.

¿Qué pasa con Bitcoin cada 4 años?

Cada 4 años Bitcoin pasa por un evento que se llama Halving, que consiste en disminuir la recompensa que cada bloque entrega a la mitad.

Un proceso muy importante porque permite controlar la cantidad de bitcoins que se emiten hasta que finalmente no se pueden crear más.

¿Cuál es el primero bloque de Bitcoin?

El primero bloque de Bitcoin se llama bloque génesis. Que fue crucial para la cadena de bloques de Bitcoin porque establecido las bases y dio comienzo a esta criptomoneda.

Además, es especial por tener algunas particularidades y por llevar un mensaje dentro con una clara motivación por parte de su creador en cuanto al objetivo de Bitcoin.

¿Qué dice el primer bloque de Bitcoin?

En los bloques de Bitcoin se puede integrar un mensaje corto de texto, algo que se utilizó en el primer bloque para dejar claro las intenciones de esta cripto.

En particular decía:

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

Que es el título de un periódico en la fecha de su creación, que habla acerca de un rescate de un banco luego de la crisis financiera de 2008.

La idea detrás del mensaje y de Bitcoin es que los gobiernos no tengan el poder de crear dinero de la nada, provocando inflación, y rescatando a los bancos mientras el resto de las personas se hacen más pobres.

¿Cómo ver el último bloque de Bitcoin?

Para poder ver el último bloque de Bitcoin debemos consultar un explorador de blockchain. Que son herramientas que nos permiten revisar la cadena de bloques, en particular la de Bitcoin.

Donde no solo podemos ver el último bloque y toda la información que tiene este, sino también ver bloques anteriores, hasta llegar al bloque génesis.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario