Lo Nuevo

Bitcoin Cash sufre ataque y +3,300 monedas se gastan dos veces

El 15 de Mayo, estaba programada una Bifurcación o Hard Fork de la Blockchain de Bitcoin Cash ABC. Esto significa que una cadena de Bloques tiene una actualización en su código y entonces se divide en dos.

Cuando ocurrió esta separación de la Blockchain de Bitcoin Cash ABC, un error en el protocolo trajo problemas: Se empezaron a generar bloques vacíos, que desataron la confusión entre los mineros e intentaron minar en la cadena original no bifurcada. Esto causó una nueva división de la cadena consensuada.

Simultáneamente, algún atacante malicioso detectó este error y sacó provecho de él al gastar dos veces la misma moneda. A esta acción se le conoce como Double Spend o Gastos Dobles. Alrededor de 3,392 BCH se gastaron dos veces, lo equivalente a $1,472,128 USD, afirma BitMex. A pesar de ello, los fondos de los usuarios no resultaron afectados.

Además, anteriormente se enviaron accidentalmente fondos a SegWit, (Segregated Witness o Testigo Segregado) un formato de transacción alternativo cuyo propósito es solucionar problemas en las transacciones de Bitcoin. Los mineros consensuaron recuperar estos fondos y revertir las transacciones realizadas.

BitMex, en un estudio identificó 3 problemas principales relacionadas con este error en la Blockchain de Bitcoin Cash que se explican a continuación:

  1. Bloques vacíos.

La Blockchain de Bitcoin Cash ABC era una sola hasta que se generó la bifurcación en el bloque número 582,679. Fue entonces cuando los mineros empezaron a producir bloques vacíos que no contenían ninguna transacción o que contenían muy pocas.

Número de transacciones por Bloque. La línea roja es el Hardfork, fue cuando se empezaron a generar bloques vacíos. Imagen de BitMex

Esto sucedió porque en el protocolo de la Blockchain de Bitcoin Cash había un error. Se espera que el protocolo de las criptomonedas esté diseñado para que sea más conveniente seguir las normas que hacer trampa. Sin embargo en este caso ocurrió exactamente lo opuesto de lo que se espera en el protocolo de una criptomoneda.

"Bitcoin ABC, una importante implementación de software para Bitcoin Cash, parece haber tenido un error, donde las condiciones de validez de las transacciones para ingresar al conjunto de memoria pueden haber tenido menos peso que las condiciones de validez de consenso." Se explica en el estudio de BitMex.

El diseño minucioso en el protocolo de organización de los mineros es muy importante, pues evita que los usuarios malintencionados hagan transacciones que puedan ser aprobadas.

En este caso, el error permitió que se hicieran gastos dobles sin necesidad de ser confirmados, pues fallaron las revisiones de consenso. Un atacante se dio cuenta de este error en la Blockchain de Bitcoin Cash ABC y lo aprovechó para hacer fraude. Cuando los mineros intentaron producir los bloques con las transacciones normales, fallaron y crearon bloques vacíos.

2. División asimétrica de la Blockchain.

Estos bloques vacíos generaron incertidumbre y confusión entre los mineros. Algunos volvieron a minar en la Blockchain que existía antes de la bifurcación y sugerían invalidar los nuevos bloques de la cadena que estaban vacíos y que contenían gastos dobles.

Sin embargo, no hubo un completo consenso de cómo reaccionar ante el problema y las líneas de acción que tomaron los mineros fueron distintas, generando una división de la Blockchain no consensuada y asimétrica, lo cual a su vez, la vuelve más vulnerable.

"Por lo tanto, la división no fue limpia, fue asimétrica, lo que potencialmente brinda más oportunidades para los atacantes." Explica BitMex. "Para que la ruptura fuera limpia cada lado de la cadena debería de considerar a la otra como inválida."
Explicación gráfica de las bifurcaciones en la blockchain de Bitcoin Cash ABC. Imagen de BitMex. 

3. La reorganización coordinada de dos bloques.

Una serie de transacciones no lograron registrarse en la cadena principal, sino que se registraron en la cadena alterna. Estas fueron las transacciones que tuvieron gastos dobles. BitMex hizo un análisis del trayecto que siguieron las transacciones registradas en la cadena alterna y afirma que la mayoría de las transacciones se gastaron dos veces alrededor del bloque 582,705.

Muchas de las transacciones fueron enviadas accidentalmente a Segregated Witness. Estos fondos enviados a SegWit por error, pudieron ser recuperados al revertir las transacciones, sin embargo, esta intervención quebranta cualidad inalterable del sistema de las criptomonedas.

"El bloque huérfano 582,698 contenía 137 transacciones (incluyendo las de Coinbase), de las cuales sólo 111 lograron registrarse en la cadena principal. Entonces, parece que ocurrió un gasto doble exitoso de 2 bloques con respecto a 25 transacciones. El valor saliente de estas 25 transacciones sumó hasta más de 3,300 BCH." Reporta BitMex.

Aprendizajes a partir del ataque.

Este problema es bastante complejo, está conformado por muchos y diversos factores interconectados. El atacante demostró que se pueden violar los protocolos de Bitcoin Cash. Hay mucho que aprender a partir de esta falla en la Blockchain de Bitcoin Cash ABC.

La comunidad de desarrolladores tendrá que operar con más cuidado y coordinación para evitar que cada Hard Fork sea una oportunidad para los atacantes de aprovechar los posibles errores.

Se deben de elevar los niveles de transparencia y coordinación, pues la falta de claridad entre los mineros fue lo que generó una división no consensuada de la cadena. Es necesario establecer canales claros y abiertos de comunicación que faciliten el consenso entre mineros.

Se espera que el equipo de desarrollo de Bitcoin Cash trabaje en eliminar estos errores antes del próximo Hard Fork que será en Octubre. Cada falla en el sistema de las criptomonedas, es una oportunidad para hacer mejoras en el protocolo y desarrollar nuevas alternativas de seguridad.