O Quorum é um blockchain Ethereum “focado na empresa” que tenta melhorar a tecnologia do blockchain. Embora o Blockchain de primeira geração forneça escalabilidade, redes ponto a ponto, interoperabilidade, transparência e outros recursos, ele ainda não é perfeito. Pesquisadores de todo o mundo estão trabalhando muito para melhorar o estado do blockchain. O Quorum é uma ideia do JP Morgan, que se desenvolveu para promover a tecnologia de blockchain no setor financeiro.

Necessidade de Quorum

Atualmente, as informações do setor financeiro são tratadas por mais de uma organização, mas ainda assim, o setor financeiro sofre de falta de transparência, controle de informações e segurança. O blockchain tradicional também não atende aos requisitos do setor financeiro, mesmo que forneça rastreabilidade e imutabilidade. É necessário um sistema que forneça controle privado sobre o blockchain por meio de automação que seja customizável de acordo com as necessidades.   

Características do Quorum

  • Desempenho: Quorum é mais rápido que Bitcoin e Ethereum. Realiza mais de 150 transações por segundo. Isso se deve ao mecanismo de consenso simples usado pelo quorum. Por padrão, o quorum usa o consenso RAFT para tolerância a falhas e o consenso IBFT para tolerância a falhas Bizantinas, que é bem mais rápido do que o consenso de prova de trabalho do Ethereum.
  • Gerenciamento de permissão: limita a participação a um conjunto conhecido de nós que devem ser provisionados para fazer parte da rede do blockchain, portanto, não é aberto a todos e implementado apenas entre participantes que são pré-aprovados por uma autoridade designada
  • Eliminação de preços de transação: eliminou o conceito de adicionar custo a uma transação usando gás. Não há necessidade de custos de criptomoeda associados às transações em execução na rede de quorum. O código do Quorum foi inicialmente bifurcado do Ethereum, o uso do próprio gás existe, mas é definido como zero.
  • Melhor privacidade: o Quorum oferece transações públicas e privadas na rede. As transações abertas são semelhantes ao Ethereum, enquanto as transações privadas não são expostas ao público. Ele usa a tecnologia Constellation que criptografa mensagens específicas em um local chamado enclave e armazena informações sobre transações anteriores.
  • Gerenciamento de ativos: permite que uma entidade crie, gerencie e distribua ativos digitais sem passar por terceiros. Isso dá ao proprietário autonomia sobre como gerenciar seus ativos.
  • Código aberto: é um código aberto onde mais de 300 colaboradores estão ativos e trabalhando no desenvolvimento do Quorum.

Vantagens do Quorum

  • Algoritmo de consenso: usa o algoritmo de consenso “Cadeia de quorum” que se baseia na votação por maioria. No entanto, nem todos os nós são capazes de votar. Apenas alguns nós selecionados têm a capacidade de votar no processo de votação. Isso ajuda na verificação da transação. O Quorum usa os modelos Istanbul BFT e Raft para melhor tolerância a falhas. Apenas participantes selecionados fazem parte da rede.
  • Contratos inteligentes híbridos: os contratos inteligentes são definidos como privados e públicos e a solidez é usada para programá-los. Depois que um contrato inteligente é definido como privado, não pode ser transformado em público. Da mesma forma, os contratos públicos inteligentes não podem ser alterados para privados, o que os torna mais seguros.
  • Desempenho: o quorum oferece maior velocidade de transação, pois geralmente são usados ​​contratos privados e os contratos privados funcionam melhor do que os públicos. Foi testado que o desempenho da jangada é melhor do que o Istanbul BFT.

Desvantagens do Quorum

  • Escalabilidade: a abordagem baseada em canal do Quorum para privacidade apresenta desafios para privacidade e escalabilidade à medida que os casos de uso se tornam mais complexos.
  • Falta de criptoeconomia : o Quorum não requer uma criptomoeda embutida porque o consenso não é alcançado por meio da mineração. Não é possível desenvolver uma moeda nativa ou um token digital com o Quorum.  
  • Falta de suporte: Há menos desenvolvedores e colaboradores para o Quorum, devido ao qual a ajuda e o suporte são menores.  

Arquitetura de Quorum

Vamos discutir os detalhes arquitetônicos do Quorum Blockchain.

