String de bloques del quórum

Quorum es una string de bloques de Ethereum «centrada en empresas» que intenta mejorar la tecnología de strings de bloques. Aunque la Blockchain de primera generación proporciona escalabilidad, redes peer-to-peer, interoperabilidad, transparencia y otras características, aún no es perfecta. Investigadores de todo el mundo están trabajando arduamente para mejorar el estado de la string de bloques. Quorum es una creación de JP Morgan, que se desarrolló para hacer avanzar la tecnología blockchain en la industria financiera.

Necesidad de quórum

En la actualidad, la información del sector financiero es manejada por más de una organización, pero aun así, el sector financiero adolece de falta de transparencia, control de la información y seguridad. La string de bloques tradicional tampoco cumple con los requisitos del sector financiero, incluso si proporciona trazabilidad e inmutabilidad. Existe la necesidad de un sistema que proporcione control privado en la string de bloques a través de la automatización que se pueda personalizar según las necesidades.   

Características del quórum

  • Rendimiento: Quorum es más rápido que Bitcoin y Ethereum. Realiza más de 150 transacciones por segundo. Esto se debe al mecanismo de consenso simple utilizado por quórum. De forma predeterminada, el quórum utiliza el consenso RAFT para la tolerancia a fallas y el consenso IBFT para la tolerancia a fallas bizantinas, que es bastante más rápido que el consenso de prueba de trabajo de Ethereum.
  • Gestión de permisos: limita la participación a un conjunto conocido de Nodes que deben aprovisionarse para formar parte de la red blockchain, por lo que no está abierto a todos y se implementa solo entre los participantes que cuentan con la aprobación previa de una autoridad designada.
  • Eliminación de precios de transacción: Se eliminó el concepto de agregar costo a una transacción usando gas. No hay necesidad de ningún costo de criptomoneda asociado con la ejecución de transacciones en la red de quórum. El código de Quórum se bifurcó inicialmente de Ethereum, el uso del gas en sí existe pero se establece en cero.
  • Mejor privacidad: Quorum proporciona transacciones públicas y privadas en string. Las transacciones abiertas son similares a Ethereum, mientras que las transacciones privadas no están expuestas al público. Utiliza la tecnología Constellation que encripta mensajes específicos en un lugar llamado enclave y almacena información sobre transacciones anteriores.
  • Gestión de activos: permite que una entidad cree, administre y distribuya activos digitales sin pasar por un tercero. Esto le da al propietario autonomía sobre cómo administrar sus activos.
  • Open Source: es un código abierto donde más de 300 colaboradores están activos y trabajando en el desarrollo de Quorum.

Ventajas del Quórum

  • Algoritmo de consenso: utiliza el algoritmo de consenso «Quorum-Chain» que se basa en la votación por mayoría. Sin embargo, no todos los Nodes son capaces de votar. Solo unos pocos Nodes seleccionados tienen la capacidad de votar en el proceso de votación. Esto ayuda en la verificación de la transacción. Quorum utiliza modelos basados ​​en BFT y Raft de Estambul para una mejor tolerancia a fallas. Solo los participantes seleccionados participan en la red.
  • Contratos inteligentes híbridos: los contratos inteligentes se establecen tanto en privado como en público y se utiliza la solidez para programarlos. Una vez que un contrato inteligente se establece como privado, no se puede transformar en público. Del mismo modo, los contratos inteligentes públicos no se pueden cambiar a privados, lo que los hace más seguros.
  • Rendimiento: Quorum proporciona una mayor velocidad de transacción ya que generalmente se utilizan contratos privados y los contratos privados funcionan mejor que los públicos. Se ha probado que el Raft funciona mejor que el Istanbul BFT.

Desventajas del quórum

  • Escalabilidad: el enfoque de privacidad basado en canales de Quorum presenta desafíos para la privacidad y la escalabilidad a medida que los casos de uso se vuelven más complejos.
  • Falta de criptoeconomía : Quorum no requiere una criptomoneda integrada porque no se llega a un consenso a través de la minería. No es posible desarrollar una moneda nativa o un token digital con Quorum.  
  • Falta de soporte: hay menos desarrolladores y colaboradores en Quorum, por lo que la ayuda y el soporte son menores.  

