Links

12. Processos de validação e mineração: ledger de ativos e transações

O Bitcoin é a principal criptomoeda existente. É o impulsionador do mercado e o ativo mais desejado do ambiente criptográfico. O Ethereum, por sua vez, propiciou o surgimento de aplicações descentralizadas, a criação de smart contracts e o surgimento dos NFTs. Já as stablecoins tornaram mais fácil aos usuários a manutenção de seus ativos dentro do mercado cripto sem se expor à volatilidade, tudo isso graças à tecnologia blockchain.
Mas como essa tecnologia funciona? Como se dá o processo de validação dos novos blocos criados?
Nesta seção, vamos nos aprofundar nos fundamentos teóricos por trás dessa tecnologia. Aqui, veremos as implicações mais amplas que são a base de todo o conceito desse ecossistema.
Compreender de forma eficiente os elementos tecnológicos não é um processo simples. É possível que pessoas menos íntimas desse setor sintam um pouco de dificuldade. Mas não se preocupe, invista o tempo necessário para compreender este material. Pois, ao fim do capítulo, você terá adquirido alguns conhecimentos valiosos, tais como: 1) identificar ledgers centralizados e descentralizados; 2) compreender o problema dos generais bizantinos (BGP); e 3) entender como o Bitcoin aborda essa questão.
Em primeiro lugar, é necessário entender algumas definições. São elas:
Blockchain: É uma estrutura de organização de informação em sequências de blocos, ligados um a um ao seu predecessor até o primeiro bloco, chamado de gênesis. As transações codificadas e contidas nesses blocos registram a transferência de ativos entre os participantes da rede.
Ledger: É o registro completo das atividades, sendo normalmente utilizado para rastrear a transferência de dinheiro e propriedade de ativos ou informações. Importante não confundirmos esse termo com a hardware-wallet de mesmo nome, que será abordada mais à frente, no capítulo 15, sobre custódia.
SHA-256: É a linguagem de programação do Bitcoin. Um hash criptográfico funciona como uma “impressão digital” para uma sequência de caracteres ou para um arquivo de dados. Pode ser usado para confirmar a integridade e a autenticidade. O algoritmo SHA-256 gera um hash de 256 bits.

12.1 O papel dos Ledgers

Ledgers são usados para registrar, entre outras, atividades econômicas, como a propriedade de bens e a transferência de valor, entre diversas partes interessadas, como consumidores, distribuidores, fornecedores, instituições e governos. Os ativos registrados em um ledger podem ser:
  • Tangíveis: Veículos e imóveis;
  • Intangíveis: Dinheiro, ações e direitos digitais.

12.1.1 Ledgers centralizados

Os ledgers centralizados são considerados confiáveis, porque antes deles nunca houve uma alternativa prática. Porém, é possível imaginar um cenário caótico caso um terceiro agente, sendo não confiável, ganhe acesso a algum ledger centralizado importante. Por exemplo: você deixaria estranhos acompanharem o saldo da sua conta corrente?
Diante disso, um “terceiro agente de confiança” é responsável por todos os registros de importância na sociedade moderna. Na maioria das vezes, esse agente é representado por um banco, que é o responsável por “registrar” seus fundos, ou pode ser o cartório local, que detém os registros de propriedade da sua casa. Mesmo assim, os ledgers centralizados são passíveis de erros. Em outros casos, os detentores desses registros podem não ser tão confiáveis, agindo como limitadores e representando um Ponto Único de Falha (SPoF). Alguns exemplos de problemas que os ledgers centralizados podem ter são:
1) os detentores desses registros podem agir de má fé. Por exemplo, eles podem aceitar suborno para transferir uma escritura de terra ilegalmente; 2) Eles podem excluir grupos que desaprovam. Um exemplo seria os bancos que bloqueiam transações de corretoras ou outras empresas; e 3) Eles podem perder registros importantes devido a descuido, falha técnica, roubo, desastre natural, entre outros.
Todos os ledgers que você conhece são centralizados, tendo um detentor "confiável" desses registos:
  • As suas transações bancárias;
  • As suas transações no cartão de crédito;
  • O registro da sua propriedade no cartório;
  • O seu registro de cidadania, como RG e passaporte;
  • O sistema de registro financeiro da sua empresa;
  • Os bens registrados pela seguradora;
  • A lista de reserva de um hotel;
  • O registro de locatários de uma locadora de carros;

12.1.2 Ledgers descentralizados

Um ledger descentralizado, por sua vez, o qual permite que membros que não se conheçam em uma rede confiem um no outro e façam transações, teria uma ampla vantagem e aplicabilidade. Na realidade, isso poderia significar algo: 1) Invulnerável à censura ou exclusão; 2) Invulnerável à má conduta dos detentores do registro; e 3) Invulnerável à perda de registros. Se forem analisados os fundos bancários da Coalizão Feminista Nigeriana teremos um exemplo disso, pois foram bloqueados pelas autoridades durante o protesto contra a brutalidade policial em 2020. A solução encontrada por seus apoiadores foi realizar novas doações em Bitcoin para garantir os suprimentos, assistência médica e jurídica para a causa.

12.1.3 O Problema dos generais bizantinos

Uma questão de confiança em um sistema distribuído e sem um controle central não é uma novidade na ciência da computação. Os componentes desse sistema podem não chegar a um consenso, devido a falhas técnicas ou à desinformação. Uma forma de resolver essa questão foi pensar a partir do problema dos generais bizantinos. Segundo a formulação do problema: “imaginamos que várias divisões do exército bizantino estão acampadas fora de uma cidade inimiga, cada divisão comandada por seu próprio general. Os generais podem se comunicar uns com os outros apenas por mensageiros. Depois de observar o inimigo, eles devem decidir sobre um plano de ação em comum acordo. No entanto, alguns dos generais podem ser traidores, tentando impedir que os generais leais alcancem o acordo. Os generais devem ter um algoritmo para garantir que (A) Todos os generais leais decidam sobre o mesmo plano e (B) Um pequeno número de traidores não consiga que os generais leais adotem um plano ruim”.
O Problema dos Generais Bizantinos (BGP) foi proposto pela primeira vez por Marshall Pease, Robert Shostak e Leslie Lamport em 1982, fazendo uma analogia a um grupo de generais do exército bizantino acampados com suas tropas em torno de uma cidade inimiga. A situação descrita pode ser melhor observada na figura a seguir:
Nesse cenário, um traidor (seja o comandante ou o tenente) teria a capacidade de impedir o grupo de chegar a um consenso. Levando esse exemplo para um ledger financeiro, podemos imaginar uma entidade maliciosa que tem como objetivo facilitar transações fraudulentas.
Fonte: viden.vc

Figura 86 - Resolução do problema dos generais bizantinos

Fonte: viden.vc
Com o aumento do número de entidades no sistema, o número de canais de comunicação (e a possibilidade de desinformação) aumentou exponencialmente. Imagine a dificuldade de se conseguir consenso com milhares ou milhões de partes envolvidas. Como visto no capítulo 2, o Bitcoin surge como uma proposta de resolução desse problema. Em outubro de 2022, o lançamento do whitepaper do Bitcoin, documento com todas as informações sobre o token, completará 14 anos, um dos marcos mais significativos para os ativos digitais.

12.2 A abordagem do Bitcoin em relação ao problema dos generais bizantinos

De forma prática, como armazenar a blockchain do Bitcoin? A forma encontrada pelo Bitcoin para resolver esse problema envolveu duas soluções: 1) o usuário deve fazer download de um software, chamado “Bitcoin client software”. Importante observar que o download do software do Bitcoin não é obrigatório para ter acesso à rede. Isso é recomendado para quem quer validar as transações e participar do mecanismo de consenso; e 2) esse software irá inicialmente fazer download da blockchain, ou seja, de todo o registro histórico de transações do Bitcoin. Assim, cada um desses clients guardará localmente todo o registro de transações de bitcoin ao longo do tempo. Com isso, não existe uma central de registro, e sim inúmeras cópias distribuídas pelo mundo todo.
Após o histórico da blockchain ser baixado e validado, surge a questão da sincronização: como todas essas cópias da blockchain se mantêm sincronizadas umas com as outras? Em outras palavras: como elas chegam a um consenso, sem uma entidade central? Quando uma das cópias dos registros (clients) recebe informações conflitantes sobre uma transação, em qual delas deve-se acreditar e qual deve ser ignorada? Qual é a informação verdadeira e qual é informação errada? A esta altura você já deve ter percebido que manter uma cópia da Blockchain sincronizada funciona como uma aplicação do Problema dos Generais Bizantinos.
Feito isso, como a mecânica de sincronização da blockchain funciona? Ela opera em três pontos:
1) Quando um usuário executa uma transação (envia bitcoin de um endereço para outro), a transação é eventualmente transmitida para todos os validadores da rede (que possuem cópias dos dados passados da blockchain). Em poucos segundos, a maioria dos validadores recebe a solicitação da nova transação;
2) Neste ponto a transação ainda é considerada “não confirmada”. Lembre-se do Problema dos Generais Bizantinos: se um membro desonesto da rede enviasse uma solicitação de transferência de 1 BTC mesmo sem possuir o saldo, como os validadores devem saber?; e
3) O Bitcoin confirma transações e resolve o BGP por meio de um processo chamado “mineração”.

12.2.1 O processo de mineração e o Proof-of-Work

Mineração é o processo pelo qual novos blocos são anexados à cadeia blockchain e novas unidades de bitcoin são “geradas” (cunhadas) de acordo com um cronograma de emissão pré-determinado. O supply total é finito e limitado a aproximadamente 21 milhões de bitcoins. A integridade das transações contidas em um bloco é assegurada através de uma contribuição de poder computacional (Proof-of-Work). Os dados nesse “candidato a bloco” passam repetidas vezes pelo processo de hash até que sejam menores que um padrão definido de acordo com a taxa de dificuldade atual. Uma observação: o valor de um hash é “menor” se tiver mais zeros à esquerda.
Esse processo parece complicado, mas é automatizado! O único trabalho manual envolvido na operação de mineração costuma ser a configuração e manutenção das máquinas. Entendendo o que é mineração, portanto, percebe-se que o termo vem sendo usado como uma analogia enganosa para o que os mineradores realmente fazem. Até por isso, é mais fácil pensar nos mineradores como "validadores" do registro que é a Blockchain.
Etapas para a criação de um novo bloco, segundo Antonopoulos, em Mastering Bitcoin.
  1. 1.
    Coletar transações não confirmadas da rede para formar um "candidato a bloco";
  2. 2.
    Construir o "candidato a bloco" referenciando o bloco anterior e um nonce (número aleatório);
  3. 3.
    Contribuir com o poder computacional (Proof-of-Work) e transmitir o "candidato a bloco" para ser verificado pelos outros validadores da rede;
  4. 4.
    Caso o “candidato a bloco” seja considerado válido e resulte na maior dificuldade, ele é adicionado à blockchain e o minerador recebe sua recompensa;

Figura 87 - Como um bloco é construído

Fonte: viden.vc

12.2.2 O prêmio de mineração

Assim que o minerador tem um bloco aceito, ele é transmitido para os outros clientes (nós/nodes). Cada client verifica se o hash do bloco recebido corresponde ao padrão esperado e adiciona o bloco à própria cópia da blockchain. Após isso, cada minerador reinicia o trabalho para encontrar o próximo bloco, que será incorporado de acordo com o hash do bloco que acabou de ser adicionado. O minerador responsável pela incorporação do novo bloco à rede recebe uma recompensa por seu trabalho:
  • A atual recompensa por bloco é de 6.25 bitcoins, aumentando o supply circulante do ativo;
  • Além da recompensa, o minerador também recebe as taxas de todas as transações incluídas naquele bloco.
As recompensas por bloco minerado iniciaram com prêmios de 50 bitcoins e caem pela metade a cada 210 mil blocos (aproximadamente a cada quatro anos). Em julho de 2022, o prêmio por bloco minerado foi de 6.25 bitcoins. O próximo “halving” ocorrerá em 2024, quando os mineradores receberão 3.125 bitcoins a cada bloco. O prêmio por mineração de blocos segue essa dinâmica até a rede atingir o bloco 6.930.00 (o que irá ocorrer por volta do ano de 2140), quando será interrompido e restarão apenas as taxas de transações para os validadores. Ao fim, o número total de bitcoins emitidos será de 21 milhões.

Figura 88 - Taxa de mineração do Bitcoin

Fonte: viden.vc
Mais de 19 milhões de bitcoins foram minerados por esse mecanismo, o que representa mais de 90% do total do supply do token. A taxa de emissão continuará diminuindo até o ano de 2140, como acabamos de mencionar.
Fonte: viden.vc

12.2.3 O autoajuste de dificuldade

O prêmio de mineração parece ser bastante atrativo, mas o que impede que um computador poderoso minere todos os bitcoins? Para resolver essa questão, felizmente foi pensado em uma mecânica que impede esse movimento: a dificuldade dos problemas se ajusta, automaticamente, de acordo com a quantidade de poder computacional distribuída pela rede. Assim, garante-se que os blocos sejam extraídos a uma velocidade constante, nem rapidamente nem lentamente.
  • Esse ajuste de dificuldade acontece a cada 2.016 blocos. Atualmente, equivale a aproximadamente duas semanas;
  • Se o tempo médio de mineração de um novo bloco for maior do que dez minutos ao longo desse período, a dificuldade é diminuída;
  • Se o tempo médio de mineração de um novo bloco for menor do que dez minutos, a dificuldade é aumentada.
Dessa forma, independente do poder computacional aplicado na rede, o tempo médio de criação de um novo bloco é de dez minutos. Qualquer indivíduo pode configurar um nó de mineração. A lucratividade, no entanto, irá variar de acordo com alguns fatores:
  • Qualidade do hardware utilizado;
  • Custo e fonte de eletricidade;
  • Custo de mão de obra e manutenção;
  • Impostos.
Caso a operação não seja lucrativa, o minerador pode desligar suas máquinas e deixar a rede, voltando a minerar novamente quando a dificuldade diminuir.

12.2.4 Retomando o Problema dos Generais Bizantinos

Mas o que acontece quando mineradores enviam blocos com informações diferentes? Como os clients (nodes) escolhem qual deles incluir na blockchain? A resposta é que quando um validador (node) tenta decidir qual bloco aceitar, ele irá preferir não apenas aquele que resulta em uma cadeia mais comprida, mas também aquele que acumula a maior "dificuldade computacional" (Proof-of-Work usado para criá-lo). Em outras palavras, será escolhido o bloco em que foi distribuído maior poder computacional.
Os blocos inválidos, ou uma versão da cadeia com menor poder computacional acumulado, se tornarão “órfãos” e essas transações precisarão ser reprocessadas. Nesse sistema, um node desonesto (traidor) não consegue continuar transmitindo desinformação na rede Bitcoin, a menos que ele controle a maioria significativa do poder computacional distribuído e consiga sustentar o controle, o que seria extremamente difícil de ser feito.

12.2.5 Mineração e o ataque de 51%

O modelo Proof-of Work é normalmente motivo de discussão e questionamentos, já que muitos o consideram um esforço desperdiçado e uma indicação de um sistema mal projetado. Alguém poderia questionar: “por que seria necessário tanto esforço para registrar uma transação quando o meu banco de dados faz o mesmo instantaneamente?” Na realidade, essa dificuldade é o elemento-chave para a segurança da Blockchain, pois é o fator que exige um investimento em equipamento, mão de obra e energia que impede fraudes no sistema.
O Bitcoin resolve o Problema dos Generais Bizantinos desde que os mineradores honestos contribuam em mais de 50% do poder computacional na rede. Se um indivíduo produzisse mais do que 50% do poder computacional, nesse caso ele poderia produzir uma cadeia "maior" do que todos os outros nodes juntos. Ou seja, poderia reverter todas as transações passadas e impedir que as transações se completassem, mas não poderia usar o saldo de outras pessoas. Mesmo assim, há quem mostre que, na prática, seria necessário 33,33% para tomar o controle da rede.
O primeiro mergulho no mundo da Web3. Como as criptomoedas, NFTs e metaverso irão mudar
as nossas vidas.
Primeira edição, Novembro de 2022.
Autor: João Kamradt
Colaboração: André Castelo, Henrique Ayello, Matheus Bonifácio e Rafael Lima.
Editora: W3Books
Revisão: Diane Southier
Capa: Polvo.lab
Licença: Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional (CC BY-NC-SA 4.0)
Assuntos: 1. Criptomoedas 2. Tokens e NFTs 3. Blockchain 4. Metaverso 5. Web3
Publicado em: https://viden.ventures/livro