Introducción

Seguramente has escuchado de Bitcoin y de todo el revuelo que ha causado esta moneda digital en el mundo, pero te has preguntado alguna vez ¿Cómo se desarrolla Bitcoin? Pues bien acá haremos un pequeño pero enriquecedor viaje por el mundo de Bitcoin, su desarrollo y quienes hacen posible que esta criptomoneda tome vida.

Desarrolladores, los rostros y mentes detrás de Bitcoin

Nuestro viaje comienza con el eje fundamental del desarrollo de Bitcoin, sus desarrolladores. Esas personas que como Eric Hughes, un reconocido cypherpunk del mundo decía "Los cypherpunks se dedican a escribir código". Los desarrolladores son esas personas especialistas en el diseño, escritura y testeo de software que hacen posible que todo el código de Bitcoin funcione como debe. Son, en definitiva, quienes han llevado a Bitcoin al sitio que ocupa hoy en el mundo, junto a la comunidad que los apoya.

El papel de los desarrolladores en Bitcoin Core es variado y cada uno de ellos tiene o juega un papel determinado. Así que para profundizar más en estos explicaremos de forma sencilla cada uno de estos papeles.

Bitcoin Lead Developer (BLD), el organizador del desarrollo de Bitcoin

El Bitcoin Lead Developer es un desarrollador en específico dentro de la comunidad de desarrollo Bitcoin. Este tiene como responsabilidad orquestar y dirigir el desarrollo del software Bitcoin Core, el software que desarrolla la base original de Bitcoin. Un papel importantísimo que hasta el momento ha estado en las manos de pocas personas. Para ser más precisos, solo Satoshi Nakamoto (2009-2010), Gavin Andresen (2010-2016) y Wladimir J. Van Der Laan (actual BLD) han ocupado ese puesto.

Y seguramente te preguntarás ¿Por qué un proyecto que apunta a la descentralización, acude a una figura centralizada como lo es un líder? Pues bien, el papel del BLD se centra sobre todo en mantener el enfoque y la coordinación de los diferentes grupos que forman parte del desarrollo de Bitcoin. Por supuesto, sus decisiones tienen mucho peso, puesto que llegar a este puesto es algo meramente meritocrático. Es decir, el BLD es elegido por sus méritos, logros y contribuciones al proyecto, nadie lo señala con un dedo y lo elige para ser el líder. Esta organización ha resultado positiva para Bitcoin, puesto que su desarrollo ha mantenido altos estándares y se centra en ofrecer una solución segura a largo plazo.

Bitcoin Developers

Adicional al Bitcoin Lead Developer, la comunidad más activa de desarrollo recibe el nombre de Bitcoin Developers. Estos es un grupo selecto de desarrolladores y especialistas en software y criptografía que dedica amplios esfuerzos por hacer de Bitcoin un software en constante mejora.

En la actualidad, existen más de 700 Bitcoin Developers, que han participado de una u otra forma en el desarrollo de Bitcoin. Algunos lo siguen haciendo, otros han abandonado el desarrollo o participan en otros relacionados. Como sea, siempre se les reconoce como desarrolladores debido a que han dejado su huella en el código de Bitcoin. Para ver una lista completa de las personas que han sido Bitcoin developers, puedes dirigirte a este enlace. En el encontrarás a todas y cada una de estas personas y sabrás exactamente qué han hecho por Bitcoin en algún momento dado.

Comunidad de colaboradores

La comunidad de colaboradores de Bitcoin son por otro lado, personas que apoyan al desarrollo de Bitcoin de una u otra forma, en la que no se participa directamente escribiendo código. Por ejemplo, si en algún momento te encuentras con algún error dentro de Bitcoin Core y lo reportas, entonces ya eres parte de la comunidad de colaboradores. Si adicional a esto, dedicas tus esfuerzos a probar el software de forma regular, seguramente crearás un buen feedback con los desarrolladores.

Esta es una de las grandes cosas del software libre. Al permitir que la comunidad de usuarios pueda participar en el desarrollo, se crear un feedback único que advierte de problemas o plantea mejoras únicas en el software. Por supuesto, para colaborar no solo se tiene que andar probando el software, el presentar ideas que permitan que Bitcoin pueda avanzar, o incluso mejor, estudios completos de técnicas criptográficas o algún otro desarrollo que pueda ayudar a Bitcoin en su tarea de ser la mejor blockchain del mundo, también cuenta como colaboración.

