El desarrollo de Bitcoin tiene su epicentro en el software Bitcoin Core, una increíble pieza de código heredada del desconocido Satoshi Nakamoto y que hace posible el funcionamiento de Bitcoin en todo su esplendor.

Entre todas las implementaciones de Bitcoin, sin duda hay una que es la madre de todas ellas, siendo la más conocida. Se trata de Bitcoin Core, un desarrollo de código abierto bajo licencia MIT que lleva el peso del desarrollo del protocolo Bitcoin. Este es responsable de todo el protocolo Bitcoin y de implementar la  full client de referencia para Bitcoin. De esta manera, Bitcoin Core tiene todo lo necesairio para verificar los pagos de forma autónoma. Y por último, pero no menos importante, es la implementación que inició el mismísimo Satoshi Nakamoto, el creador de Bitcoin.

Hasta la fecha, Bitcoin Core es el único que implementa el protocolo Bitcoin en su totalidad. Por lo que es una referencia en el cual se apoyan los otros clientes desarrollados. Está conformado por un programa que crea nodos completos, que descargan toda la blockchain para que estos puedan validarla completamente. Así como también por una wallet que opera y gestiona los bitcoins y verifica todas las operaciones realizadas.

¿Cómo funciona?

El software de Bitcoin Core se puede descargar como cualquier otro programa en nuestro computador, de hecho basta visitar esta web para hacerlo. Pero antes de eso se deben tener en cuenta varios aspectos. Primero, Bitcoin Core implementa todos los aspectos de la red Bitcoin, por lo tanto, al descargarlo te convertirás en un nodo completo de la red. Este incluye una copia exacta y completa de todas las operaciones que se han realizado con Bitcoin desde su lanzamiento en 2009. Y que por supuesto, será actualizada constantemente. Por lo que la demanda de espacio de almacenamiento disponible en el disco duro será de al menos 400 gb.

Segundo, Bitcoin Core implementa un wallet, a través de la cual son verificadas todas las transacciones que se realicen con la copia de la blockchain. Por lo que descargarlo y sincronizarlo en un ordenador será algo que tome algunos días antes de poder usarlo. Por lo que, aunque proporciona altos niveles de seguridad y privacidad, es recomendada solo para usuarios avanzados.

Otra característica importante de Bitcoin Core, es que utiliza un programa interno (daemon) llamado bitcoind. Un daemon (demonio en español) es un programa que se ejecuta en segundo plano para uso por medio de líneas de comandos y llamadas a procedimientos remotos (RPC). El nombre “demonio” está muy relacionado con sistemas UNIX y derivados como Linux. Bitcoin Core también es capaz de crear una testnet, una red de pruebas donde los desarrolladores comprueban los cambios que desean realizar. Así pueden analizar a detalle cómo funcionan los cambios o mejoras que desean a la red antes de incorporarlos a la misma.

Por otra parte, Bitcoin Core también contiene un programa llamado bitcoin-cli. Esta es una interfaz de línea de comandos, a través del cual, los usuarios pueden enviar comandos RPC a bitcoind y realizar cualquier operación soportada por Bitcoin.

Bitcoin Core wallet, la wallet oficial de Bitcoin

¿Cuánto sabes, criptonauta?

¿Bitcoin Core es la única manera de crear un full nodo para Bitcoin?

¡FALSO!

Existen otras opciones para habilitar un full nodo de Bitcoin, una de esas opciones es Libbitcoin de Amir Taaki. Pero el único que implementa en su totalidad las opciones para ello es Bitcoin Core.

Desarrollo y mejoras de Bitcoin Core

El desarrollo de Bitcoin Core comenzó con la versión 0.1.0. Esta es considerada la primera implementación del software de Bitcoin creada por Satoshi Nakamoto. La misma solo estuvo disponible para Windows. En la versión 0.2.0 se introdujo por primera vez el soporte a sistemas Linux y posteriormente MacOS.

Nakamoto participó en el desarrollo y mejora de Bitcoin Core hasta la versión 0.3.19 en 2010, luego abandonó el proyecto, dejándolo en manos de Gavin Andresen. Fue Andresen quien posteriormente, en 2014 cedió el proyecto a Wladimir J.van der Laan y otros desarrolladores principales.