Arquitectura de quórum

Analicemos los detalles arquitectónicos de Quorum Blockchain.

Quorum Architecture

  • Node de quórum: es una herramienta de línea de comandos que es una bifurcación ligera de Geth. Está configurado solo para permitir la conexión desde Nodes de permiso, abandonando la conectividad P2P.
  • Constelación: Mantuvo el administrador de transacciones y el enclave. Garantiza que la información añadida a la string de bloques permanezca segura de todas las formas posibles.
    • Administrador de transacciones: se ocupa de la privacidad de las transacciones y garantiza que los datos de la transacción se cifren durante el proceso al almacenar el acceso permitido y otros datos importantes para facilitar las transacciones.
    • Enclave: proporciona diferentes técnicas criptográficas como la autenticación de participantes, el historial de transacciones y otras funciones clave para garantizar que todas las operaciones se realicen de manera óptima con un enfoque en la escalabilidad.

Proyecto basado en Quorum

  • Alastria: Consorcio español multisectorial. Promueve el establecimiento de infraestructura semipública DLT. Su objetivo era mejorar los servicios en España y funcionará de acuerdo con la normativa europea.
  • VAKT: proporciona un ecosistema digital que permite a los usuarios realizar un procesamiento físico posterior a la negociación. Se puede denominar como una «Plataforma de gestión posterior al comercio». Al hacerlo, actúa como una fuente única para el ciclo de vida comercial que se puede verificar cuando sea necesario. Cubre el ciclo de vida comercial de extremo a extremo, a diferencia de otras soluciones que solo intentan resolver una parte determinada y no todo el problema.
  • Kimlic: Es un KYC en la string de bloques. Es una plataforma de validación de identidad descentralizada. Ayuda a las empresas emergentes a agregar instantáneamente usuarios a sus Dapps y criptointercambios. Esto significa que el usuario solo necesita completar KYC una vez y luego se puede usar en diferentes plataformas.
  • Blockoneiq-quorum: es un proveedor de datos para la string de bloques Quorum, un marco de Oracle que ayudaría a la DLT a usar contenido firmado que se genera y captura mediante contratos inteligentes de Thomson Reuters.
  • Komgo: Es un proyecto interesante que ayuda a la integración de la red financiera con otros usuarios y redes.

Aplicaciones de Quorum Blockchain

  • Rastreo de vacunas: una de las mejores características de Quorum es mantener registros a los que solo pueden acceder varias personas. Un equipo en Nigeria con las Naciones Unidas ha ideado una forma de usar Quorum para crear una base de datos segura para vacunas con blockTEST. Esta base de datos muestra los registros de niños que tienen o aún no tienen vacunas.
  • Seguimiento de la string de suministro: varias industrias y empresas utilizan Quorum para realizar un seguimiento del suministro de sus productos. Por ejemplo, Starbucks usa la característica de Microsoft, Azure, para rastrear la producción de café en varias partes.
  • Strings de bloques privadas personalizadas: cualquier institución financiera privada puede aprovechar al máximo las strings de bloques de Quorum, como los bancos o las compañías de seguros. La naturaleza autorizada ayuda a que Quorum se utilice en todo tipo de entornos. La capacidad de personalizar desde el principio es lo que lo convierte en un candidato ideal.

Implementación de Quorum Blockchain usando Docker en Google Cloud Shell

Paso 1: Abra Google Cloud Shell en el modo de editor proporcionado desde la consola de desarrollo de Google.

Google cloud shell

Paso 2: Instalar Docker .

Paso 3: clone el repositorio ejecutando estos comandos y, luego, muévase a la carpeta quorum-examples.

$ git clone https://github.com/jpmorganchase/quorum-examples
$ cd quorum-examples
$ PRIVATE_CONFIG=ignore QUORUM_CONSENSUS=raft docker-compose up -d  

Clone repository