Arquitetura de Quorum

  • Nó de quorum: é uma ferramenta de linha de comando que é uma bifurcação leve de Geth. Ele é configurado apenas para permitir a conexão de nós de permissão, eliminando a conectividade P2P.
  • Constelação: Manteve o gerenciador de transações e o enclave. Ele garante que as informações adicionadas ao blockchain permaneçam seguras de todas as maneiras possíveis.
    • Transaction Manager: Cuida da privacidade da transação e garante que os dados da transação sejam criptografados durante o processo, armazenando o acesso permitido e outros dados importantes para facilitar as transações.
    • Enclave: fornece diferentes técnicas criptográficas, como autenticação de participante, histórico de transações e outras funções-chave para garantir que todas as operações sejam realizadas de maneira ideal, com foco na escalabilidade.

Baseado em projeto no Quorum

  • Alastria: Um consórcio espanhol multissetorial. Promove o estabelecimento de infraestruturas semipúblicas DLT. O objetivo era melhorar os serviços na Espanha e funcionará de acordo com os regulamentos europeus.
  • VAKT: fornece um ecossistema digital que permite aos usuários fazer o processamento físico pós-negociação. Pode ser denominado como uma "plataforma de gerenciamento pós-negociação". Ao fazer isso, ele atua como uma fonte única para o ciclo de vida do comércio, que pode ser verificado quando necessário. Abrange o ciclo de vida do comércio de ponta a ponta, ao contrário de outras soluções que tentam resolver apenas uma determinada parte e não todo o problema.
  • Kimlic: É um KYC no blockchain. É uma plataforma de validação de identidade descentralizada. Ajuda as startups a adicionar usuários instantaneamente às suas trocas Dapps e criptográficas. Isso significa que o usuário só precisa preencher o KYC uma vez e, em seguida, ele pode ser usado em diferentes plataformas.
  • Blockoneiq-quorum: É um provedor de dados para o blockchain Quorum, uma estrutura Oracle que ajudaria o DLT a usar conteúdo assinado que é gerado e capturado usando contratos inteligentes da Thomson Reuters.
  • Komgo: É um projeto interessante que ajuda a integração da rede financeira com outros usuários e redes.

Aplicações do Quorum Blockchain

  • Rastreamento de vacinação: uma das grandes características do Quorum é manter registros que só podem ser acessados ​​por várias pessoas. Uma equipe da Nigéria com as Nações Unidas descobriu uma maneira de usar o Quorum para criar um banco de dados seguro para vacinações com blockTEST. Este banco de dados mostra registros de crianças que receberam ou ainda não foram vacinadas.
  • Rastreamento da cadeia de suprimentos: vários setores e empresas estão usando o Quorum para rastrear o fornecimento de seus produtos. Por exemplo, a Starbucks usa o recurso da Microsoft, Azure, para rastrear a produção de café em várias partes.
  • Blockchains privados personalizados: qualquer instituição financeira privada pode aproveitar ao máximo os blockchains do Quorum, como bancos ou seguradoras. A natureza permitida ajuda o Quorum a ser usado em todos os tipos de configurações. A capacidade de personalizar desde o início é o que o torna um candidato ideal.

Implementação de Quorum Blockchain usando Docker no Google Cloud Shell

Etapa 1: Abra o Google Cloud Shell no modo de editor fornecido no console do desenvolvedor do Google.

Shell da nuvem do Google

Etapa 2: instale o Docker .

Etapa 3: Clone o repositório executando esses comandos e, em seguida, vá para a pasta de exemplos de quorum.

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

Repositório clone

Etapa 4:   depois de executar o comando acima, existem 7 contêineres em execução com 7 nós e 7 gerenciadores de transações. São necessários pelo menos 3 nós. Portanto, abra 3 terminais e ative os 3 nós executando estes comandos:

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

Nó 1

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

Nó 4

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

Nó 7

 Etapa 5: crie um contrato inteligente (código de amostra), copie o código e cole-o em qualquer console geth para gerar o endereço do 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);
 }
}
});

 

contrato de amostra

Etapa 6:  Uma vez que o hash da transação é gerado, é possível obter o endereço do contrato usando este comando:

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

endereço de transação

Etapa 7: implantar o endereço do 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)

Saída: aqui o nó 1 fez uma transação privada para o nó 7 e o nó 4 está completamente isolado deste estado de transação, portanto, apenas o nó 1 e o nó 7 são capazes de ver o estado da transação.  

Estado de transação