Escalabilidad de Ethereum: explicación de «sharding», parte II

in #blockchain6 years ago (edited)

En la primera parte de esta publicación, conversamos sobre la estructura actual de Ethereum y de sus problemas de escalabilidad. A continuación, vamos a analizar cómo funcionaría Ethereum 2.0 con la implementación de «sharding» o fragmentación.

Tal y como habíamos comentado en la primera parte de este ensayo, se ha creado un gran debate alrededor de la escalabilidad de las diferentes cadenas de bloques. Existe una constante discusión en la que los miembros de la comunidad cripto no logran alcanzar un consenso que precisamente permita la implementación de las mejoras requeridas para actualizar los sistemas. Es vox populi que las grandes cadenas de bloques públicas como Bitcoin o Ethereum gozan de serios problemas de escalabilidad.

Imagen: Pixabay.com

¿Cómo funcionaría Ethereum 2.0?

Se crearía una cadena lateral conocida como cadena aleatoria líder que almacena hashes relacionados con los bloques de la cadena principal en sus propios bloques. Esta cadena lateral será un sistema completo de Prueba de Participación —PoS, por sus siglas en inglés— que implementará Casper y proporcionará una fuente de aleatoriedad distribuida que nos permitirá construir un sistema de fragmentación en la parte superior.

Ataques del 1 %

Ante este escenario, inevitablemente surge un problema si consideramos posibles ataques a la red. Por ejemplo, en un sistema de 100 fragmentos, un atacante solamente requiere hacerse de un solo fragmento para controlar las transacciones de este. ¿Cómo resolvemos este problema? A través de la implementación de un muestreo aleatorio de validadores en cada fragmento, sin que estos validadores sepan previamente el fragmento que se les ha asignado. A cada fragmento se le asignará un grupo de validadores, a su vez, cada fragmento que sea realmente validado será tomado al azar de ese conjunto.

Imagen: Pixabay.com

Con el fin de convertirse en validador, se ejecutará un contrato inteligente en la cadena principal donde los usuarios pagarán 32 ETH a cambio de convertirse en validadores de la cadena lateral. Esta cadena lateral verificará periódicamente a los validadores registrados, poniendo en cola a los nuevos usuarios, convirtiéndose en una suerte de dispositivo coordinador del sistema de fragmentación.

En cada fragmento, tendríamos nodos llamados proponentes que se encargarían de crear un enlace cruzado en la cadena lateral. Estos enlaces cruzados actúan como repositorios del estado y las transacciones que se registran en un fragmento determinado. Un enlace cruzado tendría los siguientes datos:

  • Número de fragmento al que corresponde la transacción, por ejemplo, fragmento 13
  • Estado actual del fragmento antes de aplicar las transacciones
  • Estado del fragmento después de que se hayan aplicado las transacciones
  • Las firmas de al menos el 66 % de todos quienes verifican que las transacciones registradas en los bloques del fragmento sean legítimas

¿Qué sucederá después de la activación de sharding?

  1. El estado de la red estará dividido en fragmentos
  2. Cada cuenta única se encuentra en un fragmento
  3. Por lo pronto, las cuentas solo pueden realizar transacciones con otras cuentas en el mismo fragmento

«Imagina que Ethereum se ha dividido en miles de islas. Cada isla cumple con una función específica, 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 ponerse en contacto con otras islas, deberán usar algún tipo de protocolo». – Vitalik Buterin

¿Cómo se efectúan una transacción entre fragmentos?

Supongamos que hay tres nodos A, B y C, y tienen que verificar un conjunto de datos T. En lugar de A, B y C verificando los datos T en serie, por separado, los datos se dividirán en tres fragmentos: T1, T2 y T3. En este caso, los nodos A, B y C verificarán un fragmento cada uno al lado del otro, A–T1; B–T2; C–T3. En consecuencia, la velocidad de procesamiento de las transacciones y la cantidad de tiempo que se ahorra es considerable.