Paso 4:   después de ejecutar el comando anterior, hay 7 contenedores ejecutándose con 7 Nodes y 7 administradores de transacciones. Se requieren al menos 3 Nodes. Entonces, abra 3 terminales y active los 3 Nodes ejecutando estos comandos:

For node1:
docker exec -it quorum-examples_node1_1 geth attach /qdata/dd/geth.ipc
eth.accounts
eth.getBalance("0xed9d02e382b34818e88b88a309c7fe71e65f419d")

Node 1

For node 4:
docker exec -it quorum-examples_node7_1 geth attach /qdata/dd/geth.ipc
eth.accounts
eth.getBalance("0xcc71c7546429a13796cf1bf9228bff213e7ae9cc")

Node 4

For node 7:
docker exec -it quorum-examples_node4_1 geth attach /qdata/dd/geth.ipc
eth.accounts
eth.getBalance("0x9186eb3d20cbd1f5f992a950d808c4495153abd5")

Node 7

 Paso 5: Cree un contrato inteligente (código de muestra), copie el código y péguelo en cualquier consola geth para generar la dirección del contrato: 

a = eth.accounts[0]
web3.eth.defaultAccount = a;
// abi and bytecode generated from simplestorage.sol:
// > solcjs --bin --abi simplestorage.sol
var abi = [{"constant":true,"inputs":[],"name":"storedData","outputs":
          [{"name":"","type":"uint256"}],"payable":false,"type":"function"},
           {"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set",
            "outputs":[],"payable":false,"type":"function"},
           {"constant":true,"inputs":[],"name":"get","outputs":
          [{"name":"retVal","type":"uint256"}],"payable":false,"type":"function"},
           {"inputs":[{"name":"initVal","type":"uint256"}],"payable":false,"type":"constructor"}];
var bytecode = "0x6060604052341561000f57600080fd5b604051602080610149833981016040528080519060200190919050505b806000819055505b505b610104806100456000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632a1afcd914605157806360fe47b11460775780636d4ce63c146097575b600080fd5b3415605b57600080fd5b606160bd565b6040518082815260200191505060405180910390f35b3415608157600080fd5b6095600480803590602001909190505060c3565b005b341560a157600080fd5b60a760ce565b6040518082815260200191505060405180910390f35b60005481565b806000819055505b50565b6000805490505b905600a165627a7a72305820d5851baab720bba574474de3d09dbeaabc674a15f4dd93b974908476542c23f00029";
var simpleContract = web3.eth.contract(abi);
var simple = simpleContract.new(40002, {from:web3.eth.accounts[0], 
                                data: bytecode, gas: 0x47b760}, 
                                function(e, contract){
if (e) 
{
 console.log("err creating contract", e);
} else 
{
 if (!contract.address) 
 {
  console.log("Contract transaction send: TransactionHash: " + 
               contract.transactionHash + " waiting to be mined...");
 } else 
 {
  console.log("Contract mined! Address: " + contract.address);
  console.log(contract);
 }
}
});

 

sample contract

Paso 6:  una vez que se genera el hash de la transacción, es posible obtener la dirección del contrato usando este comando:

eth.getTransactionReceipt(mention the txHash here as shown in picture)

transaction address

Paso 7: implementar la dirección del contrato.

var address = # mention your contract address here
var abi = [{"constant":true,"inputs":[],"name":"storedData","outputs":
          [{"name":"","type":"uint256"}],"payable":false,"type":"function"},
           {"constant":false,"inputs":[{"name":"x","type":"uint256"}],
            "name":"set","outputs":[],"payable":false,"type":"function"},
           {"constant":true,"inputs":[],"name":"get","outputs":
          [{"name":"retVal","type":"uint256"}],"payable":false,"type":"function"},
           {"inputs":[{"name":"initVal","type":"uint256"}],"type":"constructor"}];
var private = eth.contract(abi).at(address)

Salida: aquí el Node 1 realizó una transacción privada al Node 7 y el Node 4 está completamente aislado de este estado de transacción, por lo que solo el Node 1 y el Node 7 pueden ver el estado de la transacción.  

Transaction state

 

Publicación traducida automáticamente

Artículo escrito por samundarsingh9525 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *