Los peligros de SegWit, y cómo los evitamos

Bitcoin funcionó sin problemas durante seis años, hasta que Blockstream logró hacerse con el control del cliente fundado por Satoshi Nakamoto mediante una táctica que probablemente será recordada como “el blitzkrieg sobre Bitcoinlandia”. En 2014, tras este avance fulminante, muchos aún creían que Blockstream, lejos de ser la punta de lanza de las élites financieras del mundo fiat –como es obvio a estas alturas–, era una especie de “Red Hat” de Bitcoin que venía a contribuir con el desarrollo open source. Sin embargo, las intenciones de los Blockstream boys quedaron muy pronto en evidencia cuando –para disgusto de los bitcoiners económicamente alfabetizados– se erigieron en planificadores centrales de Bitcoin.

Hoy es muy fácil predecir los movimientos de Blockstream / Core –solo hay que preguntarse qué haría Stalin bajo las mismas circunstancias–, pero en aquel entonces esta organización todavía no había empezado a mostrar los dientes a cualquiera que se atreviera a cuestionar su “hoja de ruta”, y era natural que la gente le concediera el beneficio de la duda.

Hoy sabemos que lo único que satisface a los Blockstream boys es el control total y absoluto sobre el protocolo; de otro modo no podrían imponernos su nuevo sistema. Por eso aquí los llamamos cryptoleninistas –o bitcomunistas–; no solo por su ignorancia de los conceptos más elementales de la ciencia económica, sino principalmente por los métodos totalitarios con los que aspiran a mantener la integración forzosa (“si no te gusta, mala suerte: aquí mando yo”) frente a los partidarios de la independencia (“si no te gusta, eres libre de escindirte”).

Si no tuviéramos la posibildad de rescatar, fork mediante, la idea original de Bitcoin, estaríamos condenados por Blockstream / Core a pagar tarifas cada vez más elevadas, hasta que el límite de 1 MB nos obligue –así como ha obligado ya a tantos usuarios– a abandonar definitivamente la cadena de bloques.

Cada fork motivado por el descontento con los efectos de la planificación centralizada busca desplegar las velas de Bitcoin para aprovechar el impulso de las fuerzas económicas reprimidas por Blockstream / Core. Pero el problema de la hoja de ruta de Blockstream / Core no es solo la imposición de un límite arbitrario al tamaño de los bloques; efectos aún peores podría acarrear la adopción de SegWit, el nuevo formato de transacción que pretenden (¿pretendían?) obligarnos a usar, y que habilitaría la construcción de sus jardines amurallados sobre las ruinas de Bitcoin. Veamos por qué.

Los incentivos peligrosamente distorsionados de SegWit

A pesar de que, en términos generales, el acuerdo de SegWit2X me había entusiasmado, la falla de SegWit que ha señalado Peter Rizun (anteriormente comentada por Peter Todd) lo vuelve inaceptablemente peligroso. Como temo que la comunidad aún no ha comprendido del todo el alcance del problema, quiero explicarlo desde un ángulo diferente.

¿Por qué los mineros verifican las firmas?

Los mineros verifican las firmas para eliminar el riesgo de construir su bloque sobre un bloque no válido.

Debemos tener en cuenta que este riesgo es increíblemente bajo. Crear un bloque no válido es un desperdicio de dinero, por lo que, en general, los bloques no válidos son raros (orden de magnitud de 0,001%).

Afortunadamente para Bitcoin, el costo de verificar las firmas también es increíblemente bajo. Utilizando libsecp256k [N. de la T.: función que acelera la validación de firmas] y hardware moderno, solo toma unos pocos microsegundos por firma.

La razón por la cual el costo de verificar las firmas es tan bajo es que de todos modos es necesario descargarlas. Esto se debe a que hasta que no se hayan descargado todas las firmas no hay manera de verificar qué transacciones ya fueron incluidas y, por lo tanto, no es posible saber qué transacciones se pueden incluir de forma segura en el bloque siguiente. Así solo se puede minar un bloque vacío, sin tarifas.

El efecto de esto se puede observa en la estrategia de minería llamada header-first mining, o SPY mining. Cuando encuentran un encabezado (header), los mineros obtienen un bloque vacío, y sólo comienzan a incluir transacciones del mempool una vez que se han descargado todos los bytes de ese bloque.

¿Qué cambia SegWit?

Con las transacciones SegWit, las firmas son incluidas indirectamente a través del coinbase [N. de la T.: coinbase es el campo de la primera transacción incluida en un bloque que sirve a los mineros para reclamar su recompensa]. Esto significa que los mineros no necesitan descargar las firmas para verificar qué transacciones están incluidas en el bloque.