Imagen: Pixabay.com

Por ejemplo, si enviamos dinero desde una dirección que se encuentra en el fragmento 1 hacia otra que se encuentra en el fragmento 10. Una de las propuestas iniciales es utilizar un sistema de recibos para que estas transacciones puedan darse. Juan (dirección fragmento 1), quiere enviar 100 ETH a Lorena (dirección fragmento 10). Esta sería la ruta que seguiría esta supuesta transacción:

  1. Se envía una transacción al fragmento 1 que reduce el saldo de Juan en 100 ETH, el sistema espera a que finalice la transacción
  2. Se crea un recibo para la transacción que no está almacenada en el estado sino en un árbol de Merkle que se puede verificar fácilmente
  3. Se envía una transacción al fragmento 10 que incluye el recibo del árbol de Merkle. El fragmento 10 comprueba si el saldo contenido en ese recibo no se ha gastado todavía
  4. El fragmento 10 procesa la transacción y aumenta el saldo de Lorena en 100 ETH. Del mismo modo, se registra que se ha gastado el saldo del recibo generado en el fragmento 1
  5. Se crea un nuevo recibido en el fragmento 10 que puede usarse en transacciones posteriores

Tanto los desarrolladores de DApps como los usuarios no se preocuparán por la fragmentación. Esta existirá únicamente como una capa del protocolo. El estado de Ethereum continuará teniendo el aspecto que tiene actualmente, con la diferencia de que el protocolo tendrá un sistema incorporado que creará fragmentos y equilibrará el estado de la red a través de estos. Todo este proceso se hará tras bastidores, permitiendo que los desarrolladores continúen con su flujo de trabajo regular en Ethereum.

Más allá de la escalabilidad

Es posible que Ethereum adopte un sistema de fragmentación cuadrático, es decir, construido a partir de fragmentos de fragmentos. Es complicado imaginar tal complejidad, sin embargo, esta representaría un enorme potencial de escalabilidad. Un sistema de fragmentación cuadrático ofrecería tremendos beneficios a los usuarios, por un lado, reduciría las tarifas de las transacciones a montos insignificantes; y, por otro, daría origen a una plataforma de propósitos generales para el desarrollo e implementación de una variedad de nuevas aplicaciones.

A medida que Ethereum se expande, la fragmentación se vuelve cada vez más crítica para su crecimiento. Si esta cadena de bloques pretende convertirse en el nuevo Internet, primero debe solucionar sus problemas de escalabilidad.

avatar_jfbt_steemit_120x120.png
Juan Francisco Bolaños
steemit.com | busy.org

steemit_divider.png

Referencias:

  • Blockgeeks.com. (2018). What are Ethereum Nodes And Sharding? Toronto, ON, Canadá: Blockgeeks.com. http://bit.ly/2v7fwQW
  • Diedrich, Henning. (2016). Ethereum. London, UK: Wildfire Publishing.
  • Jordan, Raul. (2018). How to Scale Ethereum: Sharding Explained. San Francisco, CA, USA: Medium.com. http://bit.ly/2voSJ2v

steemit_divider.png

Lecturas que vas a disfrutar

Una selección de mis mejores artículos publicados en steemit.com:

steemit_divider.png

Academia Blockchain

Academia Blockchain es una iniciativa que crea un espacio para la difusión y conocimiento de la cadena de bloques y las criptomonedas en Latinoamérica. Amigos, están cordialmente invitados a visitarnos en nuestra web y en nuestro blog de steemit.com.

steemit_divider.png

Compra en Amazon y paga con Bitcoin

Compra lo que más te gusta en Amazon y paga con Bitcoin y otras criptodivisas a través de Purse.io. Recibe descuentos del 5 al 15 % en tus compras. Regístrate aquí.

steemit_divider.png

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 58068.07
ETH 3133.85
USDT 1.00
SBD 2.44