Comparativa Tecnologías Blockchain

Comparativa Tecnologias Blockchain

Comparativa Tecnologías Blockchain

Has estado leyendo mucho sobre Blockchain y seguro que has asistido a alguna sesión o seminario donde se han explicado las bases de Blockchain y su potencial en múltiples campos.

Ya tienes claro cómo funciona y dónde lo podrías aplicar, sabes que puede aportar beneficios en procesos y sistemas y te gustaría demostrarlo.

¡Manos a la obra! Vamos a realizar un desarrollo sencillo para probar de verdad esta tecnología y después seleccionaremos algún caso de uso para comprobar de verdad si podemos aplicarlo en nuestro trabajo, pero, ¿por dónde comienzo? ¿qué tecnología selecciono? ¿y si me equivoco? ¿qué coste tienen las distintas alternativas?

Vamos a ayudarte a responder estar preguntas y otras comparando las principales alternativas que permitan la programación de Smart Contracts orientadas a redes Enterprise.

Revisaremos los Blockchain más conocidos, sus características y diferencias que pueden ser de gran utilidad a la hora de plantearse qué tecnología usar en un proyecto Blockchain con Smart Contracts.

Comparativa tecnologías blockchain

Existen muchas implementaciones Blockchain y es importante elegir la más adecuada, por lo que es imprescindible conocer las alternativas más conocidas, robustas y con las que se cuenta con más experiencia demostrada en soluciones reales.

En esta comparativa nos vamos a centrar en los principales Blockchain que permiten programación de  smart contracts son:

  1. Ethereum
  2. Monax/Hyperledger Burrow
  3. Quorum
  4. Hyperledger Fabric
  5. Corda

 

Las primeras tres soluciones presentadas están basadas en tecnología Ethereum.

 

SoluciónMadurezComodidad desarrolloPermisionadoTiempo confirmación transaccionesPrivacidad entre nodos
Ethereum43No (1)~12 segNo
Monax/Burrow33Permisionado fino (5)“Instantaneo”No
Quorum33Solo validadores (3)“Instantaneo”Si
Hyperledger12Permisionado fino (5)“Instantaneo”Si
Corda13Permisionado “grueso” (4)“Instantaneo”Si

Resumen de la comparativa (mejor a mayor puntuación, 1-5)

 

1-Ethereum

Ethereum fue el primer blockchain público  que permitió la programación de Smart Contracts (programas utilizando lenguaje Turing completo) en la propia cadena de bloques, esto fue algo revolucionario ya que permite hacer algoritmos, o añadir una lógica a las transferencias.

Sobre Ethereum se han desarrollado otras dos soluciones que compararemos más tarde, estas últimas añaden características a las de ethereum para complementarlo en sus casos de uso, Monax y Quorum.

Existen maneras de crear redes Ethereum privadas donde solo se permita acceder a determinados nodos, pero eso hace que la red tenga menos nodos mineros, validadores que buscarán el hash que valide los bloques, lo que los hace ineficientes ya que ya no nos interesara solucionar el problema de la confianza en los nodos, son privados , nuestros.

Todos los movimientos de ethers aparecerán en la red, y será visible para todos los nodos conectados.

Proof of Work

Ethereum está diseñado para redes públicas, por lo que cualquier smart contract, transferencia o acción sobre esta, lo podrá ver cualquiera y los nodos mineros que validan los bloques pueden estar en cualquier lugar, estos mineros validan las transferencias usando un proof of work (fuerza bruta para sacar el hash del bloque). El tiempo de validación medio de un bloque/transacción ronda los 12 segundos.

 Privacidad

Ethereum no implementa privacidad en la red, todos pueden ver todas las transacciones de los demás.

Permisionado

Ethereum no tiene permisionado, todo el que se conecta a la red cumple un mismo rol (puede desplegar contratos…).

Smart contracts

Ethereum fue la primera red que permitía programar smart contracts, en este caso en un lenguaje de programación propio Solidity. Este lenguaje de programación permite realizar cualquier tipo de lógica, es una maquina Turing completa.

La problemática de poder realizar operaciones muy costosas en todos los nodos, saturando la red o colapsándola, Ethereum la resuelve aplicando un coste en función del código que se ejecuta en cada transacción. Este coste se paga con gas, y este gas se puede comprar utilizando la criptomoneda Ether. Los smart contracts con lógica muy compleja, o mal programados, tendrán un coste en gas muy alto, porque o bien se paga ese coste cada vez que se quiere realizar una transferencia o bien esa transferencia no se realizara.