En la versión 0.3.20 fue introducida la red de pruebas testnet. Y a partir de la versión 0.5.0 de 2011 comenzó a llamarse Bitcoin-QT. Esto haciendo referencia a una implementación basada en la biblioteca de interfaz gráfica Qt4 con licencia MIT. La misma fue desarrollada por el desarrollador Wladimir Van der Laan y proporciona una interfaz amigable al código Bitcoin. Todo con la finalidad de hacer que su uso fuera más sencillo, amigable e intuitivo para usuarios no familiarizados con la programación.

Posteriormente en la versión 0.9.0 el software recupera el nombre de Bitcoin Core, y en ella, las comisiones por transacción fueron reducidas como medida para fomentar la realización de microtransacciones.

Dejando atrás OpenSSL y mejorando capacidades

En sus inicios, Bitcoin Core, usaba OpenSSL para muchas operaciones de criptografía. Sin embargo, esto comenzó a cambiar en 2015 debido a fallos descubiertos en OpenSSL. Entre los fallos de seguridad había uno que permitía a un atacante leer la memoria de un servidor y obtener claves privadas. Otro error detectado, es que OpenSSL usa una fuente “débil” para números aleatorios, y los desarrolladores de Bitcoin Core decidieron crear una fuente propia. Por esas razones, OpenSSL fue eliminado del código fuente de Bitcoin Core.

En la versión 0.11.2 los desarrolladores incorporaron una característica a la red, donde se podía establecer ciertas condiciones futuras para impedir el gasto de algunas transacciones. Luego con la versión 0.12.1 se habilitó la funcionalidad de permitir múltiples soft forks simultáneamente.

Casi cerca de 100 colaboradores trabajaron en la versión 0.13.0, donde introdujeron más de diez cambios significativos. Para el año 2016 se activó, a través de un soft fork, el CheckSequenceVerify. En ese mismo año se presentó el soft fork de SegWit como mejora a la maleabilidad de las transacciones y al espacio de los bloques sin variar su tamaño.

En 2018, fue lanzada la versión 0.16.0, la cual permitía el uso de un formato de direcciones nativo para SegWit, también llamado formato de direcciones bech32, que fue desarrollado originalmente por Peter Wuille y Greg Maxwell

Los riesgos de la centralización

Como hemos dicho, Bitcoin Core es el cliente por excelencia de Bitcoin. No es cualquier cliente, es el más usado. En la web de Bitnodes puede verse como el cliente Satoshi (así se llama a Bitcoin Core internamente), es el cliente de más del 95% de todos los nodos conectados a la red.

Esto tiene una parte positiva: todos los nodos hablan un protocolo muy homogéneo. Sin embargo, esto también tiene un lado negativo y potencialmente horrible para algunos detractores: la capacidad de control que tienen los desarrolladores de ese cliente.

Aunque un cliente no es más que un programa que implementa el protocolo de Bitcoin, hay que entender que el protocolo por si solo no hace nada, requiere del programa que lo ejecute. Por este motivo, ese programa tiene control sobre qué partes del protocolo implementar y cuales no, por ejemplo que BIPs integrar.

Si bien es cierto que es un programa de código abierto, el cual podemos ver su código e incluso proponer cambios, solo un pequeño grupo de programadores tiene el control para que esos cambios entren dentro del programa. Un pequeño y cerrado grupo, que constantemente es tentado con ofertas de multinacionales y gobiernos. Al fin y al cabo un software de código abierto no da dinero directamente, y ellos deben vivir de algo, las corporaciones y gobiernos lo saben y tienen capacidad para embaucar con lo necesario, poniendo en nómina a estos programadores y presionarles a modo de lobby para encaminar las funcionalidades de una o otra forma. Igual que ocurre en la política con los representantes.

Ante esta situación, siendo el cliente por excelencia y viendo lo complicado que es crear un nuevo cliente donde desarrolladores comprometidos y anónimos sin capacidad de ser corrompidos mantengan el código, algunos desarrolladores optaron por hacer un hard fork de Bitcoin.

El problema de la centralización es algo real, un problema que Bitcoin busca resolver, pero sin duda aun son muchas las oportunidades de mejora que existen entorno a Bitcoin y a este concepto.