Blockchain – A tecnologia por trás da inovação

Como funciona a Blockchain? Apresentamos neste artigo de maneira geral o funcionamento de uma plataforma baseada em Blockchain. Quando houver assuntos abrangentes que precisam ser citados de maneira pontual, será dada uma breve explicação. Estes temas serão abordados em outros artigos. Caso já existam artigos relacionados, os mesmos estarão disponíveis pelos links dispostos ao decorrer do artigo.

Consenso bizantino

A blockchain está baseada em conceitos fundamentais da computação distribuída. Como tal, um dos pilares da tecnologia está fixada no problema dos generais bizantinos que define o consenso bizantino. Em computação, o consenso permite que diversos participantes de uma rede possam coordenar suas ações mantendo um estado consistente. Neste caso, todos os participantes devem ter a mesma informação para haver consistência.

Uma rede consistente permanece operante mesmo com a existência de falhas. As falhas podem ser ainda processos maliciosos tentando modificar as informações, ainda assim a rede deve ser capaz de alcançar o consenso. Contudo, quem mantem a consistência de uma rede? A manutenção do estado, das informações que o compõem, assim como a mediação entre as participantes é tradicionalmente realizada por um ente confiável. O ente confiável, conhecido como trusted third party viabiliza este cenário dentro de uma rede permissionada. Na Blockchain este trabalho é desempenhado pelos protocolos de consenso. 

Livro de registros eletrônico – Ledger

Podemos visualizar a blockchain como um livro de registros eletrônico distribuído. Este livro é replicado em cada nó pertencente à rede. Todo evento ocorrido dentro da rede deve ser “escrito” neste livro. A consistência desse registro é realizada pelo mecanismo de consenso adotado pela plataforma. Existem blockchains privadas, híbridas e públicas. Com intuito de manter uma explicação generalista tomamos a pública como referência.

Este livro de registro, ou livro razão (similar a um cartório) é conhecido como ledger. Essa ledger é pública, ou seja, todas as informações podem ser lidas e verificadas pelos seus usuários. A Blockchain é uma tecnologia composta por diversas técnicas de computação que fornecem uma computação distribuída confiável. Outra forma de enxerga-la é como a implementação de uma máquina de estados replicada.

A ideia de uma estrutura similar a Blockchain já existia antes de Nakamoto. Contudo, com o problema dos generais bizantinos. Nakamoto, introduziu a ideia de protocolos de consenso ao determinar o Proof of Work como mecanismo de validação das informações dentro da rede. O PoW consiste basicamente em uma corrida entre os nós validadores a fim de encontrar a resposta de um puzzle, o hash, compatível com um conjunto de informações chamado bloco.

Posteriormente, ainda neste artigo falaremos de como são estruturadas as informações dentro da Blockchain. Em resumo, o mecanismo de consenso define as diretrizes do processo de validação de informações que serão adicionadas à Blockchain. 

Transações na Blockchain

Então, como as informações são armazenadas e verificadas dentro da rede? Em redes tradicionais as informações são verificadas por um ente confiável. Diferentemente dessas redes, na Blockchain as informações são armazenadas em uma ledger pública. Essa ledger é distribuída, replicada por todos os nós da rede (ou quase todos). Essass informações são armazenadas em transações com identificador de origem e destino. Além disso, há outras informações que dependem da finalidade da plataforma.

A transação corresponde a uma instrução assinada digitalmente, propagada dentro do sistema. Essas transações são agrupadas a fim de formar uma estrutura organizada denominada bloco. Antes de falarmos dos blocos, você pode estar se perguntando: e qual a garantia da veracidade de uma determinada transação? A autenticação das transações é garantida por chave assimétrica. A Figura 1 apresenta de maneira resumida o processo entre a criação de uma transação e sua inserção na Blockchain.

Figura 1: Processo resumido de inserção de uma transação na Blockchain

Autenticação das transações

Na Blockchain a criptografia de chave assimétrica utiliza pelo menos duas chaves: privada e pública. Existe ainda a combinação de mais de uma chave privada para assinar as transações, aumentando assim o nível de segurança. Contudo, para exemplificação vamos considerar o caso padrão.

Ao criar uma transação por uma conta no sistema, o usuário irá assinar com sua chave privada para posteriormente propagá-la na rede. Essa assinatura digital é baseada na chave privada do usuário. Apenas ele é capaz de gerar esta assinatura. Dessa forma,  é de extrema importância que a chave seja mantida em segredo para preservar a autenticidade do usuário.

