"Blockchain": Imutabilidade

Um tema recorrente quando se fala sobre a tecnologia blockchain é que os dados armazenados em sua estrutura seriam imunes a alterações, intencionais ou não. Essa afirmação, porém, costuma ser recebida com uma mistura de entusiasmo e incredulidade. Como essa capacidade poderia ser conseguida com mídias eletrônicas e eletromagnéticas, projetadas precisamente para poderem ser alteradas?

Um olhar breve

A imutabilidade do blockchain se baseia na aplicação de dois conceitos fundamentais: descentralização e consenso. A forma como esses conceitos são implementados varia bastante entre as plataformas, mas em linhas muito gerais e simplificadas podemos defini-los como:

  • Descentralização: Ausência de autoridades centrais. Todas as plataformas blockchain têm a capacidade de manter várias instâncias (cópias) das estruturas, dados e regras de consistência em vários equipamentos distintos; cada uma dessas máquinas é capaz de manter seus dados de forma independente.
  • Consenso: Qualquer acréscimo de dados precisa ser replicado em todas as instâncias de um blockchain de forma idêntica (coerência). Como muitas propostas de alteração podem chegar simultaneamente, são necessárias regras de consenso que permitam às instâncias descentralizadas definir quais devem ser aplicadas, em que ordem e com o mesmo resultado para todas as cópias.

As plataformas valem-se das várias instâncias descentralizadas para manter várias cópias válidas e idênticas dos dados do blockchain. Cada instância mantém uma checagem frequente sobre os seus dados e aqueles recebidos de outras instâncias; qualquer discrepância encontrada é apontada e os mecanismos de consenso permitem que a situação correta seja decidida e a cópia defeituosa seja recuperada. Essa atuação coordenada e redundante protege os dados contra alterações indevidas e é fundamental para a reputação de confiabilidade do blockchain.

Quanto mais instâncias existirem, maior o poder de processamento verificando a validade dos dados, maior o número de locais alternativos em que os dados podem ser buscados e mais clara e facilmente pode-se detectar tentativas de corrupção dos dados e até corrigi-los. Uma tentativa maliciosa de alterar informações externamente precisaria afetar todos (ou pelo menos uma grande parte) das instâncias do blockchain ao mesmo tempo para ter alguma chance de sucesso.

As plataformas valem-se das várias instâncias descentralizadas para manter várias cópias válidas e idênticas dos dados do blockchain.

Condições para imutabilidade

Assim, a imutabilidade do blockchain não é uma "propriedade intrínseca", mas sim uma condição mantida ativamente pela rede. Uma alteração é possível, mas precisaria ser aceita por uma parte significativa das instâncias. E as plataformas acrescentam regras de validação desenhadas para tornar a construção de um blockchain substituto válido uma tarefa muito custosa.

Redes particulares costumam ter acesso restrito, menos atores e um desenho específico, enquanto as redes públicas permitem novas instâncias conectadas "por conta própria" e costumam ter um poder de processamento maior e mais distribuído. São filosofias distintas com o mesmo objetivo de montar uma rede onde seja muito difícil que um grupo de atores mobilize poder de processamento suficiente para forçar alterações consistentes.

Mecanismos de validação

Um método de checagem de consistência muito implementado é o "valor de ligação": cada novo bloco precisa conter um valor que depende dos dados armazenados no bloco anterior. Alterar um bloco antigo exige calcular o valor de ligação para o bloco seguinte, o que exige recalcular esse valor para o próximo bloco também, e assim sucessivamente até alcançar o bloco mais recente da cadeia – ou seja, exige recalcular e alterar todos os blocos desde o ponto que se quer alterar.

Outra técnica é calcular e armazenar um código verificador numérico com várias dezenas de algarismos para cada bloco. Esse cálculo é projetado para ser tão trabalhoso que é chamado “proof-of-work” (prova-de-trabalho). Na rede Bitcoin, por exemplo, ele é ajustado para demorar cerca de 10 minutos e resolvê-lo primeiro é um dos objetivos principais da atividade de "mineração", muitas vezes recompensada financeiramente para que haja mais interesses em reforçar a segurança do blockchain do que tentar burlá-la. Alterações indevidas podem ser identificadas conferindo esse código.

