martes, 30 de mayo de 2017

El consenso en Bitcoin: hard fork y soft fork.

En estos días de mayor notoriedad de las criptomonedas, muchas personas me han comentado lo difícil que les resulta seguir las noticias de los portales especializados. Es lógico, es un nuevo mundo en el que deben aprender a manejar nuevos conceptos, que tienen repercusión directa sobre su riqueza (cuando hablamos de nuestros ahorros en una moneda).

Términos como "consenso" adquieren nuevas connotaciones -algunos auguran que cuando Bitcoin cruce la barrera de los 10.000 $, el "consenso" se decidirá con balas- y otros como hard fork (divorcio a las malas) o soft fork (separación consensuada, para que nos entendamos) en términos de la criptoeconomía son especialmente importantes.

Este texto que ahora dejo aquí, fue una traducción para el portal ElBitcoin.org de lo que considerabamos un texto crucial y muy explicativo. Sin ser el primer texto que alguien debería leer sobre Bitcoin, es uno de los que -si quiere entender lo que pasa- acabará leyendo.

Aprovechadlo.
:)

PS: Para inversores avanzados... ¿no os parece que tener el ETH a 180 euros cuando -valía 40 € hace 30 días- es demasiada burbuja? ;))
--


El mercado del consenso.

De alguna forma, el debate sobre el tamaño del bloque se puede entender como el debate sobre cómo las reglas de consenso en el Bitcoin son determinadas. ¿Deberían estas ser grabadas en piedra y dificultar los cambios -como propone la gente de Bitcoin Core- o debería evolucionar a través de un proceso en el que las decisiones de los operadores de cada nodo individual fueran el voto, como es la propuesta más abierta de BitcoinUnlimited?

A mucha gente le gusta la idea de que las propiedades de Bitcoin sean inmutables, ya que esto les da confianza en sus propiedades como moneda y en especial las que evitan que sea censurado o embargado. Pero esto es una premisa falsa. La idea de que los parámetros del consenso pueden ser “escritos en piedra” con la implementación de un software de referencia, es inherentemente ilusoria.

Ya que nadie puede ser obligado a correr un determinado tipo de software, ni se puede evitar que lo modifique antes de ejecutarlo, las reglas de consenso están definidas en último caso a través de las elecciones de los participantes. 




Entender los factores que motivan estas elecciones, y cómo las decisiones individuales de cada nodo interactúan globalmente para hacer que emerjan propiedades, puede ayudarnos a entender como las reglas de consenso pueden desarrollarse en un futuro. Y tal vez esta comprensión pueda ayudarnos a tener confianza en que las propiedades de un Bitcoin con buenas raíces en el mercado son mucho más sólidas que aquellas pretendidamente “escritas en piedra”.


Por qué los nodos siguen reglas de consenso.

Es cierto que la red Bitcoin, tal y como existe a día de hoy, sigue las reglas de consenso codificadas en el cliente de Bitcoin Core, pero esto representa simplemente uno de los posibles equilibrios estables. La razón porque la que un operador de nodo en particular decide reconocer la validez del bloque, es porque el resto de nodos refuerzan estas reglas. 

Un minero no querrá gastar PoW (acrónimo de prueba de trabajo; energía y/o gasto económico) produciendo un bloque huérfano ya que perderá la recompensa por su trabajo. Un vendedor no querrá vender bienes a cambio de transacciones si los mineros rechazan incluirlas en los bloques y se puede dar la posibilidad de un doble gasto. En estos ejemplo vemos operadores de nodo aceptando o rechazando bloques de acuerdo a las reglas de validación con el fin de lograr el consenso de la red.


¿Pero qué pasaría en el caso de un “soft-fork”? 

En un “soft-fork”, los mineros se coordinan para imponer reglas de validación adicionales, que no existían previamente, tal vez añadiendo propiedades a las ya existentes en Bitcoin. En este caso, la razón por que la que escogerían adoptar esas nuevas reglas de validación sería para cambiar las propiedades del Bitcoin añadiéndole nuevas ventajas o propiedades.

Otro ejemplo a tener en cuenta son los operadores de nodos de Bitcoin Unlimited en la red Bitcoin que eligen ignorar las reglas de validez para el tamaño de bloque. Estos nodos puede aún interoperar de forma no-conflictiva con los nodos de tipo Core, pero si los mineros produjeran una PoW (una cadena de bloques hecha con prueba de trabajo, PoW) de un tamaño mayor a 1 MB, entonces ellos no seguirían dicha cadena ya que el código de Bitcoin Core lo rechazaría. En este caso, la razón para rechazar la regla de 1 MB de tamaño máximo de bloque es intenta influenciar en las propiedades de Bitcoin como sistema. Quieren permitir un mayor tamaño de bloque.

