Guia Sobre Hard Forks e Soft Forks
P√°gina Inicial
Artigos
Guia Sobre Hard Forks e Soft Forks

Guia Sobre Hard Forks e Soft Forks

Intermedi√°rio
Publicado em Nov 29, 2018Atualizado em Feb 9, 2023
8m


Conte√ļdo


Introdução

Ao ser notificado de uma atualiza√ß√£o em seu aplicativo de banco digital no smartphone, voc√™ provavelmente n√£o pensa duas vezes para aceitar. Talvez seu celular atualize 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 n√£o conseguir utilizar seus servi√ßos, quando precisar.

Entretanto, quando se trata de criptomoedas open-source (de c√≥digo aberto), √© diferente. Voc√™ n√£o precisa ler todas as linhas de c√≥digo do sistema Bitcoin para us√°-lo, mas ter a op√ß√£o de fazer isso √© importante. N√£o existe hierarquia e nenhum banco que pode simplesmente enviar atualiza√ß√Ķes e fazer altera√ß√Ķes como bem entender. Sendo assim, implementar novos recursos em redes blockchain pode ser um desafio.
Neste artigo, iremos discutir sobre como as redes de criptomoedas podem ser atualizadas, apesar de não existir uma autoridade central. Para isso, são usados dois mecanismos diferentes: hard forks e soft forks. 


Quem toma as decis√Ķes em uma rede blockchain?

Para entender como forks funcionam, é importante primeiro entender os participantes envolvidos no processo de tomada de decisão (governança) da rede.
No sistema Bitcoin, podemos distinguir tr√™s subconjuntos de participantes ‚Äď desenvolvedores, mineradores e usu√°rios de full node. Estas s√£o as partes que, de fato, contribuem para a rede. Light nodes (como aplicativos de carteiras em celulares, laptops, etc.) s√£o muito utilizados, mas eles n√£o s√£o realmente ‚Äúparticipantes‚ÄĚ no que diz respeito ao funcionamento da rede.


Desenvolvedores

Os desenvolvedores s√£o respons√°veis por criar e atualizar o c√≥digo. Considerando uma moeda t√≠pica, qualquer pessoa pode contribuir para o processo. O c√≥digo est√° dispon√≠vel publicamente, ou seja, √© poss√≠vel enviar altera√ß√Ķes para que outros desenvolvedores possam revisar.¬†


Mineradores

Os mineradores são responsáveis por proteger a rede. Eles executam o código da criptomoeda e dedicam recursos para adicionar novos blocos à blockchain. Na rede Bitcoin, por exemplo, eles fazem isso por meio do Proof of Work. Os mineradores são recompensados por seus serviços através da recompensa de bloco.


Usu√°rios Full Node

Full nodes s√£o o n√ļcleo da rede de criptomoedas. Eles validam, enviam e recebem blocos e transa√ß√Ķes. Al√©m disso, os full nodes tamb√©m mant√™m uma c√≥pia da blockchain.


√Č comum encontrar sobreposi√ß√Ķes nessas categorias. Voc√™ poderia, por exemplo, ser um desenvolvedor e um usu√°rio full node ao mesmo tempo. Ou um minerador e um usu√°rio full node. √Č poss√≠vel atuar nas tr√™s categorias ou em nenhuma. Na verdade, muitos dos usu√°rios de criptomoedas n√£o desempenham nenhuma dessas fun√ß√Ķes. Em vez disso, eles optam por usar light nodes ou servi√ßos centralizados.