Combinando as duas técnicas, uma alteração no blockchain não só se torna trabalhosa, mas também proporcionalmente mais extensa e custosa quanto mais antigos os blocos que se deseja alterar.

Também é comum gravar assinaturas digitais que precisam ser compatíveis com os dados registrados e com autorizações exigidas. Alterar dados exigiria obter novas assinaturas dos envolvidos, expondo a tentativa.

Alterável por definição

Existe uma recomendação para que um bloco na rede Bitcoin só seja considerado imutável se já houver pelo menos 6 outros blocos posteriores a ele gravados. Antes disso, o bloco pode vir a ser substituído por outro pelas próprias regras de consenso da plataforma, se for apresentada uma sequência de blocos mais adequada (no caso, mais longa). Isso vale para qualquer bloco, por mais antigo que seja, mas a partir de 6 blocos de profundidade (que demoram 1 hora para serem "minerados") considera-se que não há mais conflitos de consenso restantes.

Outras plataformas funcionam sobre o mesmo princípio, como o Ethereum, onde esse número de espera é de 12 blocos (cuja criação demora em média 3 minutos). Teoricamente, esses blockchains poderiam ser alterados por definição, mas na prática apenas com os blocos recentemente acrescentados isso seria viável.

Mas mesmo a rede Bitcoin já precisou quebrar "oficialmente" sua imutabilidade em momentos de necessidade. Em 2010, um bug no software básico da rede criou em uma única operação mais de 92 milhões de bitcoins, quando apenas 50 seria o esperado. Para corrigir isso, a maioria dos atores da rede concordou em alterar o bloco do momento da falha de forma idêntica (e eliminar todos os posteriores). Essa correção foi um momento em que a imutabilidade dos dados foi rompida.

Para ser justo, essa quebra do paradigma corrigiu um ataque malicioso grave (que não tinha relação com imutabilidade de dados), foi feita quando a rede Bitcoin possuía menos poder de processamento e contou com a concordância da maioria dos atores. Foi feita rapidamente (algumas horas), havia poucos blocos posteriores ao momento do erro, e o próprio mecanismo de consenso disseminou os ajustes depois da adoção das versões corrigidas.

Recentemente, diversos ataques têm sido reportados em redes como Electroneum, Bitcoin Gold e Litecoin Cash, entre outras. São redes públicas menores, possibilitando que se consiga aplicar um poder de processamento superior para atacá-las. Ainda assim os ataques foram feitos em blocos recentes; afetar blocos antigos teria um custo muito maior para os atacantes.

Um bloco na rede Bitcoin só deve ser considerado imutável se já houver pelo menos 6 outros blocos posteriores a ele gravados.

O que procurar em uma aplicação prática

Redes blockchain privadas tendem a ter menos participantes e por isso costumam usar processos de assinatura eletrônica e autorização para evitar que um grupo consiga forçar alterações indevidas. Um participante terá mais garantias sobre a imutabilidade se mantiver uma instância descentralizada própria na rede.

redes públicas baseiam-se na grande quantidade de participantes para manter a imutabilidade dos dados. Assim, mesmo quem não tem uma instância na rede poderá confiar nos dados registrados, mas isso também tem impacto negativo no tempo necessário para registrar uma informação de forma inalterável.

Como visto, as condições em que os dados escritos num blockchain podem ser considerados inalteráveis varia conforme a implementação utilizada por cada plataforma, com a quantidade de participantes e o poder de processamento da rede. É importante avaliar se as condições estabelecidas satisfazem a necessidade de cada projeto.

Autor: Márcio Marcelo Pelícia - Nov/2018

Outros artigos:
"Blockchain": uma palavra em evolução. O que esperar de blockchain?