Primero te ignoran, luego se ríen de ti, despues luchan contra ti, y al final ganas. - Mahatma Gandhi.



La red

Una implementación de Bitcoin es un código que los particulares pueden ejecutar en sus ordenadores para convertirlos en nodos Bitcoin.
La implementación de referencia es el código de fuente abierta conocido como Bitcoin Core, que puede descargarse desde https://bitcoincore.org/en/download/

Los nodos Bitcoin interconectados constituyen la red Bitcoin:

Representación de la Red Bitcoin

La función de un nodo es verificar de manera independiente la validez de transacciones, rechazando aquellas que no siguen las reglas de Bitcoin.


Transacciones

Una transacción Bitcoin consiste en un mensaje firmado digitalmente que ordena la transferencia de una determinada cantidad de unidades monetarias.

Las firmas digitales se generan a partir de una Clave Privada y su correspondiente Clave Pública.
Una Clave Privada es un número aleatorio entre 0 y 2^256 (aproximadamente el número de átomos en el universo conocido), por lo que su entropía es de 256 bits.
La Clave Pública se deriva de la Clave Privada a través de una función unidireccional, lo que significa que es imposible obtener una Clave Privada a partir de una Clave Pública.

Una Clave Privada puede cifrar datos que solo su Clave Pública correspondiente puede descifrar, y viceversa.

La firma digital de un mensaje consiste en cifrar el mensaje con la Clave Privada y añadir un texto que incluya el mensaje original (no cifrado) junto con la Clave Pública.

La verificación de que el propietario de la Clave Privada ha autorizado el mensaje se consigue descifrando el mensaje con la Clave Pública y confirmando que el mensaje resultante coincide con el original.


Las Direcciones Bitcoin son Claves Públicas codificadas, diseñadas para ser más legibles y resistentes a errores tipográficos.

La generación y almacenamiento de Claves Privadas, junto con sus correspondientes Claves Públicas y Direcciones, son procesos sencillos que pueden ser facilitados por programas llamados Monederos.

Los nodos mantienen una mempool, que es una lista de solicitudes de transacciones, y almacenan una copia de el libro mayor distribuido conocido como Blockchain, que contiene transacciones confirmadas.

Cada nodo obtiene los saldos actuales, denominados conjunto de UTXOs, de su propia copia de la Blockchain.


Prueba de Trabajo

En el caso de transacciones conflictivas, la validez debería determinarse por orden cronológico.
Pero los nodos no pueden demostrar matemáticamente el orden de solicitud, y como las solicitudes de transacción se propagan como cotilleos entre nodos y pueden publicarse desde cualquier nodo, diferentes nodos reciben estas órdenes en diferentes momentos y en un orden cronológico variable.
Por lo tanto, si los nodos difieren en qué versión de la transacción debe reconocerse como válida, se produce un doble gasto, lo que da lugar a a la coexistencia de diferentes sistemas monetarios.

La innovación clave de Bitcoin para resolver este problema es el mecanismo conocido como Prueba de Trabajo. Este mecanismo permite prescindir de la necesidad de una autoridad central al rotar probabilísticamente el poder de ejecutar solicitudes de transacción. Los distintos nodos mineros ganan ese poder en función de su fuerza computacional relativa.

Funciona como una lotería descentralizada continua en la que los los participantes adquieren "boletos" utilizando un recurso imposible de falsificar: la energía.

Los sistemas alternativos a la Prueba de Trabajo dependen de recursos dentro de su propio sistema, lo que los hace inseguros. Estos sistemas se verifican mediante datos que pueden falsificarse a bajo coste y son vulnerables a ataques donde una sola entidad controla clandestinamente la mayoría de los nodos.
En consecuencia, estos sistemas requieren que una autoridad emplee recursos humanos, lo que lleva a la burocracia y los privilegios.

Los mecanismos de consenso que no implican trabajo implican en cambio la gobernanza.


Bloques

Una vez que una solicitud de transacción se incluye en un bloque de datos que es verificado, copiado y propagado de forma independiente por cada nodo, se considera ejecutada.

Sin embargo, es posible la coexistencia de dos bloques en competencia durante algunos minutos. Este problema se resuelve cuando se crea un nuevo bloque, ya que cada nuevo bloque debe estar vinculado al último bloque anterior, y los nodos siguen la cadena con más trabajo acumulado, que suele ser la más larga.
En consecuencia, la probabilidad de que un bloque sea descartado disminuye con su profundidad en la cadena, y cada bloque posterior aumenta la probabilidad de inmutabilidad, lo que se conoce como confirmación.

Las transacciones de los bloques descartados vuelven a la lista de solicitudes de transacción si no se incluyen en los nuevos bloques.

