Introdução

Quando você for solicitado a atualizar seu aplicativo de banco digital em seu smartphone, provavelmente nem pensará duas vezes. Talvez o seu telefone seja atualizado automaticamente sem você perceber. Afinal, é um processo necessário – se você não instalar a versão mais recente do software, corre o risco de ter o acesso negado aos seus serviços.

Nas criptomoedas de código aberto, as coisas são muito diferentes. Você não precisa ler todas as linhas de código que sustentam o Bitcoin para usá-lo, mas ter a opção de fazê-lo é importante. Veja, não há hierarquia aqui e nenhum banco que possa simplesmente enviar atualizações e mudar as coisas como quiser. Como resultado, a implementação de novos recursos em redes blockchain pode ser um desafio.

Neste artigo, exploraremos como as redes de criptomoedas podem ser atualizadas, apesar da falta de uma autoridade central. Para fazer isso, eles usam dois mecanismos diferentes: hard forks e soft forks. 


Quem toma as decisões em uma rede blockchain?

Para entender como funcionam os forks, é importante primeiro entender os participantes envolvidos no processo de tomada de decisão (ou governança) da rede.

No Bitcoin, você poderia fazer uma distinção ampla entre três subconjuntos de participantes – desenvolvedores, mineradores e usuários de nós completos. Estas são as partes que realmente contribuem para a rede. Os nós leves (ou seja, as carteiras dos seus telefones, laptops, etc.) são amplamente usados, mas não são realmente “participantes” no que diz respeito à rede.


Desenvolvedores

Os desenvolvedores são responsáveis ​​por criar e atualizar o código. Para uma moeda típica, qualquer pessoa pode contribuir para este processo. O código está disponível publicamente, para que eles possam enviar alterações para outros desenvolvedores revisarem. 


Mineiros

Os mineiros são aqueles que protegem a rede. Eles executam o código da criptomoeda e dedicam recursos para adicionar novos blocos ao blockchain. Na rede Bitcoin, por exemplo, fazem-no através de Prova de Trabalho. Eles são recompensados ​​por seus esforços na forma de uma recompensa em bloco.


Usuários de nó completo

Os nós completos são a espinha dorsal da rede de criptomoedas. Eles validam, enviam e recebem blocos e transações e mantêm uma cópia do blockchain.


Freqüentemente, você encontrará sobreposições nessas categorias. Você poderia, por exemplo, ser um desenvolvedor e um usuário full node, ou um minerador e um usuário full node. Você pode ser os três ou nenhum. Na verdade, muitos dos que consideramos usuários de criptomoedas não assumem nenhuma dessas funções. Em vez disso, eles optam por usar nós leves ou serviços centralizados.

Observando as descrições acima, você pode apresentar argumentos fortes para que desenvolvedores e mineradores tomem as decisões para a rede. Os desenvolvedores criam o código – sem eles, você não teria software para executar e ninguém para corrigir bugs ou adicionar novos recursos. Os mineiros protegem a rede – sem uma concorrência saudável na mineração, a cadeia pode ser sequestrada ou pode parar.

Se estas duas categorias tentassem forçar o resto da rede a seguir a sua vontade, no entanto, não terminaria muito bem. Para muitos, o poder real está concentrado em nós completos. Isso é em grande parte uma função da rede ser opcional, o que significa que os usuários podem escolher qual software estão executando. 

Os desenvolvedores não estão invadindo sua casa e coagindo você a baixar os binários do Bitcoin Core sob a mira de uma arma. Se os mineradores adotarem uma atitude “do meu jeito ou da rodovia” para forçar uma mudança indesejada nos usuários, bem, os usuários simplesmente pegarão a rodovia. 

Estas partes não são senhores todo-poderosos – são prestadores de serviços. Se as pessoas decidirem não usar a rede, a moeda perderá valor. A perda de valor impacta diretamente os mineradores (suas recompensas valem menos quando denominadas em dólares). Quanto aos desenvolvedores, eles podem simplesmente ser ignorados pelos usuários.

Veja, não é como se o software fosse proprietário. Você pode fazer as edições que desejar e, se outras pessoas executarem o software modificado, todos vocês poderão se comunicar. Nesse caso, você bifurca o software e cria uma nova rede no processo.


O que é um garfo?

Uma bifurcação de software ocorre em um ponto onde o software é copiado e modificado. O projeto original continua vivo, mas agora está separado do novo, que toma um rumo diferente. Suponha que a equipe do seu site de conteúdo de criptomoeda favorito tenha um grande desacordo sobre como proceder. Uma parte da equipe pode replicar o site em um domínio diferente. Mas daqui para frente, eles postariam tipos de conteúdo diferentes do original.

Os projetos constroem um terreno comum e compartilham uma história. Assim como uma única estrada que mais tarde se divide em duas, há agora uma divergência permanente nos seus caminhos.

Observe que esse tipo de coisa acontece muito em projetos de código aberto e já acontecia há muito tempo antes do surgimento do Bitcoin ou do Ethereum. No entanto, a distinção entre hard forks e soft forks é quase exclusiva do espaço blockchain. Vamos discutir isso um pouco mais.


➠ Quer começar a usar criptomoedas? Compre Bitcoin na Binance!


Garfos rígidos vs. garfos macios

