O blog da AWS
Blockchain ou ledger centralizado: onde e quando usá-los?
Willer Púlis, Sr. Enterprise Solutions Architect, Solutions Architecture
Historicamente, as pessoas sentiam a necessidade de registrar todos os tipos de transações, incluindo transferências de propriedade de terras, distribuição de grãos e alimentos, trocas monetárias, etc. Os livros contábeis, “ledgers” no inglês, se tornaram uma parte importante da contabilidade de dupla entrada e, mais recentemente, começamos a usar sistemas computadorizados para manter livros contábeis. Nos primórdios das informações armazenadas digitalmente, custos com armazenamento eram muito maiores do que os atuais e, por causa disso, surgiu o conceito de normalização de banco de dados para permitir que esses sistemas otimizassem o uso do espaço de armazenamento. Considerando que os preços atuais de armazenamento caíram consideravelmente em comparação com o passado, a necessidade de normalizar o banco de dados não é mais tão significativa e é comum que as organizações priorizem a agilidade e a velocidade no acesso aos dados. Esses custos mais baixos de armazenamento também permitiram que as empresas armazenassem mais dados e mantivessem um histórico completo das transações para maior rastreabilidade e recursos de auditoria.
Esse blog post aborda as principais características de blockchains e como se diferenciam de soluções de ledgers centralizados.
Desafios da rastreabilidade
Ter a possibilidade de armazenar o histórico completo de certo dado traz algumas vantagens:
- Linhagem: ser capaz de demonstrar a linhagem para determinados dados. Um exemplo no setor de cadeia de suprimentos seria ser capaz de rastrear o caminho que um determinado produto percorre desde o fornecedor de peças, passando pela fábrica ou planta de montagem, até o consumidor final. A linhagem do dado traria maior facilidade em identificar etapas problemáticas e abordá-las adequadamente.
- Ordenação: provar que um registro foi modificado em datas específicas, de uma forma específica. Esse pode ser o caso de um sistema financeiro que precisa rastrear a ordem das transações de débito e crédito de contas correntes.
- Auditoria: um histórico completo possibilita afirmar o estado dos dados em um determinado ponto no tempo, possibilitando fornecer dados precisos sobre um processo que aconteceu no passado às equipes e firmas de auditoria.
Embora seja possível que os clientes usem abordagens tradicionais de banco de dados para armazenar um histórico completo de alterações em um registro, essas soluções tendem a apresentar alguns desafios:
- Uso de recursos: essas soluções personalizadas em bancos de dados tradicionais geralmente significam ter tabelas de auditoria e gatilhos para gerenciar o controle de versão dos registros. Embora eles possam realizar o trabalho, essas abordagens geralmente vêm com um alto uso de recursos.
- Difícil de gerenciar e escalar: à medida que o volume de dados cresce e o número de transações aumenta, as abordagens tradicionais enfrentam dificuldade em escalar para atender à demanda.
- Sujeito a incompletude e erros: é comum que bancos de dados tenham modificações na modelagem de dados e nos esquemas. Como essas modificações ocorrem ao longo do tempo, e muitas vezes com diferentes equipes de desenvolvimento, torna-se um desafio garantir que todo o histórico esteja sendo registrado corretamente, o que pode levar à perda de dados.
- Verificabilidade comprometida: com bancos de dados tradicionais, sempre haverá alguém com acesso suficiente para realizar modificações não rastreáveis em todo o sistema que podem afetar diretamente a confiança no sistema.
Ledgers
Os livros contábeis têm sido comumente usados na contabilidade para controlar todas as entradas de uma determinada conta. Eles podem rastrear, por exemplo, todos os débitos e créditos que acontecem em diferentes contas de uma empresa. Os livros contábeis mantêm uma lista de todas as transações em uma página e, na parte inferior da página, um resumo é registrado. Sempre que os dados são gravados em um livro contábil, eles não podem ser modificados ou removidos. Se os dados tiverem sido gravados incorretamente em um livro contábil, outra entrada deverá ser adicionada para corrigi-los, em vez de apagá-los ou modificá-los. Esse atributo geralmente é chamado de imutabilidade.
Os ledgers digitais oferecem imutabilidade ao garantir que nenhuma operação possa remover ou modificar dados, mas sim adicionar uma nova versão desses dados ao banco de dados. Armazenar um histórico completo e imutável de todos os registros pode ser suficiente em alguns casos. No entanto, em alguns cenários, os clientes não precisam apenas armazenar o histórico completo dos dados, mas também precisam de alguma forma de provar que os dados não foram adulterados.
Para atender a essa necessidade, algumas tecnologias de ledger usam técnicas de hashing criptográfico para encadear diferentes blocos de transações, de forma que a alteração de um único byte de dados em qualquer um desses blocos quebraria a cadeia criptográfica e tornaria evidente que os dados foram adulterados. Com o uso de merkle trees e digests, é possível verificar rapidamente se os dados contidos nesse ledger são confiáveis ou não.
Blockchain
Ao registrar transações que acontecem em uma única empresa, os ledgers centralizados oferecem uma ótima maneira de registrar essas transações de maneira rápida e confiável. No entanto, há cenários em que as empresas precisam realizar transações com outras empresas nas quais não necessariamente confiam, como ao transferir dinheiro entre contas bancárias em dois bancos diferentes. Isso significaria um débito em uma conta no banco A e um crédito em uma conta no banco B. Mas como o banco A pode confiar no banco B para realmente creditar esse dinheiro na conta certa?
O que acontece na maioria das vezes é que uma autoridade central terceirizada na qual ambas as instituições confiam, seja por um contrato comercial ou por lei, seria responsável por liquidar essa transação. A adição de terceiros ao processo geralmente leva ao aumento de custos, maior complexidade e, potencialmente, ao aumento do tempo necessário para concluir a operação. Isso acaba fazendo com que os clientes finais tenham que pagar taxas mais caras e esperar mais para que suas transações sejam concluídas, resultando em uma experiência ruim para o cliente.
E se pudéssemos eliminar a necessidade de ter uma entidade central para liquidar as transações? E se tivéssemos um sistema que pudesse governar essas transações de forma que a confiança estivesse no próprio sistema e nas regras definidas por ele?
Uma rede blockchain é um sistema distribuído que cria confiança entre partes que não necessariamente confiam umas nas outras, a fim de realizar transações mais eficientes e seguras sem a necessidade de terceiros. As blockchains usam uma tecnologia chamada Distributed Ledger Technology (DLT), ou tecnologia de ledger distribuído, para manter um rastreio de todas as transações. Por serem distribuídas, as DLTs não estão sujeitas a uma única parte controlando e decidindo o que é gravado no ledger, mas, para que uma transação seja confirmada no ledger, a rede deve chegar a um consenso. Além de usar um DLT, as redes blockchain também precisam oferecer aos usuários a capacidade de verificar criptograficamente as transações e garantir que os dados permaneçam intactos. Algumas redes blockchain usam a técnica criptográfica de encadeamento de hash descrita anteriormente neste post para garantir que as entradas no DLT sejam vinculadas criptograficamente.
Mecanismos de consenso
Os mecanismos de consenso são protocolos desenvolvidos para que sistemas distribuídos possam decidir sobre o estado dele mesmo. No contexto da blockchain, os mecanismos de consenso servem como uma forma de trazer integridade ao ledger distribuído para que o ledger hospedado em um nó arbitrário da rede seja idêntico ao ledger hospedado em qualquer outro nó da rede. São diversos os tipos de algoritmos de consenso e a escolha do mecanismo para uma rede interfere diretamente na performance (medida em transações por segundo), poder computacional necessário, custo por transação, pegada de carbono e parâmetros de sustentabilidade. Alguns dos mecanimos de consenso são:
Proof-of-Work: O Proof-of-Work, ou PoW, é um mecanismo que leva em consideração o esforço, ou trabalho, executado pelo nós da rede para validar e incluir transações em um bloco. Para que um novo bloco seja adicionado à rede, um nó minerador deve fazer uso de um algoritmo que irá efetuar um calculo matemático complexo. Devido à alta complexidade de cálculo, um grande poder computacional é necessário e, consequentemente, a incorrência de alto custo com uma penalidade na sustentabilidade da solução. Uma vez que esse nó finaliza o cálculo, então ele poderá adicionar um bloco à rede e ser recompensado pelo trabalho. O grande esforço e a quantidade de investimentos necessários para manter essa operação são a contrapartida para que não haja fraude, uma vez que adulterar dados no ledger se tornaria uma tarefa de custo potencialmente impeditivo. Um exemplo de rede blockchain que utiliza PoW é a rede Bitcoin.
Proof-of-Stake: Com o Proof-of-Stake, ou PoS, participantes da rede podem assumir a função de validadores de transações. Para isso esses participantes terão parte do seu saldo em criptomoedas bloqueadas como garantia de que irão processar apenas transações legítimas. Por não ser necessário efetuar um cálculo complexo como no PoW, o PoS acaba por ser um algoritmo mais eficiente, sustentável e com potencial de maior volume transacional. Um exemplo de rede blockchain que utiliza PoS é a rede Ethereum.
Proof-of-Authority: No Proof-of-Authority, ou PoA, entidades e nós validadores são escolhidos e passam a ser responsáveis por incluir transações em blocos e propagar esses blocos pela rede. Com o PoA geralmente se alcança um maior volume transacional, confirmando transações de forma mais rápida se comprado a outros mecanismos. O PoA é geralmente a escolha para redes blockchain privadas onde as partes são conhecidas.
Amazon Managed Blockchain
O Amazon Managed Blockchain (AMB) é um serviço totalmente gerenciado criado para ajudar clientes na construção de aplicações Web3 tanto em redes privadas quanto em redes públicas de blockchain. Através do AMB Access, você pode acessar dois tipos de serviço de infraestrutura de blockchain: operações de API em redes de blockchain multi-tenant e nós ou redes dedicadas de blockchain. O AMB Query oferece, de forma serverless, acesso a datasets de redes blockchain de forma padronizada com APIs amigáveis.
Amazon Managed Blockchain Access
Com o AMB Access no modelo nós ou redes dedicadas de blockchain você pode criar nós na rede pública Ethereum e também redes privadas utilizando Hyperledger Fabric para uso próprio. As redes privadas do AMB Access com Hyperledger Fabric te permitem convidar outras contas AWS para fazer parte da rede e submeter transações. Já no modelo API multi-tenant, você pode usar o AMB Access Bitcoin, que é composto de uma frota de nós Bitcoin compartilhada com múltiplos clientes atrás de uma camada API para submeter transações, ler dados do ledger da rede Bitcoin e fazer requisições JSON-RPC disponíveis em um core node Bitcoin.
Amazon Managed Blockchain Query
O AMB Query te permite criar aplicações que requerem dados de uma ou mais redes públicas blockchain sem a necessidade de processar dados da blockchain, rastrear contratos e manter uma infraestrutura de indexação especializada. Seja para analisar historicamente os balanços de tokens fungíveis ou não-fungíveis (NFTs), ver o histórico de transações de uma determinada carteira, ou rodar analytics na distribuição de criptomoedas como Ether, o AMB Query te possibilita acesso ao dado que você precisa nas redes públicas Bitcoin e Ethereum.
Conclusão
Blockchains vem sendo usadas para solucionar os mais diversos problemas nas áreas de cadeia de suprimentos, financeira, logística, etc. Em casos onde a descentralização é uma característica e há a necessidade de haver um canal único para se registrar, rastrear e controlar os eventos e transações entre múltiplas entidades, a blockchain de destaca por ser capaz de construir a confiaça entre essas partes através de consenso e ao mesmo tempo mantendo um registro imutável e distribuído que possibilita a consulta histórica de transações para fins de auditoria. O Amazon Managed Blockchain é um serviço gerenciado que facilita a criação e operação de redes blockchain, tanto públicas quanto privadas, removendo o trabalho indiferenciado da instalação e configuração de nodes, assim como sua conectividade com a rede de blockchain, e permitindo que você dê foco às atividades que irão trazer benefício ao seu negócio como a criação e utilização de smart contracts, definição das regras de consenso e proposição de transações. Nos casos onde a autoridade sob os dados é centralizada e uma única entidade, empresa ou área de negócio tem total controle sob o que é escrito e persistido em um ledger, soluções de ledger centralizado podem trazer imutabilidade para rastreio e linhagem de dados além da capacidade de comprovação da integridade dos dados através de mecanismos de hashes criptográficos.
Sobre o autor
Willer Púlis é Arquiteto de Soluções Enterprise para clientes da indústria financeira na AWS. Ele trabalha com tecnologias de banco de dados a mais de 12 anos e adora falar sobre elas. Willer também gosta de cozinhar e de arquitetura (a dos prédios/casas e belos acabamentos).