El creador de cada bloque recibe una recompensa, compuesta por comisiones de transacción y un subsidio a través de una transacción llamada coinbase.
Cada solicitud de transacción indica la tasa a pagar para priorizar su ejecución.
El subsidio se compone de nuevas unidades de bitcoin, cuya emisión se reduce a la mitad cada 210.000 bloques (unos 4 años). Esto resulta en una inflación monetaria decreciente para alcanzar un máximo de 21 millones de bitcoins.

La integridad de la información contenida en el registro de bloques es fácilmente verificable gracias al uso de funciones hash criptográficas. Estas funciones unidireccionales transforman cualquier entrada de datos digitales en datos de tamaño fijo denominados hash.
Los hashes son completamente diferentes entre sí, con sólo ligeras diferencias en los datos de entrada.
En Bitcoin, la función hash más comúnmente utilizada es SHA256, que produce un hash de 256 bits. Por ejemplo, el identificador (ID) de transacción es el doble hash SHA256 de los datos de la transacción, y el identificador de bloque es el doble hash SHA256 de los datos de la cabecera del bloque.


Datos contenidos en el encabezado del bloque:

1. # El hash del ID del bloque anterior.
2. # El hash combinado de los hashes de todas las transacciones, conocido como la Raíz de un Árbol de Merkle.
3. Nonce y hash objetivo.
4. T Marca de tiempo.

Cada bloque consta de su cabecera y de las transacciones junto con sus respectivos hashes:

Un bloque que incluye su encabezado y un conjunto de transacciones

1. El hash del ID del bloque anterior:

Forma una cadena en la que el hash de cada nuevo bloque incluye todo el historial de transacciones.
Cualquier alteración de un bloque lo invalida a él y a todos los bloques posteriores.
Similar a un mosquito en ámbar, cuanto más profundo está un bloque en la cadena, más inamovible se vuelve.


2. La raíz de un árbol de Merkle:

Proporciona una forma sencilla de verificar la integridad de las transacciones.


3. Nonce y objetivo de hash:

Nonce:

Para minar un bloque, hay que encontrar un nonce que, combinado con el resto de los datos de la cabecera del bloque, dé como resultado un hash (ID del bloque) inferior a un umbral especificado, conocido como objetivo de hash.

Por ejemplo, si el objetivo es obtener un hash que empiece por 00 a partir de datos que contengan el texto "bitcoin", se podrían realizar intentos con "bitcoin-1", "bitcoin-2", y así sucesivamente hasta encontrar un nonce exitoso.
¡Pruébalo aquí!.
En este ejemplo, el nonce sería 53.

El ID de bloque es así una prueba de trabajo fácilmente verificable.
Los mineros utilizan el gasto de energía para proponer transacciones, mientras que la ejecución real de las transacciones se produce de forma descentralizada a través de nodos.

Objetivo de hash:

Su función es mantener una tasa media de producción de bloques de 10 minutos. Esto garantiza una propagación y validación de bloques comparativamente rápida, reduciendo los bloques huérfanos y desincentivando la centralización de la minería. El diseño impide que los grandes mineros obtengan ventajas significativas construyendo sobre sus propios bloques.
Además, un flujo de datos mínimo minimiza los costes de operación de los nodos y facilita la replicación de la información.


4. Marca de tiempo:

Es la hora aproximada en que cada bloque fue minado por su respectivo minero.
Cada 2016 bloques, la red calcula la diferencia de tiempo entre la primera y la última marca de tiempo para ajustar el objetivo de hash en función de los cambios en la potencia minera total.

El objetivo de hash puede multiplicarse o dividirse por un máximo de 4 para limitar el impacto de ciertos ataques de doble gasto.

Las marcas de tiempo no son exactas y no aumentan necesariamente en el tiempo de un bloque a otro. Para ser aceptada por un nodo, una marca de tiempo debe ser posterior a la mediana de las 11 marcas de tiempo anteriores y anterior dos horas en el futuro según la hora actual del nodo.


Gracias a este mecanismo, por primera vez en la historia, la inflación de un bien monetario es predecible.

Gráfico de la tasa de inflación de Bitcoin


El proceso de minería

La tecnología Bitcoin utiliza la electricidad para evitar consumir recursos humanos. Libera tiempo humano.

Cuando podemos asegurar una red financiera mediante la informática en lugar de mediante contadores, reguladores, investigadores, policías y abogados, pasamos de un sistema manual, local y de seguridad inconsistente a uno automatizado, global y mucho más seguro. — Nick Szabo.

Los mineros de Bitcoin utilizan la energía de la misma manera que los bomberos usan agua para apagar un fuego.

