Descentralizando el límite al tamaño de los bloques

Por Andrew Clifford

Con un software que admita el consenso emergente, la red de nodos completos de Bitcoin encontrará por sí misma el tamaño más adecuado para los bloques.

descentralizacionEl problema más frustrante en la historia de Bitcoin –el del límite al tamaño de los bloques– finalmente está siendo resuelto, de manera imperceptible, invisible por así decirlo, mientras estas palabras son escritas, mientras son publicadas, y mientras son leídas. No por desarrolladores, sino por individuos poseedores de nodos completos. ¿En serio? ¡Sí!

Día tras día están siendo incorporados a la red nodos completos que incluyen BUIP001 (Bitcoin Unlimited Improvement Proposal 001) –un software especial que permite a los dueños de nodos completos elegir el tamaño máximo de los bloques que crearán y aceptarán, así como la demora para la aceptación de bloques más grandes–. Esta capacidad para retrasar la aceptación hace que los nodos se vuelvan tolerantes a los forks cuando estos sean producidos por un desacuerdo en el límite al tamaño de los bloques. Debido a esto, los forks siempre serán transitorios.

Los nodos completos de Bitcoin interactúan durante la propagación de bloques. Las diferencias entre las distintas configuraciones de BUIP001 tienen un efecto global en los nodos que forman parte de la red, y una vez alcanzada una masa crítica, condicionan la emergencia de un límite variable en el tamaño de los bloques mediante un proceso de retroalimentación permanente.

¿Cómo funciona esto? Primero demos un paseo por la historia; rebobinemos seis largos años…

Planificación central en el límite al tamaño de los bloques

Originalmente, no existía un límite al tamaño de los bloques de transacciones de Bitcoin, exceptuando el límite implícito de 32 MB para el tamaño de los mensajes. A mediados de 2010, Satoshi Nakamoto puso un límite más pequeño, de 1 MB. La minería FPGA había sido mencionada por primera vez en bitcointalk, el foro que él fundó. Tal vez estaba preocupado por la posibilidad de que algún minero picarón produjera varios bloques grandes en una etapa en la que todos los usuarios de bitcoin aún necesitaban un nodo completo para usar el sistema. Para esa época, un bitcoin equivalía a casi un dólar, y las personas estaban empezando a tomar en serio esta nueva forma de dinero. Posteriormente, Satoshi dejó claro que el nuevo límite de 1MB por bloque no debía estrangular el crecimiento de bitcoin, y a propósito de su eliminación escribió lo siguiente el 4 de Octubre de 2010:

Puede ser implementado así:

si (numerodebloque > 115000)

   tamañomáximodelbloque = límitemayor

Se puede empezar con mucha anticipación, de modo tal que para cuando se llegue a ese número de bloque, y entre en vigor, las versiones más antiguas que aún no lo tengan queden obsoletas.

Cuando estemos cerca del número de bloque de corte, puedo poner un alerta en las versiones antiguas para asegurarnos de que sepan que tienen que actualizarse.

Es probable que Satoshi asumiera que “limitemayor” sería otra constante. Dos meses más tarde, Satoshi desapareció. Luego de esto, el debate en torno al límite al tamaño de los bloques retumbaría en la comunidad mes tras mes, año tras año.

Al igual que Ponce de León buscando en vano la mítica fuente de la eterna juventud en los pantanos de Florida, todas las búsquedas subsecuentes de un óptimo tamaño para los bloques fueron en vano. Esto se debió a la presunción a-priori de que debe haber un valor universal a nivel de protocolo, conocido y respetado por todos los mineros y nodos completos de Bitcoin, es decir acordado por todos los nodos que quisieran hacer, enviar y recibir bloques. Las propuestas de nuevas constantes se transformaron en propuestas de nuevos algoritmos, BIPs, límites semi-flexibles, hasta que finalmente la toalla fue arrojada. Era simplemente imposible dar con un límite al tamaño de los bloques planificado centralmente que satisficiera a todos los bitcoiners, puesto que ningún límite planificado centralmente iba a ser realmente óptimo para la red: las tarifas serían muy altas, o muy bajas, y la descentralización estaría en jaque debido a capacidad insuficiente o excesiva.

Por desgracia, y en consecuencia, el peor escenario posible se ha presentado y mantenido desde más o menos mediados de 2016: el efecto de red se ha detenido por falta de capacidad debida a la planificación central.

Una solución guiada por el mercado es mucho mejor que la planificación central. El algoritmo más cercano a una solución de mercado es BIP100, basado en el voto de los mineros, aunque tiene la desventaja de una capacidad incorporada de veto a cualquier incremento en el límite al tamaño de los bloques si los dueños de un 21% del poder de cómputo se oponen. Esta solución encontró brevemente el apoyo del 70% del poder de cómputo de la red (expresado por los mineros en los bloques hallados). Los desarrolladores de Bitcoin Core rechazaron BIP100 porque no había un mecanismo de feedback para la mayoría de los nodos completos que no están dedicados a la minería. Así que BIP100 ha languidecido desde entonces. ¿Esto significa que se perdió la esperanza? ¡No! Aún existe una forma más limpia de tomar decisiones orientadas por el mercado: el consenso emergente. Y esto es lo que está siendo desplegado ahora mismo gracias a la implementación de nodos completos de Bitcoin Unlimited.

Los “fenómenos emergentes”, ¿cómo se producen?

Los fenómenos emergentes naturales están presentes en todas partes. Desde los cristales y copos de nieve a las formas espiraladas de las galaxias, pasando por las propiedades macroscópicas de los líquidos, los patrones climáticos, las colonias de hormigas y cada uno de los organismos vivos.

emergencia1
Fig 1. Los patrones que forman las bandadas de aves son fenómenos emergentes de individuos que siguen unas pocas reglas muy simples.

John Holland ha escrito de manera extensa acerca de la emergencia en la naturaleza, y describe los fenómenos emergentes como patrones típicamente persistentes con componentes cambiantes. En la definición del fenómeno emergente solemos encontrar expresiones de apariencia paradójica: invariable y cambiante, constante y fluctuante, inevitable e impredecible. Una propiedad emergente es simultáneamente parte de un sistema y externa a este. La emergencia depende de un sistema para manifestarse, pero trasciende al sistema.

emergencia2
Fig 2. La interacción a nivel peer-to-peer produce el fenómeno emergente con feedback a ambos niveles.

El gráfico mostrado aquí, hecho por el antropólogo Richard Seel, es una expresión abstracta de la emergencia en las culturas humanas. Todos los aspectos de la cultura –lenguaje, standards, mercados, ciudades, corrientes políticas, etcétera– son fenómenos emergentes de la interacción entre individuos o colectivos de individuos.

En el gráfico, la emergencia se inicia en (A) con entidades individuales como lo son las moléculas, los insectos o los humanos. En (B) hay interacción. Un constructo emerge en (C), que trasciende las entidades individuales. Puede ser un vórtice, una colmena o un precio de mercado. Finalmente, en (D) hay una causalidad que parte del fenómeno emergente y que da forma a las características del comportamiento de las entidades individuales. Esta causalidad puede adoptar diferentes formas, como por ejemplo la selección natural o el control adaptativo de información. La emergencia impulsa la auto-organización, y esta puede ser jerárquica con tantas capas como las que suelen describirse en biología multicelular. A la hora de comprender los fenómenos emergentes, el reduccionismo suele fallar de entrada, porque a menudo ni siquiera es posible conocer todas las capas existentes.

Un límite emergente al tamaño de los bloques para Bitcoin

Usando el gráfico anterior de cuatro partes podemos asumir que (A) es la población de los nodos completos de Bitcoin. Las interacciones peer-to-peer están representadas en (B). La flexibilidad en cuanto al manejo del tamaño de los bloques, creada por BUIP001 (o un software similar) da lugar a un constructo emergente (C): el límite al tamaño de los bloques. Finalmente, el feedback descendente en (D) es un límite único al tamaño de los bloques haciéndose efectivo simultáneamente a través de todos los nodos que forman parte de la red.

BUIP001 tiene ajustes definidos por el usuario. Si el nodo no es minero, solo los valores del “tamaño excesivo de los bloques” (EB) y de la “profundidad de aceptación” (AD por “Acceptance Depth”) son los importantes a definir. EB es el tamaño máximo de los bloques con los que el dueño del nodo está cómodo trabajando. AD es la profundidad que un bloque de tamaño excesivo (según el nodo en cuestión) tiene que tener en la cadena de bloques antes de ser aceptado por el nodo. Ser dogmático es innecesario, ya que AD refleja un punto en el rango flexible dentro del que se mueve la opinión de un usuario. El comportamiento de Bitcoin Core tal como existe actualmente puede ser expresado de la siguiente manera: EB=1, AD=999999.

Si el nodo está minando por su cuenta (en solitario) o es el operador de un pool, entonces el “Tamaño Máximo de generación” (MG) también se usa para limitar el tamaño de los bloques que serán creados. En una red Bitcoin saludable, donde la mayoría de los mineros y nodos participan en un consenso emergente, los mineros elegirán un valor para su MG que sea inferior al de su EB.

Ejemplo: El nodo X es uno de los muchos nodos de Bitcoin cumpliendo con estas reglas:

emergencia3
Fig 3. Un nodo completo de Bitcoin con reglas definidas para el límite al tamaño de los bloques recibe un bloque de tamaño “excesivo”.

El dueño del nodo X puso su EB en 4 y su AD en 3.

El bloque 1 es la punta de la cadena actual con mayor prueba de trabajo. El bloque 2 está minado con el tamaño de 6 MB, así que está “puesto a prueba” por el nodo X. Es validado, pero no propagado, y no lo será hasta que hayan 3 bloques construidos sobre este, es decir hasta que se alcance la profundidad de aceptación elegida por el nodo X. En el ejemplo, un nuevo bloque es minado, pero esto también ha retrasado su aceptación por parte del nodo X. El nodo X temporalmente no participa en la gestión de bloques.

emergencia4
Fig 4. Formas alternativas para resolver el caso de un bloque de tamaño “excesivo”.

La situación de los bloques “excesivos” puede derivar en dos escenarios: es aceptado o es rechazado (dejado huérfano) por la red.

A la izquierda, más bloques están siendo añadidos luego del bloque “excesivo”, hasta que el mínimo de AD para el nodo X es alcanzado. Cuando el bloque 5 alcanza al nodo X, este propaga los bloques 2, 3, 4 y 5 normalmente. En este escenario, la mayor parte de la red tiene EB>=6, lo que indica que el nodo X está siendo muy conservador. Este usuario tiene que considerar la actualización de su hardware y repensar su configuración si su nodo se queda atrás muy a menudo.

A la derecha, el bloque “excesivo” es ciertamente demasiado grande para la mayor parte de la red, que en este ejemplo debe tener un EB<6. En una red saludable con consenso emergente, este escenario es posible solo cuando se ven bloques con tamaño récord, mucho más grandes que cualquier bloque minado hasta ese momento en la cadena de bloques de Bitcoin.

Un límite descentralizado al tamaño de los bloques es información que trasciende la capa de transmisión usuario-a-usuario de Bitcoin. Usarlo equivale a blindar este aspecto tan importante de Bitcoin contra cualquier escenario futuro. Un límite emergente siempre mira hacia adelante, como un precio de mercado, ya que incluye las expectativas de los propietarios de nodos con respecto a la capacidad de sus equipos y conexiones. Será emocionante ver cómo se alcanza la masa crítica, y cómo el crecimiento de Bitcoin se pone en marcha de nuevo a un ritmo trepidante. Bitcoin tendrá tarifas de transacción determinadas por un mercado eficiente, en el que el espacio en los bloques es constantemente negociado, y el espacio disponible en los bloques estará siempre adecuándose a la capacidad de los nodos completos que integran la red.

Todas las demás implementaciones de nodos completos están invitadas a incorporar esta función y así contribuir al progreso de Bitcoin.

Observaciones generales y preguntas

Los ajustes configurables por los usuarios que participan en el consenso emergente con respecto al límite al tamaño de los bloques son visibles en la sub-versión del nombre del cliente para los no mineros, y en el campo de la coinbase para los mineros. Estos formatos están detallados en BUIP005.

Incrementando el tamaño al límite de los bloques de manera lenta y segura

Los mineros sólo incrementarán el tamaño máximo de los bloques minados en concordancia con los picos en la demanda de transacciones en el mundo real. Dos nuevos ajustes permiten a los mineros coordinar los incrementos en el límite al tamaño de los bloques: el Tamaño de Generación Futura (FG) y la Altura propuesta para la Activación del Bloque (ABH) que es publicado como (ABH menos altura actual de la cadena de bloques) / 12000 redondeado hacia arriba. Por Ejemplo: /MG2.0/EB3.5/AD4/FG2.5@3/

¿Cómo será superado el límite de 1MB?

El límite actual al tamaño de los bloques es universalmente acatado, así que es un problema cuya solución requerirá una amplia colaboración. Para los mineros, la mejor manera de encararlo es usar MG=1, EB=1 y AD=6 por un período transitorio. Este período finaliza cuando el número de bloques minados con estos ajustes alcanza un nivel con el que los mineros se sienten cómodos, por ejemplo el 75% fijado por los desarrolladores de Bitcoin Classic y recomendado por Haipo Yang de ViaBTC. Los mineros también esperarán para ver una mayoría de nodos que no sean del ecosistema minero anunciando estos valores de EB, para los cuales el ajuste por defecto es EB=16. Una vez que estos requerimientos de fondo se cumplan, los mineros podrán hacer uso de FG y ABH para crear una ventana al primer bloque de más de 1MB y un fork duro se volverá efectivo. Obviamente toda la comunidad Bitcoin tendrá sus ojos puestos en esto y negocios de todo tipo estarán fuertemente motivados a actualizar sus nodos de antemano.

¿Cual es la historia de BIP109?

Los desarrolladores de Bitcoin Classic implementaron BIP109, que tiene un límite fijo de 2MB para los bloques, el cual Bitcoin Unlimited también apoyó con el propósito de superar la inercia que favorece el actual estancamiento en 1MB. No obstante, BIP109 también introduce límites universales adicionales. Estos están en los SIGOPS y SIGHASH debido a una potencial amenaza de ataque de sobrecarga cuadrática en la validación de los bloques. Aun así, estos nuevos límites son problemáticos para la escalabilidad on-chain (dentro de la cadena de bloques) a largo plazo. En vez de esto, la validación paralela de bloques*  es una solución mucho más elegante que hace que los nodos de Bitcoin sean inmunes a los ataques de bloques difíciles-de-validar, y actualmente está siendo probada por Bitcoin Unlimited. Mientras tanto, los límites de SIGOPS de Bitcoin Core se siguen respetando.

*A ser detallado en un venidero artículo.

¿Cómo se lidia con los nodos Sybil?

Los nodos Sybil son usados por un atacante que intenta sesgar el comportamiento de una población de nodos honestos o “reales”. Normalmente son de bajo costo y tienen una participación mínima en la red, la suficiente como para crear sobrecargas y molestias. En el caso del consenso emergente, los nodos Sybil no tienen impacto porque el atacante no puede aumentar artificialmente su peso económico en el ecosistema global de Bitcoin. A nadie le importa si los nodos Sybil pretenden manejar bloques muy grandes pues cada nodo real tiene su propio límite de aceptación de bloques. Si los nodos Sybil envían bloques grandes a los nodos reales, estos bloques probablemente verán postergada su propagación hasta que alcancen la profundidad de aceptación. Pero esto no ocurrirá a menos que los mineros ya estén dispuestos a construir sobre bloques más grandes. Los mineros que estén dispuestos a construir sobre bloques más grandes independientemente del consenso emergente, se arriesgan a generar bloques huérfanos por estar construidos sobre un bloque cuyo tamaño supera el valor EB de la mayoría de los nodos reales.

¿Como afectan los no mineros el límite emergente al tamaño de los bloques?

Los no mineros reflejan un corte transversal en el sistema Bitcoin y representan la mayoría económica. Ellos crean un techo para el límite emergente y descentralizado al tamaño de los bloques, donde los niveles MG de los mineros están por debajo de los niveles EB de la mayoría no-minera, pues el tamaño de los bloques está simplemente reflejando la ecuación de oferta y demanda para el espacio en los bloques en un libre mercado. Es ciertamente posible que esta demanda aumente tanto que los niveles MG choquen con los niveles EB de los no mineros. En esta situación, los mineros recibirán un empuje hacia abajo al tamaño de los bloques, dado que los nodos no mineros estarán seleccionando activamente bloques más pequeños.

El límite emergente al tamaño de los bloques estará profundamente influenciado por la capacidad de los nodos no mineros. Si los mineros que suman un 51% del poder de cómputo persisten en construir sobre bloques más y más grandes, esta sería simplemente otra manifestación del viejo y conocido ataque del 51% que el consenso Nakamoto jamás ha pretendido solucionar. En la práctica, una secuencia sostenida de bloques más grandes de los que quiere el ecosistema afectará negativamente el precio del bitcoin y la rentabilidad de la minería. Ocho años de experiencia han demostrado que los intereses financieros de los mineros y los de los no mineros están íntimamente relacionados, y seguirán estándolo mientras el bitcoin como unidad monetaria tenga algún valor.

¿Por qué la mayoría de los ajustes de los no mineros se dejan predeterminados en la actualidad?

No se ha alcanzado aún la masa crítica para que el límite al tamaño de los bloques se vuelva emergente. Por tanto, es de esperar que los usuarios aún no afinen sus ajustes para adaptarlos mejor a sus circunstancias personales. En un futuro, para los usuarios que no estén seguros de cuáles ajustes son los mejores, probablemente existirán páginas web que proveerán consejos basados en las especificaciones de hardware suministradas.

Lecturas adicionales:

“Emergencia” Nova ScienceNOW

http://www.pbs.org/wgbh/nova/nature/emergence.html  (en inglés)

“Tipos y formas de emergencia”  por Jochen Fromm

https://arxiv.org/pdf/nlin/0506028.pdf  (en inglés)

Leer texto original, en inglés

Imagen por nuzree