quinta-feira, 9 de maio de 2019

Forks Internos no Bitcoin

Leitura:
Chapter 10: "Mining and Consensus" do livro Mastering Bitcoin 2nd Edition - Programming the Open Blockchain

Audiovisual:
Bitcoin Q&A: What is a fork?
Forkology: A Study of Forks for Newbies

6 comentários:

  1. Um "fork" é uma palavra utilizada para quando se cria novas versões de um programa a partir de um original, então da mesma forma pode acontecer com o Bitcoin, já que as criptomoedas também são programas.

    Os "forks" que modificam o programa mas não altera as regras de consenso, podem ser utilizados sem problemas para a rede. Já os "forks" que modificam as regras podemos dividir em dois tipos, "Soft Fork" e "Hard Fork".

    Os "soft forks" são regras modificadas que ficam mais restritos que as regras originais, ou seja, eles podem ser utilizados sem comprometer o sistema. Os "Hard forks" é o inverso, modificam as regras para serem menos restritas, mas dessa forma não vai entrar em consenso com o resto da rede, mas assim podendo criar uma nova rede isolada com as novas regras.

    ResponderExcluir
  2. Para se tornar uma base sólida para desenvolvimento e inovação de aplicativos, o Bitcoin deve melhorar e competir continuamente. É de grande importância a utilização de forks, deixando a rede bitcoins bem mais dinâmica e amistosa. Criando uma bifurcação que agrada uma parte dos usuários e a outra que não quer mudança pode continuar na mesma linha.

    Um novo software é apresentado, alguns nós vão atualizar para o novo cliente, mas outros não. Porque o bitcoin é descentralizado, caberá a cada usuário individual decidir qual deseja executar. A rede bitcoin original provavelmente terá a maioria do poder de mineração e se desenvolver mais rápido, o resultado será de duas blockchains.

    ResponderExcluir
  3. Percebe-se que, acerca dos forks internos, há um interessante trade-off que é o seguinte: quanto mais rápido for para achar um novo bloco, maior a probabilidade dos forks internos acontecerem e mais transições podem ser computadas.

    Assim sendo, é preciso escolher entre correr risco de grandes forks internos ou ter um número alto de transições computadas pela rede. A rede atualmente opera com 10 minutos, em média, por bloco, havendo de 2 a 3 forks internos por semana.

    ResponderExcluir
  4. A descentralização da Blockchain traz à tona um fato curioso. Nem sempre todos os nós da rede vão possuir a mesma cópia da Blockchain. E isso acaba gerando com que a Blockchain tenha pequenos Forks ao longo da rede. Forks são divisões na cadeia, ou seja, uma divergência entre quem é o bloco filho de um certo bloco. Isso acontece em média de 2 a 3 vezes por semana na rede do Bitcoin, e é corrigido naturalmente, ou seja, o próprio algoritmo do Bitcoin se encarrega de resolver isso, não havendo necessidade de intervenção humana. Além disso esse tipo de Fork não é prejudicial a longo prazo.

    Esse tipo de Fork acontece quando dois mineradores mineram, cada um, um bloco válido, praticamente no mesmo instante, e os propagam na rede, chamemos de bloco #123 e #134, que tem como bloco pai o bloco #098. Como ambos são válidos, parte da rede que receber o bloco #123, tratará ele como o último bloco da Blockchain, enquanto a outra parte que receber #134 vai tratar este último como o bloco mais alto da Blockchain. Se algum deles receber o do outro após já ter colocado o seu na sua Blockchain, ele será desconsiderado, já que pra ele já havia sido encontrado o bloco válido daquela altura.

    Nesse ponto, temos mineradores na rede que passarão a minerar o bloco filho do #123, enquanto temos outros que estarão a minerar o bloco filho do #134. Quais deles estão corretos? Ainda não podemos afirmar, até que algum minerador ache o próximo bloco válido.

    Digamos que um minerador que tinha o bloco #123 na sua Blockchain minerou o próximo bloco, chamemos ele de #546, ele agora vai propagar isso na rede, e assim será propagado que o bloco #546 foi minerado, que é filho do #123, que é filho do #098. Os mineradores que possuíam o bloco #134 como último bloco verão que existe então uma cadeia de blocos maior que a deles que é válida, e por esta ser a mais confiável, já que tem mais Proof-of-Work nela, abandonaram a sua cadeia atual e migrarão para a mais longa, neste caso a cadeia com três últimos blocos sendo #098, #123 e #546.

    ResponderExcluir
  5. Toda criptomoeda tem sua complexidade envolvida então existe um conjuntos de regras que formam o sistema, então como todo sistema é preciso de aprimorar e atualizar, e essas atualizações são classificadas em Soft Fork e Hard Fork. O Soft Fork é uma atualização que acontece em "segundo plano" em que o usuário não tem conhecimento da atualização geralmente são atualizações para corrigir pequenos erros, e os Hard Fork ocorrem quando alguma linha de código importante e geram uma bifurcação da rede gerando uma nova blockchain como se fosse um ponto inicial da moeda com um novo código.

    ResponderExcluir
  6. Por conta de sua estrutura descentralizada, podem ocorrer divergências em cópias da blockchain em diferentes nós da rede, ou seja, ocorre um fork na blockchain.

    Estes forks são temporários, os nós da rede sempre vão escolher a maior cadeia como a cadeia principal, fazendo com que a rede eventualmente convirja para alguma cópia da blockchain.

    A rede pode então convergir de volta para a cadeia original ou para um fork que cresceu mais que ela, neste caso, o fork tornará-se a nova cadeia principal.

    ResponderExcluir