Notícias

O que é fork? Qual a diferença entre Softfork e Hardfork?

Recentemente surgiu um importante debate já discutido outras vezes na comunidade bitcoin: o embate sobre os forks.

Bom, mas o que são “forks”?

Resposta: são bifurcações. Bifurcações são a divisão ou separação de alguma coisa em dois ramos ou braços; é o ponto em que se dá uma divisão ou uma separação.

Um exemplo de bifurcação em uma estrada.

Então dentro do contexto do Bitcoin, um fork é uma bifurcação da rede blockchain. É uma divisão. Para entendermos o que significa uma bifurcação em uma cadeia de blocos, vamos recapitular o conceito de como a cadeia de blocos é estruturada.

🚀 Buscando a próxima moeda 100x?
Confira nossas sugestões de Pre-Sales para investir agora

Primeiro vamos entender quais são os principais agentes responsáveis pelo funcionamento e manutenção do blockchain. São eles:

1— Os usuários — São os indivíduos responsáveis por transacionar a criptomoeda, por meio dos mineradores.

2— Os mineradores — São os computadores ou ASIC’s responsáveis por validar as transações dos usuários e inseri-las em um bloco, para depois, mandar esse bloco para um nodo (node ou nó) validar.

3— Os nodos — São os computadores responsáveis por escanear e armazenar os novos blocos, anexando-os na Blockchain, que é baixada de forma descentralizada e tem constante atualização.

Um nodo só aceita um novo bloco se todas as transações que estão dentro dele são válidas e não há gasto duplo? — ?portanto preservando a principal propriedade monetária do Bitcoin, que é ser um dado não replicável.

Os blocos tem no máximo 1 MB de transações.

A blockchain atualmente tem mais de 107 GB de blocos com transações.

A blockchain, está constantemente sendo baixada pelos nodos, e os nodos por sua vez estão espalhados pelo mundo de uma forma totalmente descentralizada como na imagem a seguir:

O resultado disso, é que as blockchains que estão sendo armazenadas nos nodos, não são constantemente iguais. Um nodo pode ter determinadas informações que outros não tem.

Para resolver isso, cada novo nodo da rede, sempre procura baixar a blockchain que tem a maior quantidade de blocos anexados à cadeia.

A blockchain mais completa é também conhecida como a “corrente de blocos mais longa”, ou a “corrente com a maior dificuldade de trabalho acumulada”.

Na próxima imagem, em azul, há uma representação de uma blockchain com a maior dificuldade de trabalho disponível.

Toda a área marcada em azul representa uma Blockchain com a maior prova de trabalho. Esta blockchain fica armazenada dentro de um nodo.Nesse caso, toda a rede de novos nodos que estão baixando a blockchain e tentando inserir um bloco nela, convergem para um nodo e baixam a blockchain dele, que possui a cadeia de blocos que tem a maior prova de trabalho.

Esses nodos que contém blocos novos, são como candidatos competindo para formarem uma nova blockchain maior e atualizada. Quando conseguem achar a maior blockchain em outro nodo, ela é baixada e acrescentam seus blocos nela, e podem propagar uma nova blockchain para outros nodos que querem fazer o mesmo.

Porém, nesse processo, pode haver um conflito bem raro, chamado de fork.

Toda a vez que um fork ocorre, quer dizer que vão haver dois nodos distintos querendo adicionar o seus blocos validados a uma mesma blockchain.

Assim que o nodo consegue adicionar o bloco a blockchain, ele é recompensado com a capacidade de formar uma nova blockchain e propaga-la pela rede.

Essa competição pela inserção do bloco validado na blockchain antiga e pela propagação da nova blockchain pode eventualmente dividir a rede.

Eventualmente, isso acontece sob condições normais, sempre que dois mineradores resolvem o algoritmo de prova de trabalho com uma diferença de tempo muito pequena, ou quando há uma mudança de objetivo no desenvolvimento da plataforma.

O que resulta nisso:

Se acontecerem forks, é devido a:

1 — Inconsistências temporárias entre as versões da blockchain.

2 — Por uma mudança de propósito do desenvolvimento da plataforma.

Geralmente, os embates de bifurcação acabam sendo resolvidos com a re-convergência, à medida que mais blocos são adicionados a uma das ramificações dessa bifurcação.

Os nodos sempre vão escolher a maior blockchain, que no caso se torna a vencedora.

No exemplo da imagem, o nodo que queria inserir o Bloco Rosa na blockchain, pode incorpora-lo à blockchain compatível, estendendo a totalidade da toda a rede que possui a maior prova de trabalho, ou a maior capacidade de mineração e validação das transações.