Apesar de terem nomes semelhantes e servirem ao mesmo propósito, hard forks e soft forks diferem significativamente. Vamos dar uma olhada em cada um.


O que é um garfo rígido?

Hard forks são atualizações de software incompatíveis com versões anteriores. Normalmente, isso ocorre quando os nós adicionam novas regras de uma forma que entra em conflito com as regras dos nós antigos. Novos nós só podem se comunicar com outros que operam a nova versão. Como resultado, o blockchain se divide, criando duas redes separadas: uma com as regras antigas e outra com as novas regras.

Nodes turn blue when they update. The older yellow nodes reject them, while blue ones connect to each other.

Os nós ficam azuis quando são atualizados. Os nós amarelos mais antigos os rejeitam, enquanto os azuis se conectam entre si.


Portanto, existem agora duas redes funcionando em paralelo. Ambos continuarão a propagar blocos e transações, mas não trabalharão mais no mesmo blockchain. Todos os nós tinham um blockchain idêntico até o ponto da bifurcação (e esse histórico permanece), mas eles terão blocos e transações diferentes depois.

blockchain forking at block 600,000.


Como existe esse histórico compartilhado, você acabará com moedas em ambas as redes se as mantivesse antes do fork. Suponha que você tivesse 5 BTC quando ocorreu uma bifurcação no Bloco 600.000. Você poderia gastar esses 5 BTC na antiga cadeia do Bloco 600.001, mas eles não foram gastos no Bloco 600.001 da nova blockchain. Supondo que a criptografia não tenha mudado, suas chaves privadas ainda contêm cinco moedas na rede bifurcada. 

Um exemplo de hard fork foi o fork de 2017 que viu o Bitcoin fragmentado em duas cadeias separadas – a original, Bitcoin (BTC), e uma nova, Bitcoin Cash (BCH). A bifurcação ocorreu depois de muita discussão sobre a melhor abordagem para dimensionar. Os proponentes do Bitcoin Cash queriam aumentar o tamanho do bloco, enquanto os proponentes do Bitcoin se opuseram à mudança.

Um aumento no tamanho do bloco requer modificação das regras. Isso foi antes do soft fork do SegWit (mais sobre isso em breve), então os nós aceitariam apenas blocos menores que 1 MB. Se você criasse um bloco de 2 MB que fosse válido, outros nós ainda o rejeitariam.

Somente nós que alteraram seu software para permitir blocos com tamanho superior a 1 MB poderiam aceitar esses blocos. É claro que isso os tornaria incompatíveis com a versão anterior, de modo que apenas nós com as mesmas modificações de protocolo poderiam se comunicar.


O que é um garfo macio?

Um soft fork é uma atualização compatível com versões anteriores, o que significa que os nós atualizados ainda podem se comunicar com os não atualizados. O que você normalmente vê em um soft fork é a adição de uma nova regra que não entra em conflito com as regras mais antigas.

Por exemplo, uma diminuição no tamanho do bloco pode ser implementada por meio de soft-fork. Vamos mais uma vez recorrer ao Bitcoin para ilustrar este ponto: embora haja um limite para o tamanho de um bloco, não há um limite para o quão pequeno ele pode ser. Se você quiser aceitar apenas blocos abaixo de um determinado tamanho, basta rejeitar os maiores.

No entanto, isso não desconecta você automaticamente da rede. Você ainda se comunica com nós que não estão implementando essas regras, mas filtra algumas das informações que eles lhe passam.

Um bom exemplo da vida real de um soft fork foi o já mencionado fork Segregated Witness (SegWit), que ocorreu logo após a divisão Bitcoin/Bitcoin Cash. O SegWit foi uma atualização que mudou o formato dos blocos e das transações, mas foi elaborado de maneira inteligente. Os nós antigos ainda podiam validar blocos e transações (a formatação não violava as regras), mas eles simplesmente não os entenderiam. Alguns campos só são legíveis quando os nós mudam para o software mais recente, o que lhes permite analisar dados adicionais.

Even two years after SegWit activation, not all nodes have upgraded. There are advantages to doing so, but there’s no real urgency since there’s no network-breaking change.


Mesmo dois anos após a ativação do SegWit, nem todos os nós foram atualizados. Há vantagens em fazer isso, mas não há urgência real, uma vez que não há mudanças que prejudiquem a rede.


Garfos rígidos vs. garfos macios - o que é melhor?

Fundamentalmente, ambos os tipos de garfos acima servem a propósitos diferentes. Hard forks controversos podem dividir uma comunidade, mas os planejados permitem a liberdade de modificar o software com todos de acordo.

Os garfos macios são uma opção mais suave. De modo geral, você está mais limitado no que pode fazer, pois suas novas alterações não podem entrar em conflito com as regras antigas. Dito isso, se sua atualização puder ser elaborada de forma que permaneça compatível, você não precisa se preocupar em fragmentar a rede.


Pensamentos finais

Hard forks e soft forks são cruciais para o sucesso a longo prazo das redes blockchain. Permitem-nos fazer alterações e atualizações em sistemas descentralizados, apesar da falta de uma autoridade central.

Os forks possibilitam que blockchains e criptomoedas integrem novos recursos à medida que são desenvolvidos. Sem estes mecanismos, precisaríamos de um sistema centralizado com controlo de cima para baixo. Caso contrário, ficaríamos presos exatamente às mesmas regras durante a vida útil do protocolo.