Cómo escalar una cadena de bloques de prueba de trabajo »Wiki Ùtil de Doug Beardsley Kadena Marzo de 2021

Esta publicación es una recopilación de tweets de mi cuenta de Twitter @KadenaDirEng

Comencemos con la paralelización clásica de la informática y trabajemos desde allí.

Si una cadena de bloques de Bitcoin puede hacer 5 transacciones por segundo (usando aproximaciones de números redondos para simplificar), dos cadenas de bloques de Bitcoin pueden hacer 10 transacciones por segundo, diez cadenas de bloques pueden hacer 50 tps, etc. Pero este enfoque tiene dos problemas importantes:

1. Cada una de estas cadenas de bloques completamente independientes tiene una moneda completamente diferente. Diez monedas distintas … no tan buenas.

2. Un ataque del 51% se convierte en un ataque del 5,1% … no es bueno.

El protocolo Chainweb de Kadena resuelve ambos problemas trenzando las cadenas. Para 2 cadenas, además de hacer que cada bloque incluya el hash del bloque anterior en la misma cadena, también tienes que incluir el hash del bloque anterior en la otra cadena. Esto significa que cada bloque de Chainweb en una red de 2 cadenas contiene un hash adicional, es decir, 256 bits adicionales de información … ¡nada mal! Pero, ¿qué beneficios obtenemos a cambio?

Bueno, si espera un bloque después de su transacción, se requerirá todo el poder de hash de ambas cadenas para hacer un ataque del 51% en ese bloque. Y el trenzado de hash nos da la estructura Merkle Tree necesaria para hacer pruebas SPV de cadena cruzada, produciendo una moneda única en ambas cadenas. Así que ahora hemos resuelto los dos problemas principales y el costo es de solo 256 bits (32 bytes) de almacenamiento adicional por bloque. Pero si ampliamos esto a, digamos 10 cadenas, eso comienza a sumarse.

Si cada bloque en una red de 10 cadenas contiene los valores hash del bloque anterior en todas las otras 9 cadenas, eso es 288 bytes adicionales de sobrecarga por bloque o 2880 bytes por altura de bloque; se sale de control rápidamente. ¡Pero hay esperanza! ¡Resulta que hay un resultado brillante de una rama oscura de las matemáticas que puede salvarnos y resolver el problema de escalabilidad de la Prueba de trabajo! De regreso a la licenciatura en Ciencias de la Computación, aprendimos un poco de esta arcana rama de las matemáticas llamada teoría de grafos. Si no creía que fuera tan interesante, está en buena compañía. Yo tampoco. Pero resulta que es justo lo que necesitamos para escalar blockchains

Anteriormente mencioné que con dos cadenas, donde cada cadena tiene el hash de la otra cadena, resolvemos tanto el problema de la moneda múltiple como el problema de ataque del 5.1%. Si visualizamos la forma en que estas dos cadenas están conectadas, se ve así.

Necesitamos escalar esto a cientos o potencialmente miles de cadenas. Pero primero tenemos que idear una estrategia sobre cómo deben conectarse las cadenas. Comencemos con diez cadenas y exploremos algunas estrategias diferentes. El enfoque ingenuo sería que todas las cadenas estuvieran conectadas a todas las demás. Eso se vería como la imagen de abajo.

Suponga que una línea significa que hay una flecha en cada dirección.

Como calculamos antes, esto usaría demasiado espacio porque tenemos que almacenar 32 bytes adicionales por cada línea adjunta a un nodo. Podría ser factible con 10 cadenas, pero definitivamente sería demasiado con más cadenas. Necesitamos reducir la cantidad de bordes que tiene cada nodo. Podríamos bajar a solo dos bordes para cada nodo. Esto reduce nuestros requisitos de almacenamiento, pero tiene un problema diferente. Se necesitan 5 saltos para pasar de cualquier cadena a la más lejana. Si escalamos esto hasta 100 cadenas, sería 50 saltos.

Esto significa que con 100 cadenas tendría que esperar 50 bloques antes de que se requiera el 51% de toda la potencia de hash de la red para atacar ese bloque. Incluso en cadenas de bloques como Ethereum con un tiempo de bloqueo relativamente rápido, todavía es mucho tiempo de espera. Ese es también el tiempo que tomaría transferir monedas de una cadena a la cadena más lejana. Entonces tenemos un dilema. Queremos minimizar 1) la cantidad de saltos que se necesitan para llegar a la cadena más lejana, y 2) el número de cadenas a las que está conectada cada cadena.

Aquí es donde la teoría de grafos salva el día. El número de saltos se llama diámetro de la gráfica. Y el número de aristas que tiene cada nodo se llama grado (suponiendo que todos tengan el mismo número, lo cual está bien en este caso). Este es un problema bien conocido en la teoría de grafos llamado problema de diámetro de grado! Ese es el brillante resultado que Kadena usa para escalar la prueba de trabajo en lo que llamamos el protocolo Chainweb.

Los investigadores de la teoría de grafos han estado estudiando el problema del diámetro en grados durante mucho tiempo. Las soluciones óptimas son muy difíciles de encontrar para gráficos grandes. Pero resulta que sabemos cómo construir soluciones que son bastante buenas. Este es el gráfico de 10 cadenas que usó Kadena en el lanzamiento. Si lo examina de cerca, verá que cada nodo tiene tres bordes (en el lenguaje de la teoría de grafos, es de grado 3) y puede pasar de cualquier nodo a cualquier otro nodo en como máximo dos saltos (diámetro 2).

Configuración de gráfico de 10 cadenas de Kadena

Esto significa que solo tenemos que almacenar 3 hashes adicionales por bloque y después de dos bloques puedes transferir monedas de cualquier cadena a cualquier otra cadena y debes tener el 51% de toda la potencia de hash de la red para atacar cualquier cadena.

El 20 de agosto de 2020, la red Kadena se bifurcó de 10 cadenas a 20 cadenas. Las primeras 10 cadenas conservaron las mismas monedas y contratos inteligentes que tenían antes y surgieron 10 nuevas cadenas. Sin embargo, el gráfico tenía una nueva estructura. Aquí está el gráfico de 20 cadenas.

El gráfico Chainweb de 20 cadenas todavía tiene un grado tres, pero ahora tiene un diámetro 3, por lo que tenemos que esperar 3 bloques después de una transacción antes de que la potencia hash de toda la red la proteja. Lo más sorprendente es cuánto potencial de crecimiento nos brinda la investigación del problema del diámetro en grados a medida que nos expandimos más allá de las 20 cadenas. A continuación, se muestra una tabla que muestra el tamaño de gráfico más grande conocido para gráficos de grado d y diámetro k.

La tabla anterior significa que el uso de un gráfico de cadena con un grado y un diámetro de la cadena de bloques de 7 Kadena puede escalar a más de 50.000 cadenas. Y si aumentamos el grado y el diámetro uno más a 8, podemos adentrarnos bien en el cientos de miles!!!

Para recapitular lo que hemos aprendido, El protocolo Chainweb de Kadena aprovecha la investigación de la teoría de grafos en el problema del diámetro del grado para escalar la probada y verdadera de prueba de trabajo fácilmente en el ámbito que necesitamos para la escala del sistema financiero global. Como ha señalado Vitalik Buterin en el pasado, “la única solución para las altas tarifas de tx es escalar”. Como hemos aprendido anteriormente, Kadena ha resuelto el problema de escala. ¡Únase a nosotros para construir el futuro de #DeFi!

Créditos a @_wjmartino_ a quien se le ocurrió esta idea originalmente. Es pura genialidad.

También estamos en: Twitter | Linkedin | Github | Reddit | Discord | Telegram