Así que vemos que las motivaciones de los nodos para adoptar unas reglas u otras de validación caen en dos categorías principales:

a) nodos que aceptan las reglas para mantenerse dentro del consenso con otros nodos.

b) nodos que adoptan ciertas reglas de validez para tratar de influir en Bitcoin como sistema.

Si todos los participantes en la red se ponen de acuerdo en las propiedades del sistema que quieren tener, entonces estos dos grupos distintos se alinean y agrupan en sus motivos. Decidir las reglas de validez del bloque que deberían implementarse en los nodos resulta algo simple: descubramos que reglas de validez del bloque conducen a las propiedades globales del sistema que todos coincidimos querer, y que los nodos las implementen.

Resulta posible, en todo caso, que esos dos objetivos no se superpongan. ¿Qué pasa si tú crees que la red debería seguir ciertas reglas, pero el resto de la red no está de acuerdo? Si un grupo se siente muy seguro sobre una propiedad que ello quieren tener, podrían tomar la decisión de iniciar su propio camino y separarse de la red, bien sea con algún sistema de salida, un fork sobre la blockchain o simplemente creando otra moneda alternativa desde cero.

Pero las cosas son mas interesantes y complicadas si los dos objetivos están mas equilibrados. Entonces tenemos una situación donde los motivos están mezclados y pueden equilibrarse entre ellos. 

Este tipo de motivo mixto dinámico fue explorado por Thomas Schelling en su libro “La estrategia del conflicto”. Schelling da un marco teórico para comprender situaciones donde existen incentivos tanto para la competición como para la cooperación. El análisis de Schelling es muy útil para entender las dinámicas de Bitcoin donde una proporción significante de participantes tienen deseos en conflicto sobre cómo la red debería funcionar, pero a la vez tienen un alto incentivo para mantenerse en consenso con el resto de la red.


Motivos mezclados.

Las estrategias con motivos mixtos pueden verse como la combinación de la coordinación de estrategias, donde los intereses son coincidentes y existen estrategias de negociación allí donde son divergentes. La coordinación de estrategias incluye la señalización y convergencia en puntos clave. La negociación incluyen estrategias orientadas a reforzar los acuerdos, normalmente con amenazas creíbles de castigo.

Estas estrategias incluyen riesgos también así como potenciales beneficios. Para comprender las dinámicas de como estas estrategias funcionan, necesitamos entender como los incentivos y la tolerancia al riesgo de los participantes interactúan para dar forma al comportamiento individual, y como estos comportamientos individuales se combinan para hacer emerger propiedades del sistema a escalas mucho más grandes.


Reglas de validez como amenaza de separación.

Que un nodo se una y dé su fuerza a un grupo de reglas de validación es a la vez equivalente a la amenaza de que ese nodo se pueda escindir de los demás nodos si ellos se desvían de las reglas que se comprometieron a mantener. Los nodos influencian la aceptación de las reglas de consenso, tanto si eso significa mantener algunas existente como intentar conseguir otras nuevas, amenazando con separarse de los nodos que no adopten esas reglas, y por lo tanto formar un grupo independiente del resto, que ya no sigue esas reglas. La efectividad de esta amenaza dependerá de varios factores como son:

- El número y la importancia económica de los nodos que quiere separarse.

- El grado en el que la amenaza de separación se comunica al resto de la comunidad.

- El posicionamiento percibido con las antiguas reglas, o el deseo de unirse a las nuevas y separarse.

- La expectativa de viabilidad del nuevo grupo independiente en el mercado. 

Aquí es donde el mecanismo de Daniel Krawisz en su artículo “Quién controla Bitcoin” se manifiesta- En este caso, las predicciones creíbles de las reacciones de los inversores sustituyen a la separación en realidad.


Veamos unos pocos ejemplos:

Ejemplo 1: Regla de validez de tamaño de bloque.

La mayoría de los nodos de la red actualmente aceptan la regla por la que rechazarán bloques mayores de 1MB. Si un minero produjera un bloque mayor de ese tamaño, ellos saben (puede predecir con alto grado de confianza) que será un bloque huérfano que no obtendrá recompensa. 

Incluso si una mayoría de mineros se pusieran de acuerdo para construir una cadena con bloques de mayor tamaño, si los exchanges y usuarios de Bitcoin la rechazasen, perdería su valor. Corriendo sobre software que rechaza los bloques de un tamaño superior, la mayoría económica se compromete a separase de aquellos mineros que produzcan bloques de mayor tamaño. Si esto llegase a pasar, entonces el mercado se colapsaría y se perdería el valor. Pero ya que la amenaza es creíble, los mineros no producirán dicha cadena. Los mineros seguirán al dinero, y la voluntad de la mayoría económica. 

