Multi-Blockchains En Ethereum/RSK (2)

Published on Author lopez

Anterior Post

Para soportar muchas blockchains en una red tipo Ethereum/RSK, propongo tener bloques “bicolor”:

Una transacción normal tiene una cuenta enviadora, una cuenta receptora, opcionalmente datos para ejecutar un contrato, un valor a transferir, y el hash del estado final del mundo, el llamado “state root”. En la propuesta de bloque “bicolor” CADA TRANSACCION puede tener (o no) cuentas DE DOS COLORES, que participan cada una de una blockchain distinta: uno puede transferir desde una cuenta/blockchain a otra cuenta/blockchain. Aún la misma cuenta existe en todas las blockchains, con la misma dirección pública, pero con distintos estados/balances, uno por cada blockchain.

Para mantener el consenso, cada transcción bicolor tiene DOS state roots finales, no solamente uno. Cada state root corresponde a una blockchain. Por ejemplo, si una transacción tiene una cuenta enviadora “azul” y la cuenta receptora es “verde”, entonces, hay dos state roots: el de la blockchain “azul” luego de enviar el valor, y el de la blockchain “verde” luego de recibir el valor.

Cada bloque bicolor tiene dos bloques padres, uno por cada blockchain:

http://www.ajlopez.com/images/articles2/mbc0202.png

No todo nodo en la red conoce TODOS los estados de TODAS las blockchains. Pero si un nodo conoce el estado “azul” puede ejecutar y validar los state roots “azules” que le lleguen en bloques de ese color, o en bloques bicolores que tengan ese color. Esto es interesante: no todos los bloques TIENEN que tener TODOS los estados, pueden concentrarse en controlar una o dos blockchains, si quieren. El control total de consenso surge por emergencia, entre la colaboración entre varios nodos.

Sólo el nodo minero que genera el bloque bicolor DEBE conocer DOS estados del mundo, uno de cada color, para generar los state roots apropiados.

Como mencioné, una cuenta tiene balance en CADA blockchain. Cuando un usuario crea una cuenta, su dirección está disponible y reservada para TODAS las blockchains. Pero el balance se mantiene POR CADA BLOCKCHAIN. Es una decisión del usuario cómo reparte su valor de una cuenta entre las distintas blockchains.

Acá hay una diferencia con los contratos: éstos son cuentas, pero su código y estado sólo SE MANTIENE en una SOLA blockchain. Esto permite que los contratos se ejecuten en blockchains donde tienen usuarios que las prefieren, y que se reparta el trabajo de ejecutar los contratos “populares” entre distintas blockchains.

Más detalles en el siguiente post.

Nos leemos!

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