Desglosando ETH 2.0 – Explicación de la fragmentación

En los últimos días, le dimos una descripción general de cómo funciona Ethereum 2.0, o ETH 2.0, y luego le mostramos ETH 2.0 Staking y los matices del Protocolo de Casper. En este, veremos otra característica masiva de ETH 2.0: Sharding.

Escalabilidad de Capa 1 vs Capa 2

Una crítica común de varios sistemas de criptomonedas y altcoins es la escalabilidad. En pocas palabras, si la tecnología de la cadena de bloques y la criptomoneda va a impulsar el mundo DeFi del mañana, debe ser capaz de soportar a miles de millones de personas. Esto es algo que nuestra guía completa de DeFi profundiza, pero ya hay muchas soluciones. Las técnicas de escalabilidad se dividen principalmente en las siguientes categorías: capa 2 y capa 1.

Escalabilidad de capa 2

Estas son soluciones de escalabilidad fuera de la cadena creadas sobre la cadena de bloques. La idea aquí es dejar la capa base sola y ponerle arquitectura adicional encima. Esta capa se ocupa de cálculos complejos que mitigan los cuellos de botella arquitectónicos de la capa base. Raiden y Plasma son ejemplos de escalabilidad de capa 2, que exploraremos en artículos futuros.

Escalabilidad de capa 1

Las técnicas de escalabilidad que se ejecutan dentro de la cadena de bloques se denominan capa 1. El aumento del tamaño del bloque y la fragmentación son las dos técnicas de escalabilidad de capa 1 más conocidas.

Base de datos de fragmentación

La fragmentación fue inicialmente una técnica utilizada para dividir bases de datos voluminosas en fragmentos o fragmentos más manejables horizontalmente. Mira esta tabla:

Entonces, ¿ves lo que pasó aquí?

Hay una gran base de datos con 6 filas. Al descomponerlo, lo estamos convirtiendo en tres fragmentos más pequeños de tamaños manejables. Esto ocurre solo a través de particiones horizontales. Para comprender esto, considere el siguiente ejemplo.

Considere esta tabla:

1crpvggutlggaieh490s_sk_rmavbild_2020-06-17_kl-_18-43-17-8843475

Let’s partition this table vertically:

2sktfnltymv65qj9euhcq_sk_rmavbild_2020-06-17_kl-_18-46-40-9446873

¿Mira eso? Debido a la partición, la tabla se convierte en dos tablas completamente diferentes. La partición horizontal solo cambia la tabla en tablas más pequeñas con las mismas características.

El mismo concepto se puede extender a la cadena de bloques, en la que el estado de la cadena se fragmenta en trozos más pequeños y manejables, llamados fragmentos.

¿Por qué se usa Sharding?

Uno de los mayores problemas con las criptomonedas y la razón principal detrás de la creación de Ethereum 2.0 es la escalabilidad. Ethereum actualmente puede hacer <25 transacciones por segundo, lo cual es bastante abismal. La razón detrás de esta baja velocidad es el protocolo de consenso de prueba de trabajo (POW) y el diseño arquitectónico inherente a estas criptomonedas.

ETH 2.0: procesos secuenciales vs paralelos

La mayoría de las operaciones transaccionales que tienen lugar en criptomonedas son de naturaleza secuencial. Piense en cómo funciona una transacción:

  • El remitente inicia la transacción enviándola a la dirección pública del destinatario. Firman la transacción con su firma digital.
  • Los mineros recogen la transacción, verifican la firma y comprueban si el remitente tiene saldo suficiente para cumplirla o no.
  • Después de eso, agregan la transacción a su bloque.
  • El bloque se agrega a la cadena de bloques, luego de lo cual se realiza la transacción.

Como puede ver, todo el proceso es extremadamente secuencial. Cada paso depende del correcto cumplimiento del paso anterior. Este problema se agrava aún más a medida que la red aumenta de tamaño.

Es por eso que elegir un proceso paralelo puede ser una alternativa más viable. Dividir un estado de blockchain en varios fragmentos y procesarlos en paralelo puede, en esencia, permitirle dividir y conquistar.

Imagine una red con tres nodos: A, B y C. En un formato secuencial, cada uno de ellos habría tenido que verificar un conjunto de datos D individualmente. Sin embargo, con Sharding, D se dividiría en tres fragmentos D1, D2 y D3. Cada uno puede tomar un fragmento individual y procesarlos todos al mismo tiempo. Incluso si solo estamos considerando tres fragmentos, la paralelización definitivamente puede acelerar los procedimientos de manera espectacular.

Sin embargo, escalemos las cosas al tamaño de Ethereum, que actualmente tiene más de 6,970 nodos. Si se ejecuta de manera óptima, la mejora en el rendimiento general será inmensa. Eth 2.0 eventualmente se dividirá en 1.024 fragmentos y se espera que, en teoría, esto aumente el rendimiento de la red en> 1000X.

El costo de alojar un nodo

A continuación, veamos otro aspecto de la escalabilidad. Como ya sabrá, Ethereum es una red de igual a igual. No hay centros de datos centralizados. Toda la red depende de que sus nodos hagan su trabajo. En Ethereum, cada nodo individual tiene el mismo poder y privilegio que sus otros pares. En Ethereum, puede ser un cliente ligero o un nodo completo.

Los clientes ligeros son nodos que descargan una parte de la cadena de bloques en su sistema. Les permite verificar la ejecución de la transacción sin tener que descargar y mantener la cadena de bloques completa.

Un nodo completo es cualquier sistema conectado a la red principal que se ha descargado por completo y mantiene regularmente la cadena de bloques. Son prácticamente la columna vertebral de la red Ethereum y cumplen las siguientes funciones:

  • O minar bloques o asegurarse de que se otorgue la recompensa de bloque correcta por cada bloque extraído.
  • Ejecute completamente todas las reglas de consenso de la red.
  • Asegurarse de que las transacciones tengan las firmas correctas y de que los bloques tengan el formato de datos adecuado.
  • Por último, su función más importante es asegurarse de que no se produzca un doble gasto en la red.

El problema es que los nodos completos de Ethereum deben descargar y mantener toda la cadena de bloques en todo momento. El problema aquí es que la cadena de bloques Ethereum es enorme. Se está acercando rápidamente al tamaño de 1 TB, por lo que cada vez es más difícil para los nodos normales almacenar todos los datos.

Entonces, ¿cómo va a ayudar Sharding aquí? Según las preguntas frecuentes oficiales de Sharding en GitHub, la idea clave es permitir que Ethereum procese hasta más de 10,000 transacciones por segundo sin obligar a cada nodo a gastar miles de dólares en equipos de hardware. Es por eso que Sharding es una solución tan brillante a este problema. La distribución de la carga de trabajo por nodo disminuye significativamente.

¿Qué es Sharding Ethereum?

Finalmente, veamos cómo funciona Sharding en ETH 2.0. Todo el estado de la cadena de bloques ethereum se denomina “estado global”. Este estado se divide en fragmentos y cada uno de estos fragmentos tiene su propio estado. Estos estados, fragmentos y raíces globales forman un árbol Merkle.

Entonces, veamos qué está sucediendo aquí. Cada uno de los niveles del árbol se deriva de uno de los nodos del nivel superior.

Mecánica de fragmentación ETH 2.0

Cuando se activa Sharding, sucede lo siguiente:

  • El estado se divide en fragmentos.
  • Cada cuenta única pertenece a un fragmento.

Para visualizar cómo funciona esto, tomemos el ejemplo de Devcon de Vitalik Buterin.

Imagina que Ethereum se ha dividido en miles de islas. Cada isla puede hacer lo suyo. Cada isla tiene sus propias características únicas y todos los que pertenecen a esa isla, es decir, las cuentas, pueden interactuar entre sí Y pueden disfrutar libremente de todas sus características. Si quieren contactar con otras islas, deberán utilizar algún tipo de protocolo.

Ethereum 2.0 ejecuta esto creando dos niveles de interacción.

El primer nivel

El primer nivel en la interacción del fragmento es el grupo de transacciones. Cada fragmento tendrá su propio grupo de transacciones único.

Este grupo se subdivide además en un encabezado y un cuerpo de grupo de transacciones.

Encabezado del grupo de transacciones

El encabezado del grupo tiene una parte derecha e izquierda distintas.

La parte izquierda tiene los siguientes componentes:

  • El ID de fragmento al que pertenece el grupo de transacciones, en este caso “43”.
  • La raíz previa al estado, es decir, el estado de la raíz de ese fragmento en particular antes de que las transacciones se pusieran dentro de él.
  • La raíz del estado posterior es el estado de esa raíz después de colocar el grupo de transacciones dentro de ella.
  • Finalmente, hay una raíz de recibo que reconoce el hecho de que el grupo de transacciones ha entrado en la raíz.

La parte derecha del encabezado es un grupo de validadores elegidos al azar que verifican las transacciones dentro del propio fragmento.

Características de nivel uno

Hasta ahora, hemos visto los componentes que pertenecen al nivel uno, veamos cómo todo se junta:

  • Cada transacción especifica el ID de fragmento único al que pertenecen.
  • Se ha producido una transacción que pertenece a un fragmento específico entre dos cuentas en ese fragmento.
  • El nivel también muestra la transición de estado especificando la raíz del estado anterior y posterior.

El segundo nivel

Ahora, veamos el segundo nivel de Sharding de ETH 2.0. Lo que está viendo en la imagen de arriba es una cadena de bloques estándar, pero tiene dos raíces, en lugar de una:

  • Raíz del estado: ¿Recuerda nuestro diagrama de árbol de Merkle de antes? La raíz del estado es el nodo raíz de todo el estado.
  • Raíz del grupo de transacciones: el nodo raíz de todos los grupos de transacciones que están contenidos dentro de todos los fragmentos de ese bloque.

Características del nivel dos

  • Este nivel actúa como una cadena de bloques simple que acepta grupos de transacciones en lugar de transacciones.
  • Un grupo de transacciones solo se acepta si la raíz del estado previo coincide con la raíz del fragmento en el estado global. Además, todas las firmas del grupo de transacciones deben validarse.
  • Una vez que un grupo de transacciones ingresa al bloque, la raíz del estado global de, como se menciona en el bloque, se convierte en la raíz posterior al estado de ese ID de fragmento.

Comunicación entre fragmentos

Muy bien, ahora ya sabe cómo funcionan los fragmentos individualmente y de qué están compuestos. Sin embargo, lo último que necesita Ethereum es que estos fragmentos se conviertan en silos individuales por sí mismos. Debe haber un método con el que estos fragmentos puedan comunicarse efectivamente entre sí.

Para pintar una imagen más clara, volvamos a la analogía de la isla de Buterin. Si las islas tienen que prosperar, deben interactuar eficazmente entre sí mediante un protocolo en particular. Además, para reducir la sobrecarga y los gastos de comunicación, las islas deben encontrar una forma de comunicarse solo cuando sea necesario.

El mismo principio se aplica a la comunicación de fragmentos. Los desarrolladores de Ethereum necesitaban responder ciertas preguntas para garantizar una comunicación entre fragmentos eficaz:

  • ¿Cómo pueden los fragmentos comunicarse entre sí mientras brindan la misma seguridad que espera la red Ethereum?
  • ¿Cómo puede Sharding ofrecer la escalabilidad masiva esperada sin comprometer la seguridad?

Comunicación entre fragmentos de ETH 2.0

El protocolo de comunicación entre fragmentos de ETH 2.0 de elección es el “paradigma de recepción”.

  • Como explicamos anteriormente, cada transacción del conjunto genera un recibo en el fragmento.
  • La cadena de balizas ETH 2.0 tendrá una memoria compartida distribuida donde se almacenarán estos recibos.
  • Los otros fragmentos pueden ver los recibos dentro de la cadena de balizas. Debido a la propiedad inmutable de la cadena de bloques, no podrán manipularla.
  • Por lo tanto, los fragmentos podrán beneficiarse entre sí sin afectar la finalidad.

Los dos mayores problemas con las comunicaciones entre fragmentos son las complejidades operativas y la latencia. Veamos cómo ETH 2.0 mitiga estos baches en la carretera.

1 Eliminando complejidades

Vitalik Buterin ha anunciado dos propuestas para crear un Ethereum totalmente fragmentado, con un “marco de capa de consenso relativamente mínimo”, que proporciona suficiente apoyo para desarrollar marcos de contratos inteligentes complejos.

Las propuestas serán:

  • Desvíe varias tareas y responsabilidades de los fragmentos individuales a la cadena de balizas.
  • Asegúrese de que los fragmentos tengan su propio estado y ejecución únicos.
  • Reduzca la complejidad de cada fragmento y mantenga varias funcionalidades de red.
  • Los fragmentos tendrán suficiente funcionalidad para crear un entorno de ejecución para admitir contratos inteligentes en fragmentos, comunicación entre fragmentos y otras características.
  • Introduzca tres nuevos tipos de transacciones: NewExecutionScript, NewValidator y Withdrawal para realizar estas tareas.

Analizando los nuevos tipos de transacciones

  • NewExecutionScript crea un script de ejecución que puede contener ETH.
  • NewValidator agrega nuevos validadores al sistema.
  • La retirada elimina los validadores de la cadena de balizas.
  • La adición y baja de validadores se autoriza mediante un script de ejecución y un sistema de recibo.
  • Estas nuevas innovaciones permitirán a Ethereum realizar comunicaciones entre fragmentos mientras aprovecha la abstracción de la capa 2 para intercambiar todo el éter y ejecutar contratos inteligentes.
  • Esto elimina todas las operaciones complejas de los fragmentos individuales y las mantiene lo más sencillas posible.

2 latencia de comunicación

Para comprender cómo ocurre este retraso, veamos cómo funciona la comunicación entre particiones:

  • Alice quiere enviar una ficha de Shard A a Shard B.
  • Durante esta transacción, el token se quema en el fragmento A y guarda un registro de la dirección. Luego, el valor se envía al fragmento B de destino.
  • Después de un poco de retraso, cada fragmento aprende sobre la raíz del estado de los otros fragmentos a través de chismes.
  • Una vez que los fragmentos han verificado la transacción, el fragmento B recupera el recibo del token del fragmento A.
  • Finalmente, Shard B recibe la ficha enviada desde Shard A.

Como puede imaginar, este proceso causa muchos retrasos que dañarán la experiencia del usuario y van en contra de todo el espíritu de escalabilidad de ETH 2.0. Vitalik explicó la solución a este problema dando los siguientes ejemplos:

“… si Bob tiene 50 monedas en el fragmento B y Alice envía 20 monedas a Bob desde el fragmento A, pero el fragmento B aún no conoce el estado del fragmento A y, por lo tanto, no puede autenticar completamente la transferencia, el estado de la cuenta de Bob se convierte temporalmente en ’70 monedas”. si la transferencia de Alice es genuina, de lo contrario 50 monedas. ‘Los clientes que tienen la capacidad de autenticar el fragmento A y el fragmento B pueden estar seguros de la “finalidad” de la transferencia (es decir, el hecho de que el estado de la cuenta de Bob eventualmente se resolverá en 70 monedas una vez que se puede verificar la transferencia dentro de la cadena) casi de inmediato, por lo que sus billeteras simplemente pueden actuar como si Bob ya tuviera las 70 monedas “.

Esta propuesta de solución se denomina “Transferencias rápidas entre fragmentos a través de una raíz de recepción optimista”.

Tan pronto como se haya verificado una transferencia, la transacción:

  • Se vuelve permanente si es válido.
  • Se revierte si no.

¿Cuándo funcionará Sharding?

Una de las necesidades tecnológicas más cruciales para ejecutar Sharding correctamente es el algoritmo de consenso de prueba de participación. La razón es que cada fragmento individual tendrá una fracción del hashrate de la cadena Ethereum original. Sin embargo, si el fragmento contiene un poderoso grupo de minería como validador, puede hacerse cargo del sistema por completo y centralizar sus operaciones.

Las fases son: Fase 0, Fase 1, Fase 1.5 y Fase 2.

Fase 0

La fase 0 inicia la implementación del POS al lanzar la cadena de balizas. Esta cadena lanza su primer bloque (génesis) una vez que se cumplen las siguientes condiciones:

  • Al menos 524,288 ETH apostados en la red.
  • Se han registrado al menos 16.384 validadores.

Fase 1

Esta fase se puede considerar como la “fase de fragmentación” y tendrá lugar en 2021. La cadena de bloques se divide en 64 cadenas de fragmentos que se ejecutan en paralelo y se comunican continuamente entre sí. Al final de esta fase, Ethereum debería poder procesar transacciones en 64 bloques simultáneamente. Dado que los fragmentos distribuyen la carga de trabajo, reduce la hinchazón de la cadena principal en una cantidad considerable.

Fase 1.5

En esta fase, la cadena de balizas se integra con la cadena principal de prueba de trabajo (POW) para crear una nueva cadena de POS. Como se definió en la fase anterior, la cadena de prisioneros de guerra terminará existiendo como una de las 64 cadenas de fragmentos.

Tenga en cuenta que el historial de la cadena de POW original existirá, pero simplemente existirá como cualquier otro fragmento y ya no ejecutará el mecanismo de consenso de POW.

Fase 2

Los detalles más finos de esta fase aún no se han desarrollado. Sin embargo, se cree ampliamente que esta fase afinará características como las cuentas de ether, las transacciones, las transferencias y la ejecución perfecta de contratos inteligentes en la nueva cadena.

Fragmentos de ETH 2.0: Conclusión

Como puede imaginar, ajustar las diferentes características de la ejecución perfecta de Sharding es extremadamente difícil, por lo que es bueno que Ethereum 2.0 se lance por etapas. Sin embargo, una vez ejecutado, esto llevará a Ethereum a alturas sin precedentes. El mayor golpe contra las criptomonedas ha sido su falta de escalabilidad, lo que ha obligado a los protocolos más nuevos a optar por métodos y mecanismos más centralizados. Sin embargo, con Sharding, Ethereum podrá escalar significativamente sin comprometer la descentralización.

¿Quieres saber más sobre Ethereum y la codificación de contratos inteligentes? ¿Quiere prepararse antes del lanzamiento de Ethereum 2.0? Echa un vistazo a los cursos de blockchain de Ivan en Tech Academy para encontrar un repositorio de material educativo de blockchain de gran valor que te dará una ventaja significativa en el mercado laboral.

CriptoMundo

CriptoMundo.com es un medio digital independiente que difunde noticias y contenido sobre criptomonedas y tendencias emergentes de tecnologías financieras. Ofrece noticias, guías, artículos de opinión y gráficos en tiempo real.

Monedas

Bitcoin

Ethereum