Pero imaginemos que ocurriría si las proporciones dieran la vuelta. ¿Qué ocurriría si la inmensa mayoría de nodos relevantes (exchanges y procesadores de pagos) decidieran correr sobre un software como Bitcoin Unlimited, y dejar de apoyar la regla de 1MB en la validación del bloque?

En este caso, si una minoría económicamente débil decidiera seguir apoyando los bloques de 1MB, sería una acción muy arriesgada para ellos. Haciendo eso aceptan rechazar una cadena que contenga bloques de tamaño mayor a 1 MB incluso si los mineros producen semejante cadena con la mayor prueba de trabajo, lo que causaría daño a la red bajando el valor del Bitcoin. 

En este caso, lo mineros tendrán que sopesar las pérdidas de eficiencia en red frente al beneficio de un tamaño de bloque superior, y el valor que ellos esperan que tal cambio añada a Bitcoin. Si el beneficio esperado creando bloques mayores resulta mas grande que el daño que se espera de la amenaza de una escisión en la red, entonces es posible que elijan producir bloques más grandes.


Ejemplo 2: Regla de los 21 millones de monedas.

Si el tamaño del bloque es determinado por las fuerzas finales emergentes del mercado, qué pasa entonces con algunas reglas más importantes de validación como el límite de inflación y el límite de 21 millones de monedas? ¿Podría este proceso suponer una amenaza para la esencial propiedad de la emisión limitada de Bitcoin?

Consideremos una situación similar a la del último ejemplo. Una mayoría de nodos dejan de adoptar el limite de inflación de Bitcoin, tal vez porque están convencidos de que es necesaria más inflación para mantener los precios (medidos en Bitcoin) de una deflación rápida, o tal vez creen que los mineros necesitan una mayor recompensa por asegurar la red. Pero una minoría de nodos está en desacuerdo. Muchos poseedores de largo tiempo y los creyentes en esta buena propiedad del dinero, rechazarán los bloques que violen la cláusula de emisión limitada aunque esta produzca la cadena más larga. 

Ahora los mineros tienen que asegurarse: si ellos minan “la moneda con inflación”... ¿qué probabilidad tiene la moneda clásica de persistir y mantener su valor?

¿Cómo se medirán ambas monedas en el mercado? ¿Compensarán los riesgos de tal acción frente a sus supuestos beneficios? Si estos riesgos se perciben como significantes para ellos, entonces la vieja moneda y su minoría serán capaces de detener la violación de las normas existentes para la moneda, lo que sirve de “Punto de Schelling” del que resulta difícil desviarse. 

Además, el resto de nodos, al evaluar la situación de una forma similar tendrían que elegir entre apoyar a la moneda “con inflación” y la clásica para evitar el riesgo de una pérdida en valor y una escisión.

Ejemplo 3: SegWit como soft fork

En el caso de un “soft fork” (separación suave), los participantes de la red se coordinan para añadir nuevas reglas de validación que no estaban originalmente aceptadas. Este proceso esta encabezado principalmente por mineros que pueden crear bloques huérfanos y quedarse así sin su recompensa si fallan en aplicar las nueva reglas que no estaban antes en vigor. Los nodos de no-mineros que deciden no unirse a las nuevas reglas, seguirán y aceptarán la cadena más larga, y de esta forma por lo tanto seguirán finalmente el nuevo consenso de los mineros.

El hecho de que los nodos que no acepten las nueva reglas de validación, acabarán finalmente siguiéndolas al reconocer la cadena más larga como la válida, se ve frecuentemente como una razón a favor de los “soft-forks”. En cierto sentido, los mineros pueden usar un “soft fork” para forzar cambios en el protocolo, tanto si los nodos no-mineros consienten o no. Debemos darnos cuenta, en todo caso, que esto viene con algunos de los riesgos de adoptar las reglas del soft fork. 

Si una gran proporción de la comunidad decide no aplicar las nuevas reglas para la validación de bloques, seguirán la cadena más larga pero dejando la puerta abierta a que dichos cambios sean revertidos posteriormente. Las nuevas reglas habrían actuado bajando las garantías de seguridad, de forma similar a los monederos SPV.

En el caso de cambios que producen poco consenso, este riesgo se acentúa. Los nodos que apoyan el soft fork tienen que considerar con seriedad que se pueden quedar aislados del resto de la red si se produce una cadena que viola las nuevas reglas, y la mayoría de la red podría seguir adelante con esa cadena de tamaño superior.

Este riesgo no es puramente académico. De hecho, dicho fallo en el consenso ocurrió en julio de 2015 tras el soft fork BIP 66