Si tus conocimientos no son tan técnicos, también puede colaborar con cosas más sencillas, como mejorando la documentación en tu idioma, traducciones, artes e interfaces del software, dando a conocer Bitcoin en cualquier rincón del mundo, e incluso, apoyando económicamente al proyecto a quienes dedican su tiempo para hacerlo una realidad. Porque si, puede parecer muy irónico pero muchos desarrolladores de Bitcoin no son ricos como muchos creen. De hecho, muchos han pasado por duros momentos, como el caso de Luke Dashjr quien fue víctima del huracán Irma en 2017, y cuya casa sufrió graves daños, que afectaron a su familia y sus siete hijos.

Relacionado: ¿Qué es Bitcoin?

Algunos aspectos técnicos curiosos

Ahora bien, ya conocemos quienes son los que hacen posible Bitcoin con su trabajo y esfuerzo. Pero solo conocemos quienes son, no sabemos qué herramientas usan, ni como manejan todo su enorme trabajo. Pues bien, en ese caso indaguemos un poco sobre estos variados temas técnicos que ayudan a que Bitcoin sea toda una realidad.

Lenguaje de programación

En primer lugar, debemos decir que Bitcoin usa como lenguaje de programación al lenguaje C (C Plus Plus). Seguramente habrás escuchado hablar de este lenguaje de programación que lleva entre nosotros más de 41 años y fue diseñado por Bjarne Stroustrup. La elección de este lenguaje de programación fue porque facilitaba el desarrollo orientado a objetos tan ampliamente utilizado en Bitcoin. Todo ello sin perder calidad en su desarrollo y ofreciendo un alto rendimiento.

Todo el núcleo de Bitcoin Core está escrito usando C , más específicamente el estándar C 11 (C 2011). En sus inicios, Bitcoin Core usaba C 98 (C 1998), pero con el cambio de estándar los desarrolladores se permitieron rediseñar varias funciones para optimizarlas, especialmente para modularizar y hacer más específicas cada parte del código. Como resultado, Bitcoin Core ganó velocidad, seguridad y permitía evolucionar de forma más segura en el tiempo. El cambio completo del estándar se dio en el año 2016.

Por otro lado, el uso de C facilitó la creación de una interfaz gráfica para Bitcoin, usando el framework QT, un desarrollo de software libre, diseñado especialmente en C .

Conoce qué son los BIP, el centro de estandarización de Bitcoin

Por otro lado, la estandarización es algo muy importante de Bitcoin. Piénsalo un poco, ¿Cómo hacen para que cientos de personas trabajen desde diferentes sitios y usen unas mismas reglas de desarrollo en todo momento? La clave está en lo códigos de programación y en la estandarización de procesos.

En Bitcoin suelen programar usando el esquema de indentación (la forma en cómo se escribe código) llamado GNU Style, con unas pequeñas modificaciones. El resultado, es que lograr crear un código limpio y fácil de leer para cualquier persona.

Pero adicional a esto, existe una herramienta vital para estandarizar y controlar el desarrollo de Bitcoin, los BIP (Bitcoin Improvement Proposal o Propuesta de Mejoras de Bitcoin). Estos son una serie de documentos que son creados por los desarrolladores, siguiendo unos estrictos lineamientos. El objetivo es presentar una mejora que afecte el desarrollo de Bitcoin.

Por ejemplo, la mejora de Bitcoin conocida como SegWit, fue en primer lugar el BIP-141. Lo mismo se repite para las innumerables mejoras que se han realizado sobre Bitcoin. Así cualquier desarrollador que desee cambiar funciones importantes en Bitcoin, debe presentar un BIP y justificar dichos cambios, porque de otra manera no serán tomados en cuenta.

El desarrollo de esta herramienta fue gracias a los desarrolladores de Bitcoin, Amir Taaki y Luke Dashjr.

Licencias de Software Libre

Las licencias de software en el mundo del desarrollo son muy importante porque las mismas ayudan a proteger al proyecto y la propiedad intelectual que se encuentra en el mismo. En el caso de Bitcoin, la licencia elegida para el mismo ha sido la MIT. Esta es una licencia de software libre muy permisiva que permite copiar, modificar y compartir el código sin costo alguno.  Puedes leer la licencia en el siguiente enlace.

Ahora bien ¿Por qué Bitcoin ha elegido esta licencia? Más que todo porque la licencia MIT no impone ninguna restricción de uso como otras licencias como GPL2 o GPL3. En su lugar, el espíritu de esta licencia es que cualquiera puede hacer uso de este software incluso de forma privativa y con sublicenciamiento. En pocas palabras, es el espíritu de libertad económica del Bitcoin llevado en esta oportunidad a la libertad de uso de su código.