Esto desequilibra el sistema de incentivos para verificar las firmas.

Es necesario aclarar que esta descripción no es exacta. No es posible cuantificar los costos y los riesgos tan fácilmente, y no hay razón para suponer que SegWit altera ese equilibrio para todos los mineros. De hecho, hay varios factores mitigantes que debemos considerar:

Minar un bloque no válido no solo supone un costo directo por la pérdida de las recompensas, sino también el costo indirecto por el perjuicio que esto ocasiona tanto a Bitcoin como a la inversión de los mineros.

Dado que las firmas son necesarias para las transacciones que se encuentran en el mempool (aguardando confirmación), las ganancias derivadas de no descargar firmas se limitan al conjunto de transacciones desvinculadas del mempool.

En muchos casos, el ancho de banda total es menos limitado que el ancho de banda máximo. Los mineros pueden emplear una estrategia de 3 etapas: comenzar con bloques vacíos (header-first); luego, a medida que se van incluyendo las transacciones, cobrar las tarifas; y luego continuar descargando las firmas en segundo plano.

No obstante, es innegable que (con SegWit) los incentivos han sido distorsionados. Y peor aún, podemos esperar que con el tiempo sean distorsionados aún más.

Esto se debe a que el costo de descargar firmas aumenta a medida que los bloques crecen, mientras que el riesgo de un bloque no válido disminuye a medida que aumenta el precio.

¿Por qué esto es peligroso?

Porque si en el futuro el equilibrio se rompe a favor de cierto N> 0 por ciento de los mineros, éstos son los que se beneficiarán por no descargar las firmas.

En consecuencia, las transacciones SegWit serán menos seguras que las transacciones no-SegWit. Una transacción no-SegWit es segura siempre y cuando ningún atacante controle el 51% del poder de cómputo, mientras que una transacción SegWit es segura siempre y cuando ningún atacante controle el 51-N% del poder de cómputo.

Por lo tanto, si tenemos una desventaja para el 20% de los mineros (digamos los más pequeños, muchos de los cuales tienen un ancho de banda restringido), ¡un minero que controle el 31% del poder de cómputo podría empezar a robar transacciones SegWit!

El problema es mucho mayor que el ataque en sí. No podemos estimar fácilmente el valor de N, por lo que incluso antes de que N llegue a ser demasiado grande y se produzca un ataque, es probable que la seguridad de una transacción que incluya SegWit sea menor que la de una transacción no-SegWit, y por lo tanto será menos valiosa. Aunque solo unas pocas empresas dejen de aceptar transacciones SegWit por esta razón, esto destruiría una de las propiedades más importantes de Bitcoin: la fungibilidad.

No debemos jugar con el delicado equilibrio de incentivos que sostiene a Bitcoin.

¿Y cómo solucionamos el problema de la maleabilidad? [N. de la T.: los partidarios de SegWit argumentan que una de sus ventajas es que soluciona el problema de la maleabilidad.]

La falla mencionada no está relacionada con la solución del problema de la maleabilidad. No es causada por la solución del problema de la maleabilidad por medio de un softfork. No es causada por mecanismo de actualización estándar anyone-can-spend «cualquiera-puede-gastar».

Por ejemplo, esta falla no se encuentra en la propuesta BIP 140 de Christian Decker para solucionar el problema de la maleabilidad con un softfork, ni en una simple solución por medio de un hardfork.

Esta falla es un efecto secundario simple pero desastroso ocasionado por el intento de SegWit de solucionar el problema de la maleabilidad de manera incorrecta.

Y es completamente evitable.

Tomas van der Wansem, desarrollador de Bitcrust

Leer texto original, en inglés

Después no digas que no te lo avisamos.

Si eres un ahorrista con la mira puesta en el largo plazo, no tienes que hacer nada. Puedes volver a echar un vistazo en 2, 5 o 10 años para verificar si hay una sola cadena o más de una, y vender las monedas de cualquier cadena que no te sirva. Mientras tanto, tendrás la opción de usar diferentes alternativas en las cuales estarás automáticamente invertido (podría ser Bitcoin Cash, o la cadena que surja del acuerdo de NY, o alguna otra, si ninguna de estas iniciativas llegara a prosperar).

El engendro de SegWit, junto con las transacciones caras e impredecibles que tanto daño le han hecho a Bitcoin, solo serán inevitables en la cadena controlada por Blockstream / Core. Pero nadie podrá obligarte a utilizarla.

La cadena de bloques principal se liberará de la discapacidad impuesta por Blockstream, o lo hará una cadena que sea producto de un fork. De una u otra manera, la cadena de Satoshi seguirá viva.

Recuerda que Bitcoin no es una carrera de velocidad, es una maratón.