Observando as descri√ß√Ķes acima, podemos estar convencidos de que s√£o desenvolvedores e mineradores que tomam as decis√Ķes relacionadas √† rede. Os desenvolvedores criam o c√≥digo ‚Äď sem eles, n√£o existiria nenhum software em execu√ß√£o e ningu√©m para consertar bugs ou adicionar novos recursos. Os mineradores protegem a rede ‚Äď sem uma competi√ß√£o saud√°vel de minera√ß√£o, a cadeia pode ser roubada ou parar por completo.
No entanto, se essas duas categorias tentassem forçar o resto da rede a seguir suas vontades, não daria muito certo. Muitos consideram, que o poder sobre a rede está, na realidade, concentrado nos full nodes. Provavelmente devido a rede ser opt-in, ou seja, os usuários podem escolher qual software desejam executar. 
Os desenvolvedores não invadem sua casa armados e forçam você a fazer o download dos binários do Bitcoin Core. Caso os mineradores adotem uma postura autoritária forçando mudanças indesejadas dos usuários, os usuários simplesmente sairão da rede. 
Esses participantes n√£o s√£o soberanos ‚Äď eles s√£o provedores de servi√ßos. Se as pessoas decidirem n√£o usar a rede, a moeda perder√° seu valor. A perda de valor afeta diretamente os mineradores (suas recompensas valem menos, quando denominadas em d√≥lares). Quanto aos desenvolvedores, eles podem ser simplesmente ignorados pelos usu√°rios.
Como podemos ver, n√£o √© como se o software fosse propriet√°rio da rede. Voc√™ pode fazer as altera√ß√Ķes que quiser e, se as outras pessoas executarem seu software modificado, todos poder√£o manter a conex√£o. Nesse caso, voc√™ teria feito um¬†fork no software e criado uma nova rede no processo.


O que é um fork?

Quando um software passa por um fork, ele √© copiado e modificado. O projeto original continua existindo, mas de forma separada do novo, que assume uma dire√ß√£o diferente. Suponha que a equipe do seu site favorito, em termos de conte√ļdo de criptomoedas, tenha um grande desacordo. Uma parte da equipe pode replicar o site em um dom√≠nio diferente. Entretanto, ap√≥s a separa√ß√£o, eles postariam conte√ļdo diferentes do site original.

Os projetos têm uma base em comum e compartilham parte da sua história. Da mesma forma que uma estrada que se divide em duas, agora existe uma divergência permanente nos caminhos de cada projeto.

Observe que esse tipo de coisa acontece muito em projetos open-source (de código aberto) e já é algo que acontece muito antes do surgimento do Bitcoin ou da Ethereum. No entanto, a distinção entre hard forks e soft forks é quase exclusiva de ambientes blockchain. Vamos discutir um pouco mais sobre isso.



Hard forks vs. soft forks

Apesar de terem nomes semelhantes e essencialmente a mesma finalidade, os hard forks e soft forks possuem diferenças significativas. Vamos avaliar cada um.


O que é um hard fork?

Hard forks s√£o¬†atualiza√ß√Ķes de software que s√£o incompat√≠veis¬†com vers√Ķes anteriores. Normalmente, ocorre quando nodes (n√≥s) adicionam novas regras que apresentam conflito com as regras de nodes mais antigos. Os novos nodes s√£o capazes de se comunicar somente com outros que operam a nova vers√£o. Como resultado, a blockchain se divide, criando duas redes distintas: uma com as regras antigas e outra com as novas.


Os nodes ficam azuis quando s√£o atualizados. Os nodes amarelos (mais antigos), os rejeitam, enquanto os azuis se conectam entre si.


Portanto, agora existem duas redes funcionando em paralelo. Ambas continuar√£o propagando blocos e transa√ß√Ķes, mas n√£o est√£o mais trabalhando na mesma blockchain. Todos os nodes compartilharam uma mesma blockchain at√© o ponto de bifurca√ß√£o (esse hist√≥rico permanece inalterado), mas depois disso, eles ter√£o blocos e transa√ß√Ķes diferentes.



Considerando esse histórico compartilhado, caso você possua moedas desde antes do fork, terá moedas em ambas as redes. Suponha que você tem 5 BTC quando ocorre um fork no bloco 600.000. Você poderia gastar esses 5 BTC na cadeia antiga, no Bloco 600.001, mas eles não serão gastos no Bloco 600.001 da nova blockchain. Assumindo que não houve alteração na criptografia, suas chaves privadas ainda mantêm cinco moedas na rede que sofreu o fork (bifurcação). 
Um exemplo de hard fork foi o de 2017 que dividiu a cadeia Bitcoin em duas ‚Äď a original, Bitcoin (BTC), e uma nova, Bitcoin Cash (BCH). A bifurca√ß√£o ocorreu depois de muita discuss√£o sobre a melhor abordagem para a escalabilidade. Os proponentes do Bitcoin Cash queriam aumentar o tamanho de bloco mas membros da rede Bitcoin original se opuseram √† mudan√ßa.
Um aumento no tamanho de bloco requer modificação das regras. Isso foi antes do soft fork SegWit (discutiremos isso em breve), então os nodes só aceitariam blocos menores que 1 MB. Se você criasse um bloco de 2 MB que seria válido, outros nodes o rejeitariam devido ao tamanho.

