Bitcoin, como todo software OpenSource, tiene su código fuente, características y procesos definidos para que su comunidad lo haga crecer y evolucionar. Posee varias implementaciones y una de las más utilizadas es denominada Bitcoin Core.
¿Qué es Bitcoin Core?
Bitcoin es un software OpenSource que al día de hoy posee cerca de 900 contribuyentes de todas partes del mundo que aportan su conocimiento en el proyecto y en las tecnologías que utiliza, como C/C++ y Python, para que el mismo continúe creciendo a partir de las propuestas.
Uno de los clientes de Bitcoin más populares es Bitcoin Core. No deja de ser un repositorio en GitHub que deriva del código fuente original que Satoshi Nakamoto entregó a mediados del 2011 para que la comunidad de desarrolladores continuaran con el proyecto.
El código fuente de Bitcoin
Que el código fuente de Bitcoin se encuentre en un lugar centralizado como lo es GitHub puede sonar extraño. La realidad es que Bitcoin, como cualquier software, necesita, no solo de un control de versiones tan poderoso como Git, también de transparencia, trazabilidad y comunicación entre los miembros que la plataforma ofrece.
Ningún software en el mundo podría existir si no hubiese un grupo de líderes en el proyecto. Bitcoin tiene los suyos, ingenieros expertos en su funcionamiento que llevan años trabajando en el mismo y que guían a los demás para desarrollar sobre el código fuente de Bitcoin a partir de un BIP.
Qué es BIP o propuestas de mejora de Bitcoin
Los BIP, o Bitcoin Improvement Proposal, son documentos formales y estructurados para presentar mejoras al core de Bitcoin, ya sea mejoras técnicas, de organización, informativos o de otro tipo.
Las propuestas son analizadas por la comunidad por detrás de Bitcoin para su refinamiento, aceptación o rechazo. Cualquier persona en el mundo puede elaborar un BIP y el mismo será evaluado por la comunidad.
Bitcoin no es la única tecnología que implementa este tipo de procesos para la evaluación de propuestas y mejoras de un software OpenSource. Tal vez conozcas los EIP(Ethereum Improvement Proposal) que, si bien puede diferir en el proceso, tiene el mismo objetivo. Si salimos del mundo Blockchain, podemos encontrar el TC39 para las propuestas de mejora de Javascript.
Cómo es el flujo BIP
Los BIP tiene un flujo predefinido por el cual debe atravesar para ser implementado. Cada etapa define el estado del BIP.
Draft: estado ““borrador”” donde aún se continúa refinando la propuesta y se encuentra incompleto.
Deferred: el BIP se encuentra en pausa por algún motivo.
Accepted: el BIP fue aceptado y puede comenzar el debate de la comunidad sobre el mismo.
Rejected: el BIP fue rechazado por su comunidad por incongruencias, posibles problemas que pueda presentar al core de Bitcoin u otro motivo.
Withdrawn: estado ““retirado””. Los autores de la propuesta decidieron no continuar con la misma.
Final: en este estado, el BIP fue revisado y aprobado por la comunidad y se logró llegar a un consenso sobre la propuesta.
Replaced: el BIP fue reemplazado por otro BIP con una mejor propuesta o superadora.
Active: el BIP se encuentra activo, fue desarrollado el código fuente y el mismo se encuentra en producción o se implementó con éxito la mejora propuesta.
Los BIP tienen un proceso riguroso de aceptación. De haber controversias y problemas en la comunidad sobre la implementación o no de un BIP, el mismo puede generar un fork o bifurcación del proyecto.
Bifurcaciones de un proyecto
Seguro conoces la funcionalidad de GitHub de crear forks de un proyecto. Las bifurcaciones de un Blockchain va un paso más allá.
Cuando una comunidad está dividida a partir de una propuesta o un cambio grande, se crean bifurcaciones del mismo. Lo que genera un nuevo proyecto, con su propia economía, al tratarse de una nueva Blockchain.
Tipos de bifurcaciones
Podemos diferenciar dos tipos de bifurcaciones en una Blockchain:
Hard forks:
Forks totalmente radicales para el protocolo de una Blockchain donde se cambian por completo las reglas, el software, la forma de minado o toda la red. Este tipo de bifurcaciones suelen dividir a la comunidad de un proyecto entre los que están de acuerdo y los que no.
Soft forks:
Cambios menores en una Blockchain que permiten seguir operando y son compatibles con la red. Suelen ser para mejorar el rendimiento o introducir una mejora en el código fuente.
Ejemplos Hard Fork
Un ejemplo Hard Fork es Bitcoin Cash surgido en el 2017 como propuesta para mejorar la velocidad de esta Blockchain. Otro ejemplo podría ser Ethereum Classic que se trata de la versión original de la Blockchain de Ethereum antes de ciertas actualizaciones.
Utilizaciones del Bitcoin Core
El Bitcoin Core es todo un sistema con sus partes. Dentro del mismo encontramos diversos usos:
Permite ser parte de una red P2P de nodos que se comunican entre ellos para validar transacciones, crear bloques y asegurar el consenso de la red.
Implementación de wallets para realizar transferencias y guardar valor en la misma.
Ofrece una interfaz programática a través de RPC que puede utilizarse vía HTTP o un CLI.
Bitcoin Core es la influencia número uno para el desarrollo de otras Blockchains.
Conclusión
El Bitcoin Core es la base de todo lo que hoy conocemos con el nombre de Blockchain. Aquella criptomoneda que Satoshi Nakamoto lanzó con el nombre de bitcoin en el 2009 y que al día de hoy ha evolucionado y se ha fortalecido hasta convertirse en este gran sistema económico.
Sin duda es solo el inicio y Bitcoin aún tiene mucho por crecer y por darle al mundo Blockchain como principal referente en este ecosistema de tecnologías Web3.
Aquí está el ejemplo más famoso de un hard fork: En 2016, actores malintencionados explotaron un protocolo en Ethereum. Ethereum decidió realizar un "hard-fork" para restaurar los fondos robados. Ethereum es la bifurcación que conocemos y apreciamos, mientras que la original se llama Ethereum Classic, que realmente nadie usa.
Los BIP son conceptualmente parecidos a los EIP de Ethereum. Pero también me recuerda al TC39 de Javascript. Cada uno debe tener sus propios flujos de propuestas y mejoras de cada tecnología, pero el objetivo es el mismo, el desarrollo OpenSource.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?