La minería de Bitcoin gravita hacia fuentes de energía que desbloquean energía varada, que de lo contrario sería desperdiciada. Los mineros de Bitcoin proporcionan una carga muy flexible e interrumpible, capaz de operar en cualquier lugar.
A largo plazo, a medida que aumente la competencia y disminuya la rentabilidad de la minería, sólo seguirá siendo económicamente viable el uso de la energía sobrante.


La minimización de la gobernanza financiera

La tecnología Bitcoin permite descentralizar el control sobre un sistema monetario, minimizando la gobernanza financiera. Bitcoin funciona en base a reglas sin gobernantes.
Preguntarse "¿quién controla Bitcoin?" es similar a preguntar "¿quién controla un idioma?".
Los cypherpunks rechazan la gobernanza, por lo que la ausencia de ella ha sido siempre el objetivo. Esta ausencia aumenta la inmutabilidad de la seguridad de la red y la credibilidad de su política monetaria.

"Sí: apártate un poco, que me estás quitando la luz del sol". - La respuesta del filósofo Diógenes a la oferta de Alejandro Magno de concederle cualquier deseo.

En Bitcoin, el consenso surge cuando diferentes ordenadores ejecutan simultáneamente el mismo protocolo. Al maximizar el papel del protocolo de consenso, se minimiza drasticamente el consenso social.
El diseño central de Bitcoin es inmutable, solo aquellas innovaciones tecnológicas que mejoran la seguridad están justificadas para incluirse gradualmente en su código. Avanzar lentamente es un dogma.

La naturaleza de Bitcoin es tal que una vez publicada la versión 0.1, el diseño central quedó grabado en piedra para el resto de su vida. - Satoshi Nakamoto.

Debemos tratar el software de Bitcoin con el mismo respeto que tratamos el software de un reactor nuclear. - Hugo Nguyen.

Esto es difícil. Esto es sutil. Si te frustra lo lento que avanza Bitcoin, déjame decirte, Bitcoin avanza demasiado rápido. La criptografía es difícil y aterradora, y tenemos que asegurarnos de que nos movemos despacio. - Andrew Poelstra.


Actualizaciones

Las actualizaciones de seguridad de Bitcoin siguen un proceso meticuloso:

1. Investigación: Aunque la implementación de nuevas características en Bitcoin es increíblemente lenta (por buenas razones), el ritmo de la investigación es abrumador. - Andrew Poelstra.

2. Propuesta: Las actualizaciones se proponen para ser revisadas por otros desarrolladores, para su crítica, su despliegue en sidechains/test-nets y desarrollo iterativo.

3. Consenso: Si las propuestas generan interés, hay un consenso abrumador entre los participantes de la red, y los contribuyentes de software más activos las aceptan unánimemente, las actualizaciones se implementan y prueban.

4. Despliegue de Código Abierto: Las actualizaciones se despliegan como código abierto, lo que permite a los usuarios verificarlas de manera independiente.

5. Aplicación: Las actualizaciones son aplicadas por los nodos. Cada operador de nodo debe instalar manualmente las actualizaciones si decide adoptarlas.


El término "fork" se refiere a un cambio en las reglas de consenso:

- Soft Fork: Endurece las reglas de consenso. Los bloques considerados válidos por los nodos que ejecutan la versión antigua pueden considerarse inválidos por aquellos que ejecutan la nueva versión. No requiere una actualización simultánea de toda la red.

- Hard Fork: Relaja las reglas de consenso. Los bloques considerados inválidos por los nodos que ejecutan la versión antigua pueden ser considerados válidos por los que ejecutan la nueva versión. Requiere que todos los nodos se actualicen, lo que la convierte en una solución de último recurso contra un problema extremo de seguridad en la blockchain.

Cuanto mayor es el riesgo procedimental y el costo mental, menos incentivos hay para realizar una actualización.

En el caso de un fallo catastrófico y general en la tecnología de Bitcoin, desarrolladores influyentes, con suerte compartiendo principios comunes, podrían contribuir a desplegar código que migre las reglas básicas de Bitcoin a una nueva tecnología. Este escenario, a menudo conocido como "la opción nuclear", sugiere que en tales circunstancias, el concepto de Bitcoin probablemente perduraría a pesar de los cambios en la tecnología.

Si SHA-256 se rompiera por completo, creo que podríamos llegar a un acuerdo sobre cuál era la cadena de bloques honesta antes de que empezaran los problemas, fijarla y continuar desde ahí con una nueva función hash. - Satoshi Nakamoto.


El gran logro de la tecnología Bitcoin es hacer valer los derechos de propiedad de forma automática en un sistema monetario.