A chave pública deste usuário está associada à chave privada, sendo utilizada para verificações de autenticidade. Em casos de tentativa de forjar a autenticidade de uma transação, o resultado deste processo de verificação é falso. Consequentemente, houve falha no processo de verificação caracterizando um processo malicioso. Contudo, ao aplicar a chave pública em uma assinatura legítima de uma transação realizada pelo mesmo usuário é retornado verdadeiro como resultado. 

Blocos – agrupamento de transações

Após o processo de verificação de autenticidade as transações são adicionadas aos blocos, como já mencionado anteriormente. Os blocos possuem além das transações, campos de controle comuns a diversas plataformas distintas. Entretanto, estes blocos não se restringem aos que são citados neste texto. As principais informações que os blocos possuem são:

  • identificador (hash) – resultado do processo de validação deste bloco;
  • árvore merkle – a estrutura de dados que mantém as transações organizadas dentro do bloco;
  • timestamp – instante de tempo em que ocorreu a validação do bloco;
  • e recompensa do bloco – somatório das recompensas de cada transação + recompensa do bloco.

Estes são apenas alguns dos campos que compõem um bloco. Na Figura 2 exemplificamos a estrutura possível para transações em plataformas Blockchain que compõem o bloco.

Figura 2. Estrutura básica de uma transação

 Validação das informações na Blockchain

Após à criação de um bloco, este será submetido a um processo de validação. Os nós mineradores realizaram um trabalho computacional de acordo com as regras do protocolo de consenso utilizado pela plataforma. O objetivo deste trabalho é encontrar um hash (identificador) único para este bloco.

O Bitcoin utiliza o mecanismo de consenso prova de trabalho – proof of work (PoW), enquanto Ethereum utiliza o mecanismo de consenso prova de participação – proof of stake (PoS). Uma vez que o bloco esteja validado, este é propagado pela rede a fim de ser adicionado a cadeia de blocos principal. A cadeia de blocos principal é a Blockchain.

Entretanto, para este bloco ser adicionado à Blockchain a maior parte da rede deve aceitar este bloco como parte da cadeia de blocos. Por esse motivo há blocos que são minerados com sucesso mas não são aceitos pela rede. Neste caso, o minerador não recebe a recompensa respectiva a aquele bloco. Este caso será aprensentado em outro artigo do site.

Cadeia de blocos

Antes do Bitcoin, a Blockchain não tinha qualquer tipo de verificação e confiabilidade de informações. Qualquer transação poderia ser adicionada ou modificada sem o consentimento do usuário remetente. Ok, o bloco validado é inserido na cadeia de blocos. Mas qual a certeza de que ele não será modificado?

Nesta cadeia de blocos, cada bloco possui um ponteiro referenciando o hash de seu bloco antecessor . Assim, temos uma lista encadeada de blocos (como apresenta a Figura 3) desde o bloco gênesis (primeiro) até o último bloco minerado da cadeia. Cada identificador do bloco, ou seja, o hash é fruto de uma função hash que tem as informações do bloco como input da função. As informações que compreendem este input são, as transações (assim como todos seus campos), número do bloco, timestamp, os demais campos do bloco e o hash do bloco anterior.

Cada bloco possui o seu hash atrelado ao bloco que o precede. Dessa forma, para modificar informações de um bloco pertencente à blockchain será necessário modificar seus predecessores. Visto que uma modificação das informações do bloco original acarreta em modificação do hash associado. Isso acontece para os demais blocos que o sucedem. Neste cenário que existe o ataque de 51%. Caso 51% da rede se torne maliciosa a história poderia ser reescrita, e a Blockchain seria modificada.

Figura 3: Exemplificação de uma cadeia de blocos da Blockchain

Margem de segurança

A segurança da Blockchain está atrelada justamente a esta lista encadeada de blocos, mas não restrita à ela. Quanto mais antigo um bloco, mais seguro ele é. Consequentemente mais difícil ou improvável se torna  qualquer tipo de modificação do bloco. Seguindo esta lógica, quanto mais recente um bloco menor a certeza de que ele permanecerá na chain.

Para isso, existe um tempo de espera para que o último bloco se torne “seguro”.  Vamos refletir no seguinte conceito … a cada bloco adicionado a chain mais difícil se torna sua reescrita. Isso acontece porque o trabalho computacional que deve ser desempenho para esta tarefa se torna inviável. Dessa forma, para que o último bloco se torne seguro é preciso “esperar” que mais blocos sejam adicionados àquela cadeia.