Multiplataforma

Por otro lado, el uso de una licencia libre como la del MIT ha permitido que muchos desarrolladores aporten un granito de arena para hacer que Bitcoin se pueda ejecutar sobre cualquier arquitectura que exista. Desde las PC con sistemas operativos Windows, Linux y MacOS, hasta sistemas más minimalistas. Como resultado podemos ver que la presencia de Bitcoin ha llegado a todos estos sistemas sin mayores problemas. Una de las claras ventajas del software libre y el desarrollo colaborativo.

Por supuesto en todo esto tienen mucho que ver que las herramientas usadas para desarrollar Bitcoin (C ) está disponible en todas estas plataformas. Así que la portabilidad o capacidad de llevar Bitcoin a distintas plataformas es más que excelente.

Criptografía con sello propio

Otro hecho curioso del desarrollo de Bitcoin es el uso de criptografía hecha en casa, aunque esto no siempre ha sido así. Durante el desarrollo inicial de Bitcoin, la librería criptográfica usada para su desarrollo era la conocida OpenSSL, ampliamente utilizada en GNU/Linux y la mayoría del software libre existente.

Sin embargo, Gregory Maxwell un desarrollador de Bitcoin, decidió terminar con esta peligrosa relación. El problema es que OpenSSL tiene un desarrollo caótico que la ha llevado a tener errores graves de seguridad, que en el contexto de Bitcoin son imperdonables. Imagina por un momento que una función tan vital como SHA-256 o ECDSA sean vulnerables en la implementación creada por OpenSSL. Esto haría que Bitcoin sea también vulnerable y pone en riesgo la seguridad de toda la red.

Ante esa situación, Gregory Maxwell decidió iniciar un desarrollo criptográfico propio alejado del camino de OpenSSL. Con ello, se crearon su propia librería criptográfica más específica, segura y capaz de proveer a Bitcoin de todo lo necesario para trabajar. Una decisión inteligente si tomamos en cuenta que OpenSSL ha tenido desde entonces graves errores de seguridad en varias de sus funciones, y de hecho, le llevaron a un fork llamado LibreSSL, desarrollado por los especialistas en criptografía de OpenBSD, el sistema operativo más seguro del mundo.

Relacionado: Seguridad en la blockchain, conoce los elementos que la conforman

Git para controlarlo y compartirlo todo

Seguramente ahora te preguntarás ¿Cómo hacen los desarrolladores para controlar todo este enorme esfuerzo? Pues bien, esto lo logran gracias al uso de un software llamado Git. Este software es un controlador de versiones de software o CVS (VCS por sus siglas en inglés).

Lo que hace Git es crear un historial de cada mínimo cambio que se realiza en el software de Bitcoin. Cosas tan insignificantes como un espacio en blanco o una coma adicional (o menos) son grabadas por el software como un cambio en el historial del desarrollo del software. Este historial, por cierto, funciona de forma distribuida, con un punto central donde se centraliza todo el desarrollo, pero con copias completas en las computadoras de los desarrolladores o de quienes hagan una copia del mismo.

Así las personas pueden hacer sus cambios y enviarlas al servidor central, para que puedan ser analizados. En caso de ser aceptados, los cambios se unen al historial principal del software y luego son sincronizados en el resto de personas que participan en el desarrollo del software.

Pero ¿Para qué necesitamos de algo como Git en Bitcoin? Si tenemos en cuenta el desarrollo distribuido de Bitcoin, su complejidad y la cantidad de líneas que lo conforman (más de 400 mil líneas), verás que una herramienta como Git facilita el manejar todo esto.

Por otro lado, el funcionamiento de Git es muy parecido a Bitcoin, aunque la tecnología de Git es algo largamente conocida en el mundo del desarrollo de software. El desarrollo y creación de Git se lo debemos a Linus Torvalds, el creador del kernel Linux, y una de las personalidades más importantes del mundo del software libre.

Conclusiones

Como ves son varias y diversas las herramientas que hacen posible el desarrollo de Bitcoin. Es un arduo trabajo que se realiza día y noche en todo el mundo. No es simplemente un pasatiempo, es un desarrollo lleno de esfuerzo y dedicación, todo con el fin de llevar la libertad financiera a todo el mundo. 

Aunque ciertamente Bitcoin no es el único que sigue varias de las cosas acá descritas, ha sido siempre el primero en implementarlas. Y no solo eso, siempre ha estado a la cabeza de desarrollo de ideas para mejorar constantes a lo largo de su historia.