Somente os nodes que fizeram a altera√ß√£o do software para permitir blocos com tamanho superior a 1 MB poderiam aceitar esses blocos. Claro, isso os tornaria incompat√≠veis com a vers√£o anterior, portanto, s√≥ poderiam se comunicar, nodes com as mesmas modifica√ß√Ķes no protocolo.


O que é um soft fork

O soft fork √© uma atualiza√ß√£o que √©¬†compat√≠vel com vers√Ķes anteriores, ou seja, nodes atualizados ainda podem se comunicar com os que ainda n√£o fizeram a atualiza√ß√£o. No soft fork, normalmente ocorre a adi√ß√£o de uma nova regra que n√£o entra em conflito com as regras anteriores.
Por exemplo, uma redução do tamanho de bloco pode ser implementada através de um soft fork. Usando novamente o Bitcoin como exemplo: embora exista um limite para o tamanho máximo de um bloco, não há limite para o tamanho mínimo. Caso você queira aceitar apenas blocos menores do que um tamanho específico, basta rejeitar os maiores.

No entanto, isso n√£o desconecta voc√™ da rede automaticamente. Voc√™ ainda se comunica com nodes que n√£o implementaram as novas regras, mas algumas das informa√ß√Ķes que eles transmitem a voc√™ s√£o filtradas.

Um bom exemplo real de soft fork foi o j√° mencionado Segregated Witness (SegWit), que ocorreu logo ap√≥s a divis√£o Bitcoin/Bitcoin Cash. O SegWit foi uma atualiza√ß√£o que mudou o formato de blocos e transa√ß√Ķes, mas foi minuciosamente elaborado. Os nodes antigos ainda podiam validar blocos e transa√ß√Ķes (a atualiza√ß√£o n√£o violava as regras), mas eles simplesmente n√£o as entendiam completamente. Alguns campos s√≥ podiam ser lidos quando os nodes mudavam para o software mais recente, o que permitia a an√°lise de dados adicionais.



Mesmo dois anos após a ativação do SegWit, nem todos os nodes foram atualizados. A atualização completa apresenta algumas vantagens, mas não há urgência, já que não se tratam de mudanças que prejudicam o bom funcionamento da rede.


Hard forks vs. soft forks¬†‚Äď qual √© melhor?

Fundamentalmente, os dois tipos de forks têm finalidades diferentes. Hard forks com muita controvérsia podem dividir uma comunidade por inteiro, mas os bem planejados proporcionam liberdade para modificar o software quando todos estão de acordo.

O soft fork √© uma op√ß√£o menos radical. De modo geral, as possibilidades s√£o mais limitadas, pois as novas altera√ß√Ķes n√£o podem entrar em conflito com as regras j√° existentes. Dito isso, se sua atualiza√ß√£o pode ser elaborada de forma que permane√ßa compat√≠vel, n√£o existe a preocupa√ß√£o de fragmenta√ß√£o da rede.


Considera√ß√Ķes finais

Hard forks e soft forks s√£o cruciais para o sucesso de longo prazo das redes blockchain. Eles possibilitam mudan√ßas e atualiza√ß√Ķes em sistemas descentralizados, mesmo com a aus√™ncia de uma autoridade central.

Forks permitem que blockchains e criptomoedas integrem novas funcionalidades à medida que se desenvolvem. Sem esses mecanismos, precisaríamos de um sistema centralizado com controle no sentido de cima para baixo. Caso contrário, estaríamos presos a exatamente às mesmas regras, durante todo o tempo de existência do protocolo.