O que é a AWS Managed Blockchain? A resposta está aqui!

Victor Martins
7 min readApr 22, 2021

--

If you are looking for this content in English, please follow this link

AWS lançou em 2019 a plataforma Managed Blockchain, e desde então ela vem em processo de desenvolvimento e melhorias. O mercado ainda é um pouco cético de usar a ferramenta, por ser algo muito novo, as aplicações de se ter um Blockchain completamente gerenciado ainda são um pouco misteriosas.

O intuito do projeto, é reduzir a distância entre a tecnologia Blockchain e suas aplicações no mundo real, devido a complexidade de se manter e configurar instâncias de clientes e servidores das fundações de uma plataforma descentralizada, como o Hyperledger Fabric ou o Ethereum.

Como a AWS desenhou sua rede de Blockchain “fully-managed” e como ela disponibiliza para seus clientes.

O AWS Managed Blockchain traz a possibilidade de instalação e configuração através do console, com apenas poucos cliques. ou através de CLI / CloudFormation, permitindo assim a automação/replicação do projeto.

Resumindo, AWS Managed Blockchain é uma rede peer-to-peer entre os membros que compõem a rede, nesse artigo irei decupar cada parte do serviço e explicar a vocês um projeto de teste que fiz em minha conta pessoal.

Para esse artigo, não entrarei no detalhe de como rodar o AWS Managed Blockchain, caso seja isso que você queira, pode seguir o mesmo passo-a-passo que eu segui na documentação da AWS, o intuito desse artigo é apenas dar uma visão geral da funcionalidade e as minhas conclusões sobre o serviço após ter feito alguns testes.

A Estrutura

A estrutura do Managed Blockchain se divide em algumas partes:

  1. Um serviço ordenador, que organiza a fila de propostas e o sistema de consenso entre os membros e peer nodes.
  2. VPC, que encapsula tanto os Peer Nodes quanto o Certificate Authority, veremos a funcionalidade de cada um deles mais abaixo.
  3. Em caso de redes utilizando Hyperledger Fabric, há a possibilidade da criação de Private Channels. Esses canais são utilizados para que as transações feitas dentro dele fiquem dentro de um sistema de consenso apenas entre os membros pertencentes ao canal. Ou seja, alterações e propostas no private chanel, não serão publicadas para os demais membros da rede.
  4. Os membros do serviço, cada qual com as seguintes características:
  • Os membros têm de ser convidados e aprovados pelos membros já pertencentes, com um percentual de aceite definido na criação da rede.
  • Os convidados são contas AWS ou IAM, podendo ser organizações inteiras, contas individuais ou até mesmo usuários IAM com role específica para acesso aos recursos EC2, VPC e Blockchain.
  • Cada membro terá dentro da VPC do Blockchain os seguintes elementos:
  • Certificate Authority, que validará todas as conexões remotas feitas pelo Hyperledger Client usando protocolo TLS.
  • Peer nodes, que rodam as chaincodes -ou smart contracts-, armazenam localmente uma cópia da ledger -onde os dados ficam salvos-, e validam todas as propostas enviadas pelos Hyperledger Clients nele conectados, caso as propostas sejam validadas, elas são enviadas para o ordenador.

No desenho acima temos a rede Managed Blockchain encapsulando as VPC’s dos membros, no exemplo acima temos 4 membros:

  1. Filmmaker
  2. OTT Vendor 1
  3. OTT Vendor 2
  4. Banking

Note que há um Private Channel entre os membros Filmmaker e Banking, esse private channel é utilizado, nesse exemplo, para transferências financeiras, e com a criação dele é possível isolar totalmente as informações contidas na comunicação entre esses dois membros.

Cada VPC tem um Endpoint, que é uma abertura pré configurada para que os Hyperledger Clients se conectem, há também uma abertura pública na rede do Managed Blockchain, logo, cada membro é responsável pela segurança de sua própria VPC, configurando os Security Groups adequados para o uso.

Peer Nodes

Talvez o principal elemento da rede, ele que faz todo cálculo para saber se o novo bloco é válido e se pode ser enviado para o Consenso -entenda o Consensus Mechanism- da rede. Além disso, ele retém uma cópia local da ledger -ou seja, uma cópia local de todos os dados- e faz a ponte entre a rede e o client conectado.

Por exemplo, se eu tiver um produto que tenha 3 fontes de dados distintas sobre o mesmo usuário: Aplicativo, Site e Admin, cada um seria um peer node dentro do mesmo membro, e quando o Hyperledger Client se conectar para adicionar ou fazer uma query na chain, ele têm de escolher em qual peer ele vai se ligar. Não há necessidade de ter um client para cada peer node.

Nesse exemplo fica claro a ligação entre o Hyperledger Client e o Peer Node

