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

Published on Author lopez

Siguiente Post

Ya escribí algunas propuestas en mis posts:

Connecting Blockchains
Multi-Blockchains in Ethereum/RSK
Offchain Transactions in Ethereum/RSK

comentando sobre el uso de una o más blockchains (homogéneas o heteregóneas) y el uso de transacciones fuera de la blockchain (“offchain”). Son maneras alternativas para explorar soluciones al problema de la escalibilidad, trantando siempre de ser un comienzo desde cero de la forma más simple posible en cada idea.

Luego de revisar el uso posible de múltiples blockchains, ahora pienso que tengo un camino más simple. Primero, esta propuesta trata de blockchains HOMOGENEAS, como Ethereum/RSK. Una es la principal, y otras son n blockchains secundarias:

La blockchain principal tiene un monto total de ethere en juego. Para mayor claridad, empecemos con una blockchain principal, la blockchain cero, con un stock inicial de 100M ethers (en el caso de RSK, son los 21M smart bitcoins que corresponden uno a uno con los 21M de bitcoins de BTC mainnet),

Todas las cuentas tienen los mismos datos de seguridad en todas las networks: claves privadas y públicas, direcciones. Así, si uno tiene control sobre una cuenta de la blockchain cero, ese control se puede usar también en las otras blockchains secundarias.

Pero cada blockchain secundaria comienza con 0 balance en cada cuenta.

La segunda idea de esta propuesta es tener transacciones ENTRE las blockchains. Es decir, un tipo de transacción que permite transmitir valor desde un balance de una cuenta en una blockchain, hacia el balance de la MISMA cuenta pero en OTRA blockchain;

Una cuenta especial puente (“bridge”) se usa como intermediaria. Hay una cuenta bridge en la blockchain PRINCIPAL para CADA blockchain SECUNDARIA. De esta manera, si un usuario transfiere de su cuenta en la blockchain 0 a la cuenta bridge correspondiente a la blockchain 3, en ésta última ESA TRANSFERENCIA especial se realiza TRANSFIRIENDO valor desde una cuenta bridge de la blockchain secundaria a la misma cuenta de usario original pero en esta blockchain 3.  Para permitir este tipo de transferencias, CADA cuenta bridge de las blockchains secundarias, comienza con 100M de valor como balance inicial,

Si hubiera 10 blockchain secundarias, entonces habría 10 CUENTAS BRIDGE en la principal, una por cada secundaria, y cada una con balance inicial 0 en esa blockchain principal. Y habria UNA cuenta bridge en cada secundaria que representaría a la principal, y tendría un balance inicial de 100M,

Un usuario, controlando una cuenta, puede enviar una transaccion a una blockchain secundaria, desde su cuenta a la cuenta especial bridge. Esa transferencia se realiza en una transferencia de valor entre una cuenta bridge de la principal, a la cuenta del usuario en la principal:

La motivación de todo esto es tener escalabilidad: si la blockchain principal está saturada, podemos usar una o varias blockchains secundarias. También, cada blockchain secundaria podría tener su propio precio de gas, diferente esquema de gasto de invocación de contrato, diferente tiempo de inclusión de transacción en blockchain, etc.

Podríamos usar un grafo de blockchains. Pero mi propuesta se limita a una jerarquía (y por ahora con un solo subnivel) para simplificar la discusión. Las transacciones entre una blockchain secundaria y OTRA SECUNDARIA no están permitidas. Y la generación de nuevo ether tampoco es posible en las secundarias. Estas restricciones permiten tener mejor control del monto de valor que está puesto en juego en el sistema.

Puedo imaginar una blockchain secundaria por región geográfica, por nación o aún por mercado vertical. O simplemente que sean blockchains competidoras, en precio de gas, ejecución de contratos y velocidad de avance. El software cliente (una dapp, una aplicación mobile, alguna billetera) podrían simplificar la experiencia de usuario haciendo transferencias entre blockchains de forma automática.

Pero, ¿cómo reflejar una transferencia al bridge en una blockchain como una transferencia desde el bridge en la otra blockchain? En el próximo post espero describir una solución simple, a ser discutida y revisada. Pero pienso que esa solución, parte de esta propuesta, es un buen punto de inicio, para construir sobre ella, evitando las complicaciones otras soluciones como atomic swaps, lightnin networks, etc.

Nos leemos!

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