¿Qué es Bcoin y por qué existen diferentes versiones de Bitcoin?

Bitcoin es una red de pagos que emplea la denominada cadena de bloques, una estructura de datos que asegura que las transacciones sean irreversibles, imposibles de modificar y censurar. En los últimos años, han nacido una variedad nuevos servicios y productos relacionados a esta criptomoneda, y que ofrecen interfaces de usuario fáciles e intuitivas. Como consecuencia, es cada vez más común que el usuario promedio de esta tecnología no esté al tanto o no interactúe con el software principal del Bitcoin.

Pero, ¿Cuál es ese softwareprincipal de Bitcoin? Cuando Satoshi Nakamoto llevó a la realidad sus ideas y elucubraciones, escribió el programa en el lenguaje de programación C++. En un principio, el software estaba alojado en un servidor privado y sólo una persona era capaz de realizar cambios al código, luego de un tiempo, y de recibir una gran cantidad de comentarios y opiniones, Satoshi decidió aceptar contribuciones al código. Gavin Andressen, uno de los primeros colaboradores del software de Bitcoin, tomó las riendas del proyecto y trasladó el código al GitHub.

GitHub es un enorme repositorio donde los programadores de software pueden subir gratuitamente sus creaciones y compartir el código con otros, permitiendo que virtualmente cualquier persona pueda enviar contribuciones, mejoras y propuestas. Con el paso del tiempo el software de Bitcoin pasó a llamarse Bitcoin Core, considerada la implementación original del proyecto. Cientos de ingenieros, entusiastas, y programadores han aportado su grano de arena para construir un protocolo robusto y seguro.

Pero no todo es color de rosas, y es que, aunque GitHub le permite a cualquiera enviar su propuesta de mejora al proyecto Bitcoin Core, sólo un pequeño grupo de personas son las encargadas de decidir qué mejora es aceptada y cual no. Criptomonedas como Dash nacieron luego de que sus desarrolladores vieron como sus propuestas o mejoras del protocolo Bitcoin fueron rechazadas por los programadores principales de la implementación de Bitcoin. Sin embargo, cuando una propuesta tiene el suficiente apoyo de la comunidad de desarrolladores y ha sido lo extensamente probada, es generalmente aceptada e incluida en el software final.

¿Es Bitcoin Core la única implementación de Bitcoin?

Actualmente existen diferentes implementaciones del software Bitcoin, las cuales son completamente compatibles con la red actual, permitiendo enviar, recibir y validar transacciones. Estas implementaciones suelen nacer de la necesidad de construir características específicas para un uso determinado, o incluso, por razones políticas. Las implementaciones de Bitcoin más conocidas son, Bitcoin Core, Bitcoin Unlimited y Bcoin.

Bitcoin Unlimited, por ejemplo, nació de la frustración de algunos programadores quienes vieron negados sus intentos de incrementar el tamaño del bloque de la red, recordemos que actualmente un bloque de Bitcoin sólo puede alcanzar 1 MB de tamaño, límite que ha resultado ser insuficiente dado el enorme crecimiento de la red.

¿Qué es Bcoin y por qué puede resultar un salto adelante hacia la mejora de la red Bitcoin?

A diferencia de Bitcoin Unlimited, Bcoin no nació como resultado de motivaciones políticas o ideológicas, sino de la pura necesidad de introducir mejoras y características a la red sin romper el consenso o desviarse de la visión original del proyecto. Bcoin es una versión del protocolo que fue escrita desde cero en el lenguaje de programación más popular del mundo, JavaScript.

Recordemos que, aunque Bitcoin era una tecnología novísima, Satoshi Nakamoto no era un programador especialmente bueno, ya que algunas partes del software estaban hechas por una persona que no parecía muy familiarizada con el lenguaje. Algunos opinan que el estilo de programación era muy académico, típico de una persona con conocimientos en el área, pero no un desarrollador consagrado o de tiempo completo.

Bcoin fue creado por Christopher Jeffrey, jefe de tecnología de la startup Purse.io. Enfocada en el ámbito empresarial y de infraestructura, esta implementación fue concebida para escalar con eficiencia en ambientes donde la seguridad y velocidad son primordiales. El software permite que empresas que provean servicios relacionados con el Bitcoin no tengan que encargarse de construir aplicaciones adicionales para mantener la contabilidad de los usuarios, además de que incluye una potente API de desarrollo para automatizar consultas a las wallets y otras estadísticas.

Bcoin también fue la primera implementación alternativa de Bitcoin utilizada para minar un bloque de la red. Lo que demuestra su total compatibilidad con las reglas de consenso que regulan y velan por la integridad completa de la red Bitcoin. Bcoin está siendo usado por grandes empresas del sector como Ripio, BTC.com, Purse, Coinbase, Bitpay, entre otros.

¿Cómo afectan las diferentes implementaciones a la red Bitcoin?

Tener múltiples implementaciones de un software de código libre es inevitable, y esto plantea sus beneficios y desventajas. En principio, varias versiones que soportan un mismo protocolo brindan redundancia, robustez, y en cierta forma, libertad de elección. En Ethereum, por ejemplo, existe la versión del protocolo mantenida por la fundación, denominado Geth, y una implementación llamada Parity, desarrollada por la empresa privada ETHCORE, liderada por uno de los cofundadores del proyecto Ethereum.

En caso de fallos, una empresa que maneje los bitcoins de los usuarios con Bitcoin Core podría cambiar rápidamente su infraestructura y utilizar Bcoin, sin necesidad de largos tiempos de espera o interrupciones. Sin embargo, algunos opinan que tener varias implementaciones del código puede causar incompatibilidades y problemas graves en el consenso de la red entera. Algo similar ocurrió con Ethereum, cuando Geth y Parity sufrieron una incongruencia por breves momentos, lo que desencadenó un fork o separación de la red. Aunque el problema fue solucionado rápidamente, sirvió como ilustración del peligro de tener varias versiones de un protocolo funcionando al mismo tiempo.