Por isso, quando maior quantidade de blocos validados de uma blockchain, maior é a sua chance dos nodos preferirem baixar e replicar essa blockchain.

Enquanto isso, na blockchain que tem menor quantidade de blocos, outros nodos irão enxergar ela como secundária.

É teoricamente possível que uma bifurcação se estenda em dois blocos. Se os dois blocos forem encontrados quase que simultaneamente por mineradores nos “lados” opostos da bifurcação anterior.

Entretanto, a chance disso acontecer é muito baixa. Enquanto uma bifurcação de um bloco pode ocorrer semanalmente, uma bifurcação de dois blocos é extremamente rara.

Sendo assim, irão surgir duas versões concorrentes.

No final, o que importa é que os nodos sempre irão escolher propagar a blockchain que possui a maior prova de trabalho.

Fork no desenvolvimento

Um fork no desenvolvimento de um software refere-se ao evento de um projeto independente girando entorno de um projeto inicial de um determinado software.

Esses forks ocorrem, por vezes, na esfera do open-source, quando existem planos ou metas inconciliáveis dentro da comunidade de um projeto, que muitas vezes levam a uma divisão de objetivos na comunidade.

A partir daí, dois projetos distintos são formulados e diferentes perfis de pessoas apoiam cada um dos dois.

É o caso da recente polêmica do fork do mais recente do Bitcoin Core e o Bitcoin Unlimited. Ele como os outros forks que a rede bitcoin já teve que enfrentar, como o Bitcoin Classic e o Bitcoin XT, está rendendo rumores e especulações.

Na prática os forks de desenvolvimento se originam do código fonte inicial do que está se copiando. O projeto segue sendo desenvolvido só que em uma direção diferente.

Por exemplo, neste sentido, Litecoin é um fork do Bitcoin: começou como uma cópia da base de código do Bitcoin, mas se desenvolveu em um projeto independente (embora ainda estreitamente relacionado).

Diferenças entre Softfork e Hardfork

Os termos Softfork e Hardfork são termos usados para descrever o nível da capacidade e da convergência da comunidade em romper de forma simultânea e sincronizada algumas das mudanças no protocolo Bitcoin.

Se a comunidade estiver irreconciliavelmente dividida sobre tal questão, a versão antiga e a nova versão do Bitcoin podem emergir como projetos diferentes depois dessa discussão.

Embora ambas as versões do protocolo Bitcoin estejam em uso, as diferenças na aceitação, podem causar uma cadeia de blocos paralela e duradoura, isto é, duas blockchains longas e distintas que são ambas consideradas válidas por determinada parte da rede.

Softforks

Softforks são implementações compatíveis com versões anteriores do Bitcoin Core e são de consenso de toda a comunidade.

Isso quer dizer que os nodos antigos do Bitcoin Core, aceitarão receber blocos criados por nodos novos que estão atuando com o novo parâmetro estipulado pela comunidade.

Com um Soft fork, somente os mineradores terão que atualizar a plataforma, ou então eles vão acabar na blockchain perdedora. Usuários e comerciantes podem continuar executando nodos antigos, que agora aceitarão os blocos mais recentes que os mineradores encontrarem.

Softforks procuram preservar o código original, fazendo com que pequenas mudanças no código, sejam implementadas no projeto original, todas elas, aceitas pela comunidade de desenvolvedores, nodos, usuários e mineradores.

As novas regras permitem que um novo subconjunto derivado dos blocos válidos anteriormente, faça parte da cadeia de blocos original.

Portanto, todos os novos blocos são considerados válidos pela versão mais recente além de também serem validados por quem roda a versão antiga.

Hardforks

Hardforks são incompatíveis com versões anteriores do Bitcoin Core e são implementações baseadas no código antigo que podem ser completamente modificadas ou então ficarem menos rígidas.

Pode ou não ser de consenso de toda a comunidade. A diferença está mais na mudança das regras do protolcolo como um todo, e não em uma pequena parte alterada do código.

Um hard fork facilitam as regras de aceitação de blocos tornando os blocos previamente criados pelo Bitcoin Core, inválidos na nova versão.

O novo código não é compatível com versões anteriores, uma vez que as versões mais antigas não aceitarão os novos blocos, fazendo com que os usuários do antigo código permaneçam indefinidamente na sua própria blockchain.

O que você acha sobre os forks?

Comente sobre esse tema recentemente debatido pela comunidade Bitcoin, na seção de comentários abaixo!

Muito obrigado!

Compartilhar

This website uses cookies.