-
Somsen sugiere guardar una lista de 7 MB de transacciones iniciales para la revisiรณn de datos.
-
Propone ajustar reglas de bloques de 2010 para que Bitcoin valide transacciones de forma mรกs simple.
Mientras la comunidad de colaboradores de Bitcoin (BTC) debate cambios en el cliente Bitcoin Core y la eliminaciรณn del lรญmite en las transacciones OP_RETURN, el desarrollador Ruben Somsen ha seรฑalado un fallo potencial en el protocolo.
El problema detectado, y vinculado a la Propuesta de Mejora de Bitcoin 30 (BIP-30) sobre su regla de transacciones duplicadas, podrรญa generar riesgos en un escenario improbable de reorganizaciรณn de la red.
Un presunto fallo, segรบn Somsenย
Ruben Somsen, conocido por sus contribuciones a propuestas como Silent Payments, publicรณ el 27 de abril de 2025 un anรกlisis en la lista de correo bitcoindev, donde identificรณ un fallo en BIP-30, una propuesta creada por Pieter Wuille e implementada en 2012 para prevenir transacciones duplicadas en Bitcoin.
El posible fallo, aunque de baja probabilidad, podrรญa provocar una bifurcaciรณn en la red si se diera una reorganizaciรณn de bloques del aรฑo 2010, un escenario que los puntos de control actuales (checkpoints) mitigan. Esa bifurcaciรณn implicarรญa un cambio en las reglas que requiere que todos los nodos actualicen su software, conocido tambiรฉn como โhard forkโ.
Una reorganizaciรณn, por su parte, ocurre cuando los nodos de Bitcoin reemplazan una cadena de bloques por otra mรกs larga, algo que requiere un esfuerzo computacional inmenso para bloques de 2010.
El BIP-30, activo desde el bloque gรฉnesis hasta marzo de 2013 (bloque 227.931, cuando se activรณ el BIP-34), busca evitar que dos transacciones con el mismo identificador (txid) coexistan en el archivo si sus salidas no han sido gastadas. En Bitcoin, cada transacciรณn genera salidas no gastadas (UTXO), que son los fondos disponibles para gastar en futuras transacciones. El BIP-30 verifica que una nueva transacciรณn no cree una salida ya existente en el conjunto UTXO, lo que podrรญa causar โconfusiรณnโ en los nodos y permitir gastos dobles.
Somsen explica que el problema radica en dos excepciones histรณricas de transacciones coinbase (las que generan nuevos bitcoins en cada bloque) en 2010, ubicadas en los bloques 91722/91880 y 91812/91842.
En el bloque 91880, la transacciรณn coinbase sobrescribiรณ la del bloque 91722, eliminรกndola del conjunto UTXO. Si ocurriera una reorganizaciรณn entre estos bloques, los nodos que procesen la reorganizaciรณn eliminarรญan la salida sobrescrita, mientras que los nodos que no la presencien la mantendrรญan. Si esta salida se gastara posteriormente, los nodos tendrรญan conjuntos UTXO inconsistentes, lo que provocarรญa una bifurcaciรณn.
ยซEl problema ocurre cuando reorganizamos la blockchain a un punto entre los bloques 91880 y 91722. La salida sobrescrita desaparece completamente del conjunto UTXO. Un nodo que no presenciรณ la reorganizaciรณn, sin embargo, aรบn tendrรก esa UTXO en su conjunto. Si esa UTXO se gasta, resultarรญa en una bifurcaciรณnยป, afirma Somsen.
ยฟCuรกn real es el riesgo?
El riesgo seรฑalado por Somsen es teรณrico, ya que requiere una reorganizaciรณn de la red Bitcoin hasta 2010, algo prรกcticamente imposible debido a la enorme cantidad de trabajo acumulado en la cadena y los puntos de control que, hasta 2013, impiden esa reorganizaciรณn. Sin embargo, la comunidad estรก considerando eliminar estos checkpoints, lo que harรญa el fallo โteรณricamente explotableโ, aunque no prรกctico, segรบn el desarrollador.
Somsen no aboga por una acciรณn inmediata, ya que ยซel statu quo parece bastante sostenibleยป. No obstante, propone dos soluciones para mitigar el problema. La primera consiste en prohibir reorganizaciones parciales entre los bloques 91722 y 91880, obligando a los nodos a reorganizar los 160 bloques completos o ninguno. ยซConsiderando que son solo 160 bloques con la baja dificultad de minado de 2010, esto no serรญa una gran restricciรณnยป, explica.
La segunda soluciรณn, sugerida tras discusiones con el desarrollador Sjors Provoost, aprovecha la posible eliminaciรณn de los checkpoints, considerada un hard fork (cambio incompatible con versiones anteriores). Esto permitirรญa modificar las reglas de consenso pre-2013 para evitar que las transacciones coinbase de los bloques 91880 y 91842 se eliminen durante una reorganizaciรณn, lo que corregirรญa el fallo.
La ineficiencia de BIP-30: el anรกlisis de Somsen
Mรกs allรก del fallo de consenso, Somsen destaca la ineficiencia del BIP-30, que requiere verificar todo el conjunto UTXO para cada transacciรณn, un proceso costoso en tรฉrminos computacionales. Esta verificaciรณn complicarรญa mรฉtodos alternativos de validaciรณn expuestos por Somsen, como Utreexo, que reducirรญa el tamaรฑo del conjunto UTXO, SwiftSync, que acelera la sincronizaciรณn de nodos, y ZeroSync, basado en pruebas de conocimiento cero (zero knowledge).
El desarrollador propone reemplazar esta verificaciรณn por una cachรฉ de identificadores de transacciones coinbase (txids), que ocuparรญa unos 7 MB hasta el bloque 227931, asegurando que no haya duplicados. Ademรกs, sugiere verificar que las transacciones coinbase no entren en conflicto con las reglas del BIP-34, que garantiza la unicidad de estas transacciones, incluso en caso de una reorganizaciรณn. ยซPodemos reemplazar la ineficiente verificaciรณn del conjunto UTXO de BIP-30 con una verificaciรณn de unicidad de coinbaseยป, afirma Somsen.
La respuesta de Luke Dashjr
El desarrollador Luke Dashjr, CTO y cofundador del pool de minerรญa de Bitcoin OCEAN, respondiรณ a la propuesta de Somsen con dos soluciones adicionales.
La primera sugiere tratar la sobrescritura de una transacciรณn como un gasto, restaurando la UTXO original. La segunda propone no crear las UTXO que serรกn sobrescritas cuando se detecten por primera vez.
Sin embargo, Dashjr cuestiona la propuesta de Somsen de usar una cachรฉ de txids, argumentando que verificar 7 MB de datos por transacciรณn es menos eficiente que comparar 64 bytes. ยซSuena estrictamente peor que cรณmo lo manejamos hoyยป, seรฑalรณ.
En Bitcoin, el mรฉtodo actual para identificar una transacciรณn se basa en comparar el txid, que es el hash de la transacciรณn. Ese hash es generado usando SHA-256 y su tamaรฑo es 32 bytes.
Dashjr podrรญa estar pensando en un contexto donde se comparan dos hashes de 32 bytes (por ejemplo, un txid y otro identificador), lo que sumarรญa 64 bytes. Sin embargo, en la verificaciรณn de BIP-30, solo se usa un txid de 32 bytes por transacciรณn.
Un debate para el futuro de Bitcoin
El anรกlisis de Somsen, respaldado por discusiones con expertos como Antoine Poinsot, Pieter Wuille y Sjors Provoost, pone sobre la mesa un fallo que, aunque remoto, subraya la importancia de revisar las reglas de consenso de Bitcoin.
El fallo en BIP-30 no representa una amenaza inmediata para los usuarios de bitcoin, pero su identificaciรณn refleja el compromiso de los desarrolladores con la seguridad de la red creada por Satoshi Nakamoto.