Como a blockchain é uma estrutura de dados descentralizada, as diferentes cópias dela não são sempre iguais. Os blocos podem chegar em diferentes nodos em momentos diferentes, fazendo com que os nodos tenham diferentes perspectivas da blockchain.
Para resolver isso, cada nodo sempre seleciona e tenta estender a corrente de blocos que representa a maior prova de trabalho, também conhecida como a corrente mais longa, ou a corrente com a maior dificuldade acumulada.
Ao somar a dificuldade registrada em cada bloco de uma corrente, um nodo pode calcular a quantia total da prova de trabalho que foi despendida para criar aquela corrente. Enquanto todos os nodos selecionarem a corrente mais longa, que tem a maior dificuldade acumulada, a rede global do bitcoin irá convergir para um estado consistente, onde as diferentes cópias são iguais.
FORKS BITCOIN
As bifurcações ocorrem devido a inconsistências temporárias entre as versões da blockchain, que são acabam sendo resolvidas com a reconvergência, à medida que mais blocos são adicionados a uma das ramificações da bifurcação. Nos próximos diagramas, nós iremos ver como ocorre o evento de uma "bifurcação" ao longo da rede.
O diagrama é uma representação simplificada do bitcoin como uma rede global. Na verdade, a topologia da rede bitcoin não é organizada geograficamente. Ao invés disso, ela forma uma rede em malha de nodos interconectados, que podem estar localizados geograficamente muito longe uns dos outros.
A representação de uma topologia geográfica é uma simplificação usada com o objetivo de ilustrar uma bifurcação. Na rede bitcoin verdadeira, a "distância" entre os nodos é medida em "saltos" ("hops") de um nodo para o outro, e não em sua localização física. Para fins ilustrativos, diferentes blocos são exibidos como cores diferentes, espalhados ao longo da rede e colorindo as conexões que eles cruzam.
Uma "bifurcação" ocorre sempre que houver dois blocos candidatos competindo para formarem a blockchain mais longa. Isso ocorre sob condições normais sempre que dois minerados resolvem o algoritmo de prova de trabalho com uma diferença de tempo muito pequena.
Quando ambos os mineradores descobrem uma solução para seus respectivos blocos candidatos, eles imediatamente transmitem o seu bloco "vencedor" para seus vizinhos imediatos que começam a propagar o bloco pela rede. Cada nodo que recebe um bloco válido irá incorporá-lo à sua blockchain, estendendo a blockchain em um bloco.
Se aquele nodo descobrir mais tarde outro bloco candidato estendendo o mesmo bloco pai, ele conectará o segundo candidato em uma corrente secundária. Como resultado, alguns nodos irão "enxergar" um bloco candidato primeiro, enquanto outros nodos irão enxergar o outro bloco candidato, surgindo duas versões concorrentes da blockchain.
Em Visualização de um evento de bifurcação da blockchain: dois blocos são encontrados simultaneamente, nós podemos ver dois mineradores que mineram dois blocos diferentes quase que simultaneamente. Esses dois blocos são filhos do bloco azul, e são destinados a estender a cadeia ao serem adicionados no topo do bloco azul.
Para facilitar o nosso acompanhamento, um deles é visualizado como um bloco vermelho se originando do Canadá, e o outro é marcado como um bloco verde se originando da Austrália. Vamos assumir, por exemplo, que um minerador no Canadá encontra uma solução de prova de trabalho para um bloco "vermelho" que estende a blockchain, sendo adicionado no topo do bloco pai "azul".
Quase simultaneamente, um minerador australiano que também está estendendo o bloco "azul" encontra uma solução para o bloco "verde", o seu bloco candidato. Agora, existem dois blocos possíveis, um "vermelho", se originando no Canadá, e outro "verde", se originando na Austrália.
Ambos os blocos são válidos, ambos os blocos contém uma solução válida para a prova de trabalho e ambos os blocos estendem o mesmo pai. Provavelmente a maioria das transações de ambos os blocos é semelhante, com apenas algumas diferenças na ordem das transações.
NOVA COIN (MOEDA)
A partir desse momento, os nodos da rede bitcoin que estiverem mais próximos (topologicamente, e não geograficamente) ao nodo canadense irão ficar sabendo sobre o bloco "vermelho" antes e irão criar uma nova blockchain com a maior dificuldade acumulada, que tem o bloco "vermelho" como último bloco na corrente (por exemplo, azul-vermelho), ignorando o bloco candidato "verde" que chegar um pouco depois.
Enquanto isso, os nodos mais próximos do nodo australiano irão considerar aquele bloco como o vencedor e irão estender a blockchain com o bloco "verde" como o último bloco (por exemplo, azul-verde), ignorando o bloco candidato "vermelho" quando ele chegar alguns segundos depois.
Qualquer minerador que enxergar o bloco "vermelho" antes irá imediatamente construir blocos candidatos que usam o "vermelho" como referência para o pai, e começarão a tentar resolver a prova de trabalho para esses blocos candidatos.
Por outro lado, os mineradores que aceitaram o bloco "verde" irão começar a construir no topo do "verde", estendendo aquela corrente. As bifurcações quase sempre são resolvidas em um bloco. Como parte do poder de hashing da rede é dedicado a construir no topo do "vermelho" como pai, outra parte do poder de hashing é focado em construir no topo do "verde".
Mesmo que o poder de mineração esteja dividido quase igualmente, é provável que um conjunto de mineradores irá encontrar uma solução e propagá-la antes que outro conjunto de mineradores tenha encontrado algumas soluções. Digamos que, por exemplo, os mineradores construindo no topo do "verde" encontra um novo bloco "rosa" que estende a corrente (por exemplo, azul-verde-rosa).
NOVO BLOCO
Todos os nodos que escolheram o "verde" como vencedor na rodada anterior irão simplesmente estender a corrente em mais um bloco. Os nodos que escolheram o "vermelho" como vencedor, entretanto, enxergarão agora duas correntes: azul-verde-rosa e azul-vermelho.
A corrente azul-verde- 36 rosa agora é maior (mais dificuldade acumulada) do que a corrente azul-vermelho. Como resultado, aqueles nodos irão definir a corrente azul-verde-rosa como a corrente principal e passarão a considrar a corrente azul-vermelha como sendo a corrente secundária, como demonstrado em Visualização de um evento de bifurcação da blockchain: a rede reconverge em uma nova cadeia mais longa.
Isso se chama de reconvergência da corrente, pois aqueles nodos são forçados a revisar sua visão da blockchain para incorporar a nova evidência de uma corrente mais longa. Qualquer minerador que estiver trabalhando em estender a corrente azul-vermelho terá que parar o trabalho porque o seu bloco candidato é um "órfão", já que o seu pai "vermelho" não está mais na corrente mais longa.
As transações contidas no "vermelho" são enfileiradas novamente para processar o próximo bloco, pois aquele bloco não está mais na corrente principal. Toda a rede reconverge para uma única blockchain azul-verde-rosa, com o "rosa" sendo o último bloco na corrente. Todos os mineradores imediatamente começam a trabalhar nos blocos candidatos que referenciam o "rosa" como seu pai, para estender a corrente azul-verde-rosa.
CONCLUSÃO
É 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 bifucarcação de dois blocos é extremamente rara. O intervalo de bloco de 10 minutos do bitcoin é um ajuste equilibrado entre tempos de confirmação rápidos (liquidação das transações) e a probabilidade de uma bifurcação.
Um tempo de bloco mais rápido tornaria faria com que as transações fossem liquidadas mais rapidamente, mas isso causaria bifurcações da blockchain mais frequentes, enquanto um tempo de bloco mais lento iria diminuir o número de bifurcações, mas faria com que as transações fossem liquidadas mais lentamente.
FONTE - Esse é um trecho do livro 'Mastering Bitcoin'
EmoticonEmoticon