Agora você pode negociar XRP na MODIAX Saiba mais arrow_forward
Bitcoin

Bitcoin Fork: o que é?

outubro 15, 2018

Bitcoin Fork: o que é?

Em um blockchain, um fork é um evento técnico que ocorre quando não há um consenso entre os participantes da rede. Antes de falarmos mais sobre os forks, é preciso explicar um pouco sobre blockchain.

O blockchain e o consenso

De forma simplificada, blockchain é um registro de transações distribuído, no qual cada participante (nó) executa um algoritmo de consenso.

Um consenso é atingido quando há um acordo que beneficia todos os participantes de um grupo. Ele deve ser conseguido de forma colaborativa e inclusiva, com a participação de todos.

Na rede Bitcoin, cada nó tem uma cópia atualizada do registro e, para serem adicionadas, as transações são agrupadas em blocos. O consenso é atingido por meio da prova de trabalho, um complexo cálculo matemático realizado pelos mineradores para que um bloco seja criado. Esse cálculo requer muito esforço computacional e evita o mesmo gasto de um único Bitcoin duas vezes (problema do gasto duplo).

Quando um novo bloco é criado, os nós fazem uma verificação dele. Se há consenso entre os integrantes de que o bloco é válido, os mineradores da rede começam a trabalhar para criar um novo bloco.

O que é um “fork”?

Um fork, também chamado de bifurcação, acontece quando não existe um consenso entre os nós da rede. Essa divergência provoca uma bifurcação na cadeia dos blocos e cada usuário da rede decide, então, qual cadeia continuará seguindo.

Os forks na rede Bitcoin acontecem com bastante regularidade. Ocorrem, por exemplo, sempre que dois mineradores encontram um bloco quase ao mesmo tempo. Nessa situação, surge uma questão: a partir de qual dos dois blocos continuar a cadeia? No exemplo abaixo, A ou B?

Imagem de uma bifurcação na cadeia de blocos: de um lado o bloco A, de outro o bloco B

Quando outros blocos são adicionados à cadeia, essa dúvida é resolvida: a cadeia válida passa a ser a mais longa. O bloco A, da figura, então se torna um bloco “órfão”, abandonado pela rede. A adição de um único bloco não serve para resolver a questão. São necessários entre 2 e 4 blocos para definir uma cadeia como a cadeia válida.

Os forks também podem ser introduzidos voluntariamente na rede, quando desenvolvedores tentam alterar as regras que o software usa para decidir se uma transação é válida ou não. Existem basicamente dois tipos de forks: soft e hard.

Soft Fork

Um soft fork é qualquer alteração que seja compatível com versões anteriores do software e que procura preservar o protocolo original, propondo apenas pequenas mudanças. Esses forks não costumam trazer problemas para a validação dos blocos, por isso toda a rede continua funcionando mesmo se alguns não atualizarem o software.

Para um soft fork ocorrer, é necessário que ao menos 95% da rede aprove a atualização. Os mineradores votam incluindo a informação nos blocos que estão minerando, sinalizando, assim, sua decisão com relação à proposta.

O blockchain do Bitcoin utilizou vários soft forks para fazer atualizações e resolver pequenos problemas ou melhorar as funcionalidades, como o Bitcoin Improvement Proposal 66 (BIP 66), que resolveu questões da validação das assinaturas, e Bitcoin Improvement Proposal 16 (Pays To Script Hash ou P2SH), que alterou a formatação dos endereço públicos na rede Bitcoin.

Hard Fork

Um hard fork é uma atualização de software que introduz uma nova regra na rede que não é compatível com o software antigo.

Os nós que continuarem executando a versão antiga do software interpretarão as novas transações como sendo inválidas. Por isso, se quiserem continuar minerando blocos válidos e recebendo a recompensa em bitcoins, os nós devem atualizar o protocolo e passar a respeitar as novas regras.

Quando parte da comunidade discorda da atualização do software, surge um impasse político. Como a rede funciona por consenso e não é possível obrigar um participante a seguir uma determinada regra, parte da comunidade mantém o software antigo, enquanto outra parte o atualiza. A rede, assim, se divide em duas e as comunidades não conversam mais entre si, já que não há compatibilidade no protocolo.

Para você compreender melhor, um bom exemplo seria a bifurcação da rede quando foi criado o Bitcoin Cash. Muitos desenvolvedores e participantes da rede discordavam do tamanho limite do bloco na rede Bitcoin, 1 MB, e decidiram aumentar para 8 MB. A comunidade se dividiu e a rede que seguiu a atualização passou a ser chamada de Bitcoin Cash para se diferenciar do protocolo original.

Imagem da cadeia de blocos com uma bifurcação, de um lado o Bitcoin de outro o Bitcoin Cash

Outro bom exemplo é o caso o Ethereum. Em 2016 a DAO (Decentralized Autonomous Organization), uma espécie de organização descentralizada baseada no Ethereum, foi hackeada e mais de 3,6 milhões de dólares foram desviados. Após o ocorrido, parte da comunidade quis reverter o hack e parte discordava disso. A rede se dividiu em duas: Ethereum Classic, que não reverteu o hack e acreditava que o código era uma lei, e Ethereum, que reverteu os ethers roubados aos donos originais.

Imagem com símbolo da Ethereum e da Ethereum Classic