Esta “tarificación” del coste computacional puede ser un problema para determinadas redes enterprise, ya que quienes mantengan o desarrollen la red deben asegurarse de que todos los clientes tienen suficiente gas para interactuar con los contratos.

2- Monax/Hyperledger Burrow

Red basada en ethereum (fork open source) enfocada al mundo Enterprise, para ello hace más fácil y efectivo la creación de una red privada.

Hace que su despliegue sea más sencillo que en una red privada de Ethereum y sobretodo soluciona el problema, o el derroche de gasto computacional que pudiera ocasionar Ethereum con un proof of work.

Proof of Stake (Tendermint)

Monax introduce un algoritmo de consenso diferente, Tendermint, que lo hace más eficiente para redes privadas, ya que valida bloques/transacciones en menos de 0.5 segundos. con pocos nodos validadores, ya que está basado en Proof of Stake y no exige que los nodos realicen un cálculo de hash, al ser nodos conocidos e identificados, pueden realizar un sistema de votaciones.

Privacidad

Monax no implementa privacidad en la red, todos pueden ver todas las transacciones de los demás.

Permisionado

Monax implementa permisionado complejo, además de tener validadores, permite que cada usuario tenga un rol definido, en el cual se limita las acciones que puede hacer sobre el blockchain con permisos de grano fino (desplegar contratos, registrar nuevos usuarios, llamar a transacciones…)

Smart contracts

Monax utiliza el mismo core que Ethereum, por lo que comparten lenguaje de desarrollo de SmartContracts (Solidity). Sin embargo, existe una diferencia en cuanto a la tarificación de la computación, se oculta el sistema de gas (se hace infinito), por lo que el desarrollador o mantenedor de la red no tiene que preocuparse de mantener a los usuarios con suficiente gas para interactuar con los contratos.

Sin embargo, sí que mantiene un tope de “gas” de ejecución por transacción, para evitar que alguien pueda lanzar un código que haga que los validadores se queden procesando durante un tiempo excesivo.

3- Quorum

Red privada blockchain que surge a partir del código de Ethereum , desarrollado por JP Morgan y open source. El punto diferenciador de Quorum es el hecho de que permite realizar transacciones privadas entre las partes

Raft-consensus

Quorum introduce un nuevo algoritmo de consenso (Raft), que al igual que Proof of Stake, no exige el cálculo de un hash y valida bloques/transacciones en menos de 0.5 segundos. Sin embargo, esto tiene un coste, ya que no tiene tolerancia a fallos bizantinos. Es decir, si se utiliza este consenso, la seguridad tienen que darla las propias entidades de forma que sus nodos no sean accesibles por un atacante.

Quorum ofrece más mecanismos de consenso que a la larga permitirán tolerancia a fallos bizantinos, como QuorumChain, que es programable desde un SmartContract, y tiene como objetivo posibilitar el hecho de realizar una lógica de consenso programable.

Privacidad

En este caso la red ya no es pública, es privada pero además le añade privacidad entre los nodos de la red.

Quorum permite realizar transacciones entre los participantes de la red de forma privada, es decir, permite que una transacción solo se vea entre un sub-grupo de los participantes.

Los datos de las transacciones privadas nunca llegan a los nodos que no participan, ya que para enviar estos datos, no se utiliza la comunicación del blockchain, si no que se utiliza una red punto a punto que funciona junto al blockchain y permite enviar datos de un nodo a otro, llamada/proporcionada por Constellation. Estos datos se verifican en la blockchain mediante sus hashes, pero el dato nunca se envía por la red “abierta”.

Permisionado

Quorum implementa permisionado simple, los nodos que se conectan solo pueden ser validadores (“votan” si se añade una transacción o no al blockchain) o no, pero no se controlan permisos de grano fino (desplegar contratos, registrar nuevos usuarios, llamar a transacciones…)

Smart Contracts

Quorum utiliza el mismo core que Ethereum, por lo que comparten lenguaje de desarrollo de SmartContracts (Solidity). Sin embargo, existe una diferencia en cuanto a la tarificación de la computación, se oculta el sistema de gas (se hace infinito), por lo que el desarrollador o mantenedor de la red no tiene que preocuparse de mantener a los usuarios con suficiente gas para interactuar con los contratos.

Sin embargo, sí que mantiene un tope de “gas” ejecución, para evitar que alguien pueda lanzar un código que haga que los validadores se queden procesando durante un tiempo excesivo.

 

Las siguientes soluciones para redes Enterprise parten de una base diferente a Ethereum y a diferencia de sus competidoras privadas que parten de la base de Ethereum, han sido diseñadas en origen para redes privadas.