El cambio que se implementaba no era discutido, y simplemente ajustaba ciertas reglas sobre la codificación estándar seguida. Lo que ocurrió fue un problema de coordinación entre los mineros. Algunos de los mineros que habían dicho que aceptarían las nuevas reglas, no lo hacían y estaban rechazando bloques que no cumplían con el antiguo estándar. 

Cuando se producía un bloque que violaba las normas, estos mineros continuaban creando por encima de este, haciendo más grande la cadena sobre esos bloques. Lo que esto muestra es que hay riesgos de divergencia del consenso cuando los nodos empiezan a apoyar nuevas normas de validación. Este riesgo sería mayor cuando más controvertido fuera el cambio a aplicar, con un grupo significativamente grande que se niegue a apoyar las nuevas reglas.



Soft forks y hard forks.

Viendo las cosas de esta forma -dándonos cuenta de que apoyar una reglas de validación equivale al mismo tiempo a amenazar con separarte de los nodos que no las apoyen- nos da una nueva forma de mirar a los soft forks y a los hard forks. Un soft fork sucede cuando cuando los nodos apoyan nuevas reglas que no estaban en vigor. Esto aumenta el riesgo de que en los nodos se produzca a una divergencia del consenso con otros nodos y eso potencialmente reducir la seguridad y confianza en las nuevas reglas de validación.

Un hard fork, por el contrario, conlleva un descenso en las amenazas. Los nodos pueden aceptar un hard fork simplemente retirando el apoyo a de una norma. Esos nodos seguirán la mayor cadena de PoW, ya que de dicha forma tienen menor riesgo de caer fuera de la mayoría económica.

Queda claro que cualquiera de los cambios de las propiedades monetarias de Bitcoin pueden lograrse mediante un soft fork igual que con un hard fork. Por ejemplo, un soft fork de extensión de los blocks podría ser usado para aumentar el límite de los 21 millones de monedas. Dado que los hard forks no resultan más peligrosos para Bitcoin y sus propiedades que los soft forks, tiene sentido que los operadores de los nodos prefieran reducir sus riesgos de rechazar la mayor cadena de PoW al relajar las normas de validación, permitiendo eso la posibilidad de cambiar mediante hard-fork la blockchain.


Una visión del futuro.

Un red Bitcoin sana en el futuro debería componerse de múltiple nodos implementando proyectos en competición. Algunos proyectos se especializarían en servir a las necesidades de los mineros o los comerciantes. Otros podrían hacer negocio con los “clientes ligeros” ofreciendo pruebas compactas contra fraudes que les ayuden a asegurar la red. 

Además de competir por las nuevas capacidades, en cualquier caso, tendrían que competir por el consenso deseado de comportamiento. Tenedores e inversores se asegurarán de que se preserve la escasez. Los comerciantes y procesadores de pagos defenderían la facilidad en las transacciones. Los mineros trabajarían para mantener unas tasas que compensen su necesario trabajo.

El resultado de esta visión sería una red Bitcoin donde fallos sobre el consenso accidental fueran muy improbables, y los cambios consensuados que mejoren Bitcoin ocurrirán suavemente. Elecciones finales que coinciden con incentivos individuales se combinarían para producir un resiliente, flexible y confiable sistema.


Conclusión.

La promesa de Bitcoin es que puede proporcionar un dinero “basado en el mercado” que sea resiliente frente a intentos de destruirlo. Para justificar la creencia de que Bitcoin tiene valor, necesitamos tener confianza en que sus propiedades monetarias seguirán siendo tales en el futuro. 

La actual situación, con una aplastantemente mayoritaria implementación dominante, centraliza la confianza y deja las propiedades básicas de Bitcoin susceptibles de cambio. Un futuro donde las propiedades fundamentales del Bitcoin sean defendidas y apoyadas a través de la interacción con los participantes del mercado es la única esperanza para la estabilidad a largo plazo.

La idea de que la comunidad del Bitcoin necesita alcanzar un consenso social previo a realizar cambios sobre el protocolo pierde de vista el punto de cómo se gobierna el sistema. Nadie debería estar al mando, y por lo tanto nadie puede estar en posición de determinar si se ha alcanzado suficiente consenso social. Cualquiera es libre de intentar un hard-fork en cualquier momento, y es cosa del mercado decidir si la propuesta tiene éxito o no. 

No deberíamos buscar refugio en la falsa seguridad de un control vertical, de la presión social y el diseño monocultural. Para ganar confianza en que las fuerzas de los mercados son una fuerte defensa frente a ataques de las propiedades monetarias del Bitcoin, nuestra mejor forma de proceder sería adoptar mecanismos que faciliten un libre mercado en el comportamiento consensuado.




No hay comentarios:

Publicar un comentario