Além disso, os peer nodes também são responsáveis por rodar os Smart Contracts, que no ecossistema Hyperledger se chamam chaincodes, o AWS Managed Blockchain oferece suporte nativo ao Hyperledger Fabric Shim, que é uma biblioteca low-level que facilita a conexão entre os peer nodes e o sistema Hyperledger Fabric com aplicações em Node.JS

O teste

A ideia do projeto era replicar um cenário onde produtores de conteúdos recebem de forma automática, incremental e imutável, os royalties por visualizações feitas em seu conteúdo em diversos “vendors” diferentes.

1. A arquitetura final do projeto:

2. Filmmaker — Estrutura

O Filmmaker é responsável por iniciar a rede em sua AWS Cloud e convidar os demais membros. Na sequência, é criado uma instância EC2 para ser o Hyperledger Client, nessa mesma instância, utilizando o Hyperledger Fabric Shim, desenvolvemos uma API Rest que se comunica com o Peer Node através do Client, se conectando por um VPC Endpoint.

Essa API Rest em Node é responsável por adicionar usuários e filmes dentro desses usuários. Além de retornar a lista de usuários e todo histórico de incrementos na ledger.

3. OTT Vendor 1

Esse membro tem apenas um aplicativo embarcado, então em sua AWS Cloud foi adicionado um API Gateway que se comunica com uma API Rest em Node, essa API é responsável por fazer uma query nos filmes e incrementar no filme selecionado a informação de que ele foi assistido. Cada vez que o filme é assistido, é adicionada um novo bloco no ledger.

4. OTT Vendor 2

Com uma estrutura mais complexa, esse OTT têm uma vasta cloud na AWS, com uma rede no EKS com diversos containers. Para facilitar o desenvolvimento, nesse cenário, foi adicionada uma função Lambda, que tem como gatilho toda vez que algum conteúdo é tocado.

Quando essa Lambda é ativada, ela chama uma API Rest em node, que está em uma outra VPC. E essa API se comunica através do Hyperledger Client no Peer Node.

5. Banking

Pela falta de conhecimento da infraestrutura no cenário bancário, coloquei apenas um client que se conecta a ledger para consumir os dados bancários e testar como funcionam os private channels.

Uma ideia que tive após a conclusão dos testes, foi a de usar o AWS SNS para trabalhar com um sistema de PUB/SUB junto ao sistema bancário, assim, todas as vezes que houvesse uma atualização em um usuário, o banco seria atualizado automaticamente. Mas não executei esse teste.

Conclusão

Para quem, como eu, conhecia blockchain apenas por teoria e não soube como entrar nesse mundo, essa é uma boa ferramenta para testar e aprender. Pensando em larga escala, a grande diferença de um sistema feito com Blockchain, é a possibilidade de ser distribuído.

Nesse caso o AWS Managed Blockchain, não é de fato um Distributed Ledger, há uma necessidade de que todos os membros se centralizem na AWS, em um sistema distribuído, não há essa necessidade.

Essa imagem trás um pouco sobre o que é a tecnologia de Distributed Ledger, e ilustra o conceito que torna a blockchain tão poderosa. Porém, como foi arquitetada a AWS Managed Blockchain, ela não é, devidamente, um Distributed Ledger.

Ainda há muito para ser explorado no AWS Managed Blockchain, diversas possibilidades podem surgir em algum momento, e recentemente foi adicionada a rede Ethereum o que expandiu muito algumas funcionalidades, como a possibilidade de termos Criptomoedas de forma nativa.

Por ser uma tecnologia nova, ela tem algumas limitações claras, como por exemplo o fato de só existir na região us-east-1, não tendo como criar redes em outras regiões. Também temos problemas de faturamento envolvido, o valor pela execução de uma blockchain na AWS ainda é muito alto, meus testes levaram 3 dias de desenvolvimento, e paguei cerca de USD 55.00, sem ter quase nenhuma requisição e usando instâncias t2.micro, free tier, em todos os locais possíveis. Ainda não há free tier para AWS Managed Blockchain.

Referências

  • Passo a passo para se rodar o AWS Managed Blockchain apartir do AWS CLI e do CloudFormation pode ser encontrado nesse repositório do GitHub
  • Reviews públicos sobre o AWS Managed Blockchain no site da G2
  • Detalhes sobre precificação e funcionamento, podem ser encotrados na landing page da AWS sobre o serviço
  • Para levantar meu próprio serviço, acompanhei a documentação oficial, porém executando tudo junto ao passo-a-passo de AWS Cli e CloudFormation citado acima.

--

--

Victor Martins
Victor Martins

Written by Victor Martins

AWS Certified Solutions Architect Professional

No responses yet