¿Es peligroso tener múltiples implementaciones de Bitcoin? PlatoBlockchain Inteligencia de Datos. Búsqueda vertical. Ai.

¿Es peligroso tener múltiples implementaciones de Bitcoin?

Este es un editorial de opinión de Bill Scoresby, propietario de una pequeña empresa basada en bitcoins y autor de varias guías para la autocustodia de bitcoins.

Los errores que recientemente provocaron que muchos nodos LND no estuvieran sincronizados con la cadena de bloques de Bitcoin fueron probablemente causado por una implementación alternativa.

Tal vez te estés preguntando, "¿Quién en el mundo está usando otra cosa que no sea Bitcoin Core?” Quizás no sabías que existían otras implementaciones de Bitcoin. Quizás no esté seguro de lo que significa una implementación diferente.

Bitcoin Core comenzó como el software que Satoshi Nakamoto Escribió en C++ y lo lanzó al mundo. Se ha actualizado con nuevas versiones hasta llegar a la actualidad. Una implementación alternativa es el software que hace lo mismo que Bitcoin Core (impone las mismas reglas de consenso) pero está escrito de manera diferente, generalmente en un lenguaje de codificación diferente.

¿Cómo rompió una implementación alternativa los nodos en Lightning Network?

Una de las principales versiones de nodos de Lightning Network (LND) se basa en una implementación alternativa de Bitcoin llamada btcd. Cuando un desarrollador creó una transacción multifirma muy grande, btcd no la consideró válida porque contenía demasiados datos testigo. Otras implementaciones de Bitcoin, la más importante Bitcoin Core, no tenían ese límite en los datos de testigos de transacciones de Taproot y, por lo tanto, aceptaron la transacción y el bloque que la contenía como válidos.

El resultado fue que los mineros siguieron agregando nuevos bloques en la cadena porque no usaban btcd y, de acuerdo con sus reglas, nada estaba mal, pero los nodos LND Lightning no podían reconocer ninguno de estos nuevos bloques porque estaban construidos sobre el bloque que contenía esa transacción que vieron como inválida.

Cuando el error volvió a ocurrir el 1 de noviembre, no fueron solo los nodos LND los que se vieron afectados. Algunas instancias de electrs (una implementación del servidor backend para Electrum Wallet) tampoco lograron llegar a un consenso con el resto de la cadena. Si bien los nodos LND quedaron fuera del consenso debido a un problema similar en btcd, fue una implementación de Bitcoin escrita en Rust lo que hizo que los nodos eléctricos se quedaran atrás, incluidos algunos servidores muy visibles dirigido por mempool.space.

El límite en el tamaño de los datos de los testigos existe. para prevenir ataques DoS, y también es parte de Bitcoin Core (aunque Core tiene un límite mayor para las transacciones Taproot). Parece que las otras dos implementaciones que no estaban sincronizadas tenían código que mantuvo el límite más pequeño.

Las diferencias muy pequeñas en las implementaciones pueden conducir a una falta de consenso.

Tener múltiples implementaciones de Bitcoin es peligroso

Satoshi No le gustó la idea de múltiples implementaciones de Bitcoin. "No creo que una segunda implementación compatible de Bitcoin sea alguna vez una buena idea". La razón que dio fue: "Gran parte del diseño depende de que todos los nodos obtengan resultados exactamente idénticos al mismo tiempo que una segunda implementación sería una amenaza para la red".

¿Amenaza? ¿Cual es el problema?

Probablemente haya escuchado que la cadena con la mayor cantidad de prueba de trabajo es la verdadera cadena. Cuando dos mineros diferentes encuentran un bloque al mismo tiempo, la cadena se divide y otros mineros comienzan a construir sobre el bloque del que se enteran primero.

Tan pronto como se agrega un nuevo bloque a un lado de la división, la mayoría de los nodos y mineros lo aceptan como la nueva cadena real y abandonan el otro lado de la división. Estos bloques se conocen como bloques obsoletos, aunque algunas personas los llaman bloques huérfanos.

Dado que el tiempo promedio entre bloques en Bitcoin es de 10 minutos, es probable que toda la red conozca este nuevo bloque antes de que se agregue uno al lado perdedor de la división y gane la cadena con más trabajo.

“Los nodos seguirán la cadena válida con la mayor cantidad de trabajo… La palabra clave aquí es válida. Si el nodo recibe un bloque que determina que no es válido, no importa cuánto trabajo se haga encima de ese bloque, el nodo no aceptará esa cadena”. — andres chow

La palabra clave es "válida". La amenaza aparece cuando un minero encuentra un bloque que otros mineros y nodos creen que no es válido. Los mineros que crean que es válido intentarán construir nuevos bloques en esa cadena. Los mineros que piensen que no es válido intentarán construir sobre el último bloque válido que conocen. El resultado: dos cadenas y no hay forma de saber cuál es la verdadera.

¿Cómo diablos sucedería tal cosa?

Bueno, como vimos en el caso del reciente error con los nodos LND, si hay un error en una implementación de Bitcoin que no está en otras implementaciones, puede llevar a una falta de consenso sobre si un bloque es válido o no.

Bitcoin no tiene un mecanismo para solucionar este problema. La comunidad fuera del protocolo tiene que decidir qué sucede a continuación. Suena muy desagradable.

Tanto es así que el desarrollador de Bitcoin, Peter Todd, ha dicho que otras implementaciones deben coincidir error por error de Bitcoin Core.

Ahí lo tienes: ¡las implementaciones múltiples son peligrosas!

¿Cuáles son las otras implementaciones de Bitcoin y por qué existen?

En primer lugar, casi todo el mundo ejecuta Bitcoin Core.

Luke Dashjr ve alrededor de 43,000 nodos, El 98% de los cuales ejecutan Bitcoin Core. y algo llamado Coin Dance ve cerca de 15,000 nodos, El 96% de los cuales ejecutan Bitcoin Core.. Entonces, por el momento, parece que muy pocas personas están usando implementaciones alternativas.

Sin embargo, hay proyectos activos que intentan construir y mantener otras bases de código que implementen el protocolo Bitcoin. Incluyen:

Jameson Lopp tiene una excelente pagina con una lista más exhaustiva y enlaces a todas las demás implementaciones.

Todos estos proyectos tienen desarrolladores extremadamente talentosos trabajando en ellos, y cada uno ha existido durante más de unos pocos años. ¿Por qué poner tanto esfuerzo en algo que parece un problema?

Bitcoin no tiene permiso. Cualquiera puede descargar la cadena; cualquiera puede interactuar con la red; y nadie puede impedirle codificar o ejecutar una implementación alternativa.

Sin embargo, claramente algunas personas están a cargo de realizar cambios en el repositorio de Bitcoin y el proceso para elegirlos parece informal. Mientras exista el Proceso de propuesta de mejora de Bitcoin (BIP) sugerir cambios en Bitcoin Core, también es bastante informal.

Nada de esto es un problema directo. Como señala Marty Bent, un consenso aproximado puede ser una fortaleza. Si el proceso de cambio de Bitcoin es difícil y poco claro, significa que los cambios serán examinados más minuciosamente.

El siguiente paso del consenso aproximado es tener más de una implementación popular.

No tener implementaciones múltiples podría ser más peligroso

No cabe duda de que ya es un trabajo muy difícil ser una de las personas que tiene acceso comprometido a Bitcoin Core. En un mundo donde Bitcoin desempeña un papel central como instrumento monetario, esta tarea será mucho más difícil. Un pequeño grupo de desarrolladores podría convertirse en un objetivo muy valioso. Como mínimo, se buscará su atención para presionar a favor de diversas inclusiones o exclusiones en la próxima versión del software.

Pensemos en la industria del lobby que existe actualmente en la política. ¿Por qué no se desarrollaría algo así entre las personas que tienen acceso comprometido a la única implementación del protocolo Bitcoin?

Al igual que los políticos ahora, se percibirá que tienen acceso al poder. Como tal, la gente los atacará, excepto que estos desarrolladores no tendrán la fuerza de un estado para defenderlos. ¿Qué clase de vida va a ser esa? ¿Quién lo elegiría voluntariamente?

Al final del día, el sistema financiero global es un peso bastante pesado para descansar sobre los hombros del pequeño grupo de personas que tienen acceso comprometido a un repositorio de GitHub. Tal vez no tan diferente del sistema financiero global del que estamos tratando de alejarnos, donde el futuro monetario de las personas depende de las decisiones de unos pocos banqueros centrales.

¡Múltiples implementaciones al rescate!

La presencia y el uso generalizado de múltiples implementaciones en la red Bitcoin pueden mitigar estas presiones al hacer que sea mucho más difícil para un actor malicioso cambiar el protocolo Bitcoin.

Si los participantes en la red Bitcoin están distribuidos de manera más uniforme entre las diferentes implementaciones, habrá más espacio para que surjan buenas ideas. Proponer cambios a Bitcoin o rechazarlos es mucho más descentralizado si no se hace todo en un solo campo.

Claramente, el uso de diferentes implementaciones de Bitcoin aumenta el riesgo de una división de la cadena. Una división catastrófica de la cadena, en la que una porción significativa de nodos y mineros se bifurcaron accidentalmente, no sería buena para Bitcoin, y ciertamente tampoco para su precio. Pero no amenazaría la naturaleza sin permiso de Bitcoin.

Un entorno de desarrollo centralizado donde todo el mundo construye únicamente sobre Bitcoin Core podría amenazar la falta de permisos. La conversación sobre el tema debe abordar los riesgos de depender tanto de Bitcoin Core en lugar de centrarse únicamente en los problemas que podría causar una implementación alternativa.

Hay un gran, mayor artículo sobre este debate por Aaron van Wirdum. También puede leer una más reciente, hilo informativo sobre ella.

Esta es una publicación invitada de Bill Scoresby. Las opiniones expresadas son enteramente propias y no reflejan necesariamente las de BTC Inc o Bitcoin Magazine.

Sello de tiempo:

Mas de Bitcoin Magazine