Porque atualizar arquiteturas descentralizadas é um desafio?
O longo caminho para obter consenso dos participantes da rede sobre as atualizações propostas
EM RESUMO: Formas de implementar novas alterações no código de um projeto blockchain. Hard fork vs soft fork. Importantes hard forks. Porque em Blockchains como Bitcoin e Ethereum, para que mudanças sejam implementadas no protocolo deve-se percorrer um novo caminho?
Antes de mergulharmos no assunto, vejamos os processos de implementação de alterações em um protocolo blockchain.
Formas de implementar novas alterações no código de um projeto blockchain
À medida que os projetos de blockchain evoluem, os desenvolvedores atualizam regularmente seus protocolos subjacentes para dar suporte a novas atualizações de software ou corrigir funcionalidades desatualizadas.
Dependendo do tipo de upgrade que está sendo implementado, ele pode ou não ser compatível com as versões anteriores da rede original.
Em alguns casos, as novas atualizações de software não afetam diretamente a forma como o protocolo opera e os desenvolvedores podem implementá-las sem causar interrupções na rede. Essas atualizações são conhecidas como soft fork [bifurcação suave].
Em outros casos, no entanto, as atualizações são tão complexas e podem introduzir recursos totalmente novos que não são compatíveis com as versões anteriores do código mais antigo. Aqui, a ativação dessas alterações específicas exige mais esforço e, às vezes, pode ser muito prejudicial para a rede. Essas alterações são conhecidas como hard fork [bifurcação radical].
Logo, hard fork e soft fork for são maneiras de implementar novas alterações no código de um projeto blockchain. Vejamos mais a fundo um e outro caso.
Hard fork vs. Soft fork
Um soft fork ocorre quando os desenvolvedores fazem uma atualização compatível com versões anteriores de um protocolo blockchain.
Depois do soft fork, os nodes que talvez não tenham feito a atualização para a versão mais recente do protocolo ainda podem operar na rede blockchain sem interrupções. As transações e os blocos em conformidade com as novas regras são válidos e compatíveis com os blocos que foram confirmados antes do soft fork, bem como com os novos blocos criados após o soft fork.
Soft forks são normalmente usados para implementar pequenas alterações, como correções de bugs ou otimizações.
Isso ocorre porque os soft forks podem ser executados sem causar uma divisão completa da rede.
Hard forks resultam em alterações significativas e irreversíveis
Um hard fork é uma alteração não compatível com as versões anteriores em um protocolo blockchain.
Assim, hard forks resultam em alterações significativas e irreversíveis no protocolo de blockchain, que fazem com que a nova versão do blockchain não esteja mais em sincronia com a versão anterior.
Os desenvolvedores ativam esse tipo de bifurcação quando uma grande atualização de rede introduz novas regras blockchain, incompatíveis com a versão anterior do protocolo.
Os hard forks resultam na divisão da rede em duas blockchains separadas, uma seguindo a versão antiga do protocolo e a outra aderindo à nova versão.
Cada ramificação resultante de um hard fork opera de forma independente. Isso significa que, após o fork [bifurcação], os nodes da rede aceitam transações como válidas em uma ramificação da bifurcação, mas não mantêm a outra bifurcação resultante da divisão.
Hard forks geralmente ocorrem quando há necessidade de fazer alterações substanciais na rede, como a introdução de novos recursos, o aprimoramento da segurança ou a resolução de vulnerabilidades. Os nodes da rede e os desenvolvedores devem atualizar seu software para a nova versão do protocolo a fim de continuar participando da rede.
Hard forks importantes
Ethereum vs Ethereum Classic
Em 2016, a rede Ethereum passou por um hard fork para reverter o famoso the DAO hack.
No entanto, uma parte da comunidade discordou dessa abordagem. Em vez disso, eles continuaram a apoiar o blockchain original, o que levou à criação do Ethereum Classic ($ETC).
Confira na imagem abaixo a comparação Ethereum vs. Ethereum Classic para obter mais detalhes sobre esse hard fork e as diferenças entre essas redes de blocos.
Bitcoin e Bitcoin Cash
Em 2017, ocorreu um hard fork contencioso na rede Bitcoin, levando à criação do Bitcoin Cash.
As discordâncias sobre o limite de tamanho de bloco levaram à divisão.
Os chamados "big blockers" queriam aumentar o tamanho do bloco para melhorar a escalabilidade e a velocidade das transações.
Já outros membros da comunidade, ligados ao Bitcoin Core e chamados "small blockers”, achavam que essas melhorias seriam feitas às custas da descentralização e da segurança.
Anos depois, esse período de divisão na comunidade Bitcoin ficou conhecido como “Blocksize war" [a guerra do tamanho dos blocos].
Confira na imagem abaixo o diagrama do hard fork na blockchain Bitcoin que levou ao surgimento da blockchain Bitcoin Cash.
Entender os diferentes tipos de forks de blockchain pode ser uma etapa importante para compreender como arquiteturas blockchain são atualizadas.
Atualização de arquiteturas descentralizadas
Um longo caminho a percorrer
Blockchains possuem regras e essas regras, em Blockchains Públicos, estão definidas no algoritmo de consenso. Alterar tais regras exige que a maioria dos participantes da rede concordem com as modificações propostas.
Em Blockchains como Bitcoin e Ethereum, por exemplo, para que mudanças sejam implementadas deve-se percorrer um longo caminho:
A pessoa apresenta uma ideia, conversa com outras pessoas sobre ela e, depois escreve uma proposta formal (por exemplo, um BIP, Proposta de Melhoria do Bitcoin).
A proposta é amplamente compartilhada nas listas de discussão de desenvolvedores e fóruns da comunidade, onde muitas equipes, desenvolvedores e entusiastas avaliam seu design.
Se a proposta é vista majoritariamente como uma boa ideia e pode ser implementada por ser compatível com versões anteriores, a comunidade de desenvolvedores começa a trabalhar na proposta (geralmente com planos para implementá-la junto com uma série de outras atualizações semelhantes).
Atualizações compatíveis com versões anteriores podem ser implementadas a conta gotas (como um “soft fork”). Mudanças maiores que podem resultar em um “hard fork” são vistas como último recurso.
Anunciada determinada data para o update (atualização), este deve possibilitar a todos tempo razoável para implementação e migração para a versão mais recente do software, momento no qual todos os novos recursos entram em ação.
No Bitcoin, os hard forks são deixados como último recurso (o SegWit foi finalmente adotado depois que Pieter Wuille descobriu como implementá-lo como um soft fork).