4- Hyperledger Fabric

Hyperledger es un consorcio de la fundación Linux cuyo objetivo es apoyar diferentes implementaciones Blockchain. La más conocida es Fabric, que está siendo desarrollada por IBM.

Fabric es una tecnología menos madura que las basadas en Ethereum, ya que estas aunque modifican la funcionalidad original, están basadas en un sistema que lleva varios años en funcionamiento en la red pública. Sin embargo, ofrece una funcionalidad más completa que estas, ya que al estar diseñada desde 0 para redes enterprise, pueden añadir todas estas funcionalidades.

Consenso

Fabric implementa un mecanismo de consenso basado en Proof of Stake, es decir, tampoco exige el cálculo de un hash computacionalmente intensivo, lo que permite que las transacciones se confirmen en un tiempo inferior a 0.5s.

 Proporciona tolerancia a fallos bizantinos, se realiza mediante un flujo en el cual todos los participantes de una transacción validan la misma y luego se envía a un grupo de nodos “central” que ordena las transacciones en orden de llegada.

Privacidad

Fabric implementa privadad en la red, se pueden enviar transacciones que solo serán confirmadas por el grupo de participantes seleccionado, al igual que en Quorum, únicamente estos participantes ven las transacciones.

Permisionado

Fabric implementa permisionado complejo, además de tener validadores, permite que cada usuario tenga un rol definido, en el cual se limita las acciones que puede hacer sobre el blockchain con permisos de grano fino (desplegar contratos, registrar nuevos usuarios, llamar a transacciones…)

SmartContracts

Los SmartContracts en Fabric actualmente se desarrollan en GO, aunque es flexible y se podrán realizar en Python y Java en un futuro. Esta flexibilidad tiene un precio, y es que no tiene un compilador propio por lo que aumenta la complejidad para el desarrollador y la posibilidad de errores en el código. Por ejemplo, los datos deben guardarse en una estructura clave/valor, siendo responsabilidad del desarrollador realizar esta operativa.

5- Corda

Dentro del convenio R3, enfocada principalmente permitir comunicaciones y acuerdos seguros para bancos y empresas financieras.

Al igual que con Hyperledger Fabric, es un producto creado desde 0 para redes enterprise, generalmente bancos y su madurez es inferior a las basadas en Ethereum. Sin embargo, no es un blockchain al uso, ofrece la mayoría de propiedades de un blockchain (especialmente las orientadas a enterprise), pero su implementación es diferente, ya que funciona más como una red punto a punto con encriptación.

Consenso

Las transacciones en Corda son confirmadas por cada uno de los participantes de la transacción individualmente. Pudiendo ser extendidas para añadir nodos reguladores/centralizadores. No existe un consenso global, existe un consenso entre los participantes de cada transacción.

Privacidad

Corda implementa privacidad en la red, se pueden enviar transacciones que solo serán confirmadas por el grupo de participantes seleccionado, ya que al no ser un blockchain y no existir consenso a nivel global, las comunicaciones se hacen punto a punto y nadie recibe una transacción que no tenga que ver.

Permisionado

Corda proporciona permisionado para registrarse en la red, ya que las comunicaciones son punto a punto, se debe conocer el destinatario.

 Como su objetivo es permitir comunicaciones seguras entre entidades, no aporta prácticamente nada tener permisionado de grano fino, ya que cada entidad controlará el acceso a sus nodos y firmarán con su propia cuenta.

SmartContracts

Los SmartContracts en Corda actualmente se desarrollan en KOTLIN (lenguaje parecido a Java, que se ejecuta en la JVM) y Java.

 

Costes/Licencias

Todas las tecnologías son de uso gratuito y open source a día de hoy (a nivel software, sin infraestructura ni soporte). Únicamente Monax aplica cobro sobre las versiones nuevas de sus librerías cliente/SDK. Aunque el uso de su plataforma/blockchain es gratuito.

 

Comunicación con la blockchain

Para integrar la blockchain con nuestros sistemas tradicionales o con un frontal que permita a nuestros clientes interactuar con la misma de forma sencilla, debemos utilizar las librerías cliente que están disponibles para los diferentes lenguajes “tradicionales”.

 

En todas las tecnologías revisadas (excepto Corda que utiliza una librería Kotlin), la comunicación con el blockchain se realiza mediante RPC/http y una librería cliente para NodeJS, algunas proporcionan otras implementaciones de la librería cliente (Java…), sin embargo, no suelen tener el mismo nivel de madurez que la librería de NodeJS.