Conoce cómo se lleva a cabo el desarrollo de Bitcoin

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.