Citamos um exemplo para esclarecer o ponto: para que um determinado usuário tenha certeza de que sua transação (pertencente ao bloco em questão) realmente aconteça, ele deve esperar que mais blocos sejam adicionados após o que recebeu sua transação. Assim tanto o remetente quanto o usuário podem considerar que a transação foi bem sucedida.

No Bitcoin este tempo está atrelado a 6 blocos adicionados a ledger. Isso significa que o tempo de trabalho computacional necessário para garantir a inserção transação na Blockchain é equivalente a 6 blocos. Dessa forma, toda a rede reconhece que aquela transação foi realizada.

Essa questão, citada anteiormente, esta atrelada a uma bifurcação que pode ocorrer quando os nós estão “ouvindo” os blocos da rede. O resultado as vezes são duas listas concomitantes. Para este caso, existe um protocolo a ser seguido. O resultado é a escolha de uma das listas. Esse tema será abordado futuramente em outro artigo do site.

Propriedades da Blockchain

Segundo alguns autores, a Blockchain é um banco de dados distribuído público onde todos os eventos são compartilhados e visualizados por todos na rede. As propriedades que evidenciam as qualidades da Blockchain como tecnologia inovadora estão listadas a seguir:

  • 1. Imutabilidade – a informação inserida não pode ser modificada;
  • 2. Irrefutabilidade: uma transação não pode ser negada;
  • 3. Disponibilidade: os nós da rede chegam a um consenso mesmo com presença de falhas de nós
  • 4. Integridade: os participantes da rede recebem as informações consistentes e confiáveis;
  • 5. Transparência: todos eventos e informações são transparentes;
  • 6. Visibilidade: a autenticidade de uma transação pode ser verificada;
  • 7. Desintermediação: não há atuação de um ente centralizador;
  • 8. Pseudo-anonimidade: a identificação real do usuário não é conhecida pelos outros nós da rede.

Desde seu surgimento, a implementação confiável de Nakamoto, a blockchain tem passado por fases. Essas fases, segundo (GREVE, F. et al.), são consolidadas em 3 etapas:

(1) blockchain como uma máquina de estados simplificada com o Bitcoin em 2008; (2) uma maior gama de operações é possível com uso de contratos inteligentes com a Ethereum em 2015, potencializando o uso da Blockchain; (3) ocorre a difusão da utilização da Blockchain em diversas áreas como IoT, saúde e administração de governos.

GREVE, F. et al.

Esta rede P2P com banco de dados distribuído reinventou a maneira como podemos realizar transações e acordo de naturezas diferentes. Desde transferência de valores, produtos, ou rastreamento de informações.  Certamente ainda há aprimoramento a ser feito, mas no mundo da tecnologia sempre há. Mais informações sobre o modo de operação da Blockchain podem ser acessados nos artigos relacionados neste site.

O que é a Blockchain?

Neste artigo do site simplificando redes descrevemos a tecnologia de maneira simplificada, aprensentando uma visão geral. Queremos que leigos e profissinais da computação possam compreender o que é a Blockchain e onde ela pode ser aplicada. Clique aqui para ser redirecionado à página do artigo acima citado.

Principais Referências Bibliográficas

Juliana Zanelatto Gavião Mascarenhas, Artur Ziviani, Klaus Wehmuth, Alex Borges Vieira, On the transaction dynamics of the Ethereum-based cryptocurrency, Journal of Complex Networks, Volume 8, Issue 4, August 2020, cnaa042, https://doi.org/10.1093/comnet/cnaa042

Mascarenhas, Juliana Zanelatto Gavião. Modelagem e Análise Temporal da Rede de Transações de uma Plataforma de Consenso Distribuído. 2019. 123 p. Dissertação (Mestrado em Modelagem Computacional) – Laboratório Nacional de Computação Científica, Petrópolis, 2019. https://tede.lncc.br/handle/tede/299

MASCARENHAS, Juliana ZG; VIEIRA, Alex B.; ZIVIANI, Artur. Análise da rede de transações do ethereum. In: Anais do I Workshop em Blockchain: Teoria, Tecnologias e Aplicações. SBC, 2018. https://sol.sbc.org.br/index.php/wblockchain/article/view/2352

GREVE, F. et al. Blockchain e a revolução do consenso sob demanda. Minicursos do Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (Minicursos_SBRC), v. 36, 2018.

Outros artigos do site