Escalando Ethereum/RSK: Múltiples Blockchains (2)

Published on Author lopez

Anterior Post

En el anterior post describí una blockchain primaria (basada en Ethereum/RSK) que podía conectarse con un segundo nivel de blockchains secundarias, usando transacciones especiales. En este post, quiero describir el mecanismo propuesto para hacer que todo esto funcionen. Usualmente una blockchain Ethereum/RSK tiene transacciones y un bloque padre:

Lo nuevo es tener ALGUNOS bloques con dos padres, pertenecientes a DOS blockchains, un padre en la primaria, y otro padre en alguna secundaria. Y tener transacciones especiales que afectan a AMBAS blockchains:

De esta manera, podemos tener DOS blockchains con bloques normales, y ALGUNOS bloques especiales que permiten la ejecución de transacciones entre ellas:

Lo blockchain principal puede tener bloques especiales con MAS de una blockchain secundaria. Pero cada secundaria solo permite bloques especiales con la primaria:

Los bloques normales son minados por mineros/productores en cada blockchain. Pero los bloques especiales son armados por mineros que mantienen los estados de DOS BLOCKCHAINS. Saben calcular DOS hashes de estado del mundo, uno para cada blockchain. Habrá máquinas que validarán la parte de la blockchain princial de ese bloque, otras máquinas que validarán solo la parte de la secundaria, y máquinas que validaran AMBOS estados.

Supongamos que tenemos una blockchain azul (la primaria) y una blockchain verde (la secundaria). Entonces, hay una cuenta especial bridge (puente) para ser usada en las transacciones entre LAS DOS blockchaines. Esa cuenta, en la blockchain azul, inicialmente tiene 0 valor de balance. Esa misma cuenta, en la blockchain verde, tiene 100M de valor inicial (si la principal fuera la Ethereum/RSK podría ser 21M, lo que la principal tiene como tope).

Un usuario firma una transacción en la blockchain azul, usando su cuenta de usuario y sus credenciales (que son las mismas en todas las redes), con cuenta destino la cuenta bridge azul-verde, es decir, la que intermediaria para estas transferencias. Para las máquinas azules, esta transacción transfiere valor DESDE la cuenta de usuario a la cuenta puenta azul-verde en la principal. Para las máquinas verdes, la MISMA transacción transfiere el valor desde la cuenta azul-verde en la secundaria a la cuenta de usuario en la blockchain secundaria.

Luego de esto, el usuario puede usar su saldo verde en transacciones verdes, en la blockchain secundaria. En cualquier momento, puede transferir valor desde su cuenta verde, a la bridge azul-verde de la secundaria. En las máquinas azules, esa transacción representa una transferencias desde la cuenta verde azul en la principal a la cuenta de usuario en la principal.

Ambas cuentas de usuario, la verde y la azul, tienen la misma dirección y las mismas claves privadas y públicas. Es decisión del usuario enviar una transacción a la blockchain verde o a la azul.

En cada blockchain secundaria, hay una sola cuenta puente, con la principal. En la blockchain principal hay una cuenta bridge por CADA blockchain secundaria.

Un minero que mantiene el estado del mundo para ambas blockchains verde y azul PUEDE armar un bloque especial. Otros nodos podrán validar solo la parte azul o la parte verde. Y algunos ambas partes De esta forma, una segunda blockchain puede agregar escalabilidad a la primaria, teniendo su propio costo y tiempo de ejecución. Una blockchain secundaria puede agregarse cuando una operación especial crea una cuenta puente en la principal, o cuando se establece la existencia de esa cuenta especial dsde un hard fork. Nadie controla esas cuentas, ni nadie tiene las credenciales para operar sbre ellas. Solo la firma del usuario sobre su cuenta permite transferir a una bridge..

Con esta propuesta, evitamos mecanismos más complicados, como atomic swaps, o estar vigilando una blockchain desde otra blockchain. Acá los bloques son COMPARTIDOS.

Describiré más en detalle el mecanismo en próxumos posts, por ejemplo la convergencia del consenso, o los incentivos de minería para mineros bicolores.

Nos leemos!

Angel “Java” Lopez
https://github.com/ajlopez
http://www.ajlopez.com
http://twitter.com/ajlopez