Un bug potencialmente dañino para Bitcoin fue hallado en el código fuente del cliente de Bitcoin Core la semana pasada. Esto ha generado cierta controversia en la comunidad, especialmente en torno a las responsabilidades derivadas de este tipo de suceso y la forma de reducir su incidencia. A pesar de que el 95% de los nodos de la red operan con Bitcoin Core, este no es el único cliente; en todo caso, es el preferido.
El error ha puesto de manifiesto algunas fallas que se han dado, tanto en el equipo principal de Bitcoin Core, como por parte de la comunidad de usuarios del cliente, que delega en ellos toda la responsabilidad del desarrollo del protocolo. La posibilidad de un ataque de Denegación de Servicio (DoS) y un vector inflacionario que permitiría la creación de más bitcoins han conmocionado a los usuarios.
A través de redes sociales como Twitter, algunos usuarios han asegurado que Wladimir van der Laan, Gregory Maxwell y Matt Corallo son responsables directos de este hecho, dado que el primero introdujo definitivamente el error en el código, el segundo lo evaluó y el último propuso el cambio que desencadenó el potencial vector de ataque.
Algunos han asegurado que el equipo no cuenta con la suficiente experticia y que los procesos de evaluación de las modificaciones del código están siendo insuficientes. Pero Bitcoin Core no es la única opción, es solo el cliente preferido por la mayoría de los operadores de nodos de la red.
Bitcoin Core es una implementación derivada directamente del protocolo original propuesto por Satoshi Nakamoto, de ahí su relevancia. Sin embargo, actualmente existen otros clientes como Bitcoin Knots, BlockCypher, Bitcoin Server y btcd.
Estos otros clientes de código, si bien son completamente compatibles con Bitcoin Core, tienen sus particularidades y son opciones disponibles para aquellos usuarios que no estén de acuerdo con el desarrollo y la estrategia del equipo de Bitcoin Core pero quieren seguir corriendo sus nodos en la red.
Bitcoin Knots
Este cliente es un derivado de Bitcoin Core, principalmente mantenido por el desarrollador, Luke Dashjr. La última versión 0.16.3.knots puede utilizarse como un cliente de escritorio, como en el caso de Bitcoin Core, para pagos regulares o como una utilidad de servidor para comerciantes y otros servicios de pago. Aunque posee otras características y su desarrollador advierte que quienes implementen el código en sus nodos deben hacerlo bajo su propio riesgo, igual que con Bitcoin Core.
Bitcoin Knots comenzó en diciembre de 2011 como Bitcoin Next-Test, un derivado de la rama «principal» de Bitcoin Core, con funciones futuras y propuestas fusionadas de la manera más imparcial posible hacia los cambios mismos. En 2014, debido a las limitaciones de tiempo y al deseo de mantener un derivado más estable y en buen estado, comencé a basar la rama en la última versión estable e incluía solo modificaciones que parecían razonablemente seguras y que personalmente no consideraba problemáticas o defectuosas.
Luke Dashjr
Desarrollador
BlockCypher
Este es un cliente de código creado para manejar múltiples centros de data, de manera que el usuario pueda programar algunas API disponibles para ejecutar clientes múltiples, no exclusivamente para Bitcoin. De hecho, si el desarrollador así lo desea, puede utilizar las API para Ethereum o Dash. BlockCypher cuenta con un cliente de Bitcoin que permite realizar las mismas funciones que un nodo programado con Bitcoin Core y puede interactuar sin problemas con él.
La principal diferencia de este cliente con el resto de las implementaciones es que se trata de un tercero de confianza que provee los servicios, de manera que el usuario puede contar con todas las funcionalidades, aunque la infraestructura que proveen depende exclusivamente de su equipo. Así, proyectos de alto impacto que utilicen sus APIs podrán escalar sus desarrollos de manera más sencilla, así como aquellos clientes que decidan correr nodos con su implementación.
Según su web, BlockCypher utiliza las llaves privadas de sus clientes, aunque aseguran que solo de manera temporal para ejecutar las API. Este procedimiento es cuestionable, dado que pone información sensible en manos de terceros que podría generar vulnerabilidades de seguridad para sus clientes.
Bitcoin Server
Es una aplicación de consola que se incluye como parte de libbitcoin-server, la biblioteca de comandos e instrucciones de Bitcoin. Este cliente ligero incluye la posibilidad de implementar un nodo completo en la red Bitcoin, así como un servicio de verificación de la información de la blockchain de Bitcoin, basado en ZeroMQ. La documentación y los binarios firmados para este nodo están disponibles para Linux, OSX y Windows.
btcd
Se trata de una implementación escrita de nodo completo, que utiliza el lenguaje de programación golang. El cliente de código se ha desarrollado desde octubre de 2013, y a pesar de que aún se encuentra en versión beta, ofrece un softaware estable para interactuar con la red.
De acuerdo con el repositorio de este cliente en GutHub, btcd “asegura que todas las transacciones individuales admitidas cumplan con las reglas requeridas por la cadena de bloques y también incluye controles más estrictos que filtran las transacciones en función de los requisitos de los mineros”.
Una diferencia clave entre btcd y Bitcoin Core es que btcd no incluye la funcionalidad de monedero, de manera que los usuarios de este cliente no podrán realizar ni recibir pagos directamente con btcd.
Imagen destacada por kalpis / stock.adobe.com