Cadeia Mais Longa
A versão da blockchain que os nós aceitam como válida
A cadeia mais longa é o que os nós Bitcoin aceitam como a versão válida da blockchain.
A regra da cadeia mais longa permite que todos os nós da rede concordem sobre como a blockchain se parece e, portanto, concordem sobre o mesmo histórico de transações.
A cadeia de prova de trabalho é a solução para o problema de sincronização, e para saber qual é a visão globalmente compartilhada sem ter que confiar em ninguém.
Definição
O que é a cadeia mais longa?
A cadeia mais longa é a cadeia de blocos que exigiu mais esforço para ser construída.
Para adicionar um novo bloco à blockchain, você precisa usar poder de processamento, o que significa que cada bloco na blockchain exige uma certa quantidade de energia para chegar lá.
Portanto, uma blockchain com mais blocos terá exigido mais energia para ser construída do que uma cadeia com menos blocos, e, como regra, os nós sempre adotam essa cadeia em vez de uma "mais curta".
A decisão da maioria é representada pela cadeia mais longa, que tem o maior esforço de prova de trabalho investido nela.
Equívoco
A cadeia mais longa é a que tem mais blocos?
Você poderia pensar que a cadeia mais longa é simplesmente a que tem mais blocos, mas a cadeia que exigiu mais energia para ser construída não é necessariamente a que tem mais blocos.
Isso porque mudanças na dificuldade significam que alguns blocos exigem mais energia para serem minerados do que outros. Dentro do mesmo período de dificuldade, cada novo bloco exige o mesmo esforço; mas, se a dificuldade aumenta, os blocos do novo período exigem mais esforço.
Como os nós adotam a cadeia com mais trabalho, eles não adotariam uma cadeia com mais blocos se ela não exigisse tanto trabalho para ser construída. Os nós adotam a que tem mais "chainwork" cumulativo, e não simplesmente a que tem mais blocos.
Então, em resumo, a frase "cadeia mais longa" se refere à blockchain que exigiu mais energia para ser construída. Na maior parte das vezes é a cadeia com mais blocos, mas, para ser mais preciso, é a cadeia com mais trabalho.
Na primeira versão do Bitcoin, o Satoshi usava o número de blocos como métrica. Porém, isso é vulnerável a manipulação, então foi depois alterado para usar o chainwork como métrica.
Chainwork
Como você calcula a cadeia mais longa?
A cadeia mais longa é medida por uma métrica chamada "chainwork".
[Chainwork] é o número total de hashes que se espera terem sido necessários para produzir a cadeia atual.
Para calcular o chainwork, você só precisa calcular quantos hashes você precisaria ter feito para minerar cada bloco da cadeia, e então somá-los.
Cálculo
A mineração envolve fazer o hash de um cabeçalho de bloco. Cada hash produz um número de 256 bits, que pode ser de 0 até 0xffff...ffff.
Para minerar o bloco com sucesso, esse resultado precisa ser menor ou igual ao valor alvo daquela altura. Para calcular quantos hashes você precisaria (em média) para ficar abaixo desse valor, você divide o intervalo máximo de números pelo número que quer ficar abaixo:
intervalo = 2^256
alvo+1 = 0x00000000ffff...0000 + 1
hashes = intervalo / (alvo+1)
hashes = 0x0100010001 (4295032833)
Isso significa que você precisaria fazer cerca de 4.295.032.833 hashes em média para o primeiro bloco. Para o chainwork total de uma cadeia, basta calcular os hashes esperados de cada bloco e somar tudo.
Você pode descobrir qual era o alvo de cada bloco olhando o campo bits no cabeçalho do bloco.
Propósito
Por que os nós adotam a cadeia mais longa?
1. Resolver discordâncias quando dois blocos são minerados ao mesmo tempo.
Como o bitcoin opera em uma rede, é possível que dois computadores independentes minerem um bloco ao mesmo tempo. Nessa situação, os nós ficam em desacordo sobre qual desses dois blocos deve estar no topo. Porém, isso é resolvido quando o próximo bloco a ser minerado constrói sobre um desses dois, criando uma nova cadeia mais longa que todos os nós aceitam (uma reorganização da cadeia).
2. Proteger blocos já minerados na blockchain.
O fato de os nós sempre adotarem a cadeia mais longa torna muito difícil substituir blocos (e, portanto, transações) já na cadeia. Para substituir uma transação, seria preciso construir uma nova cadeia mais longa. Mas, se a maioria dos mineradores trabalha continuamente para estender a mesma cadeia atual, um minerador individual não consegue superar o esforço combinado de todos os outros (isso exigiria um ataque de 51%).
Pense nisso como um esforço cooperativo para fazer uma cadeia.
Perguntas Frequentes
Por que os mineradores escolhem construir na cadeia mais longa?
Porque um minerador pode reivindicar uma recompensa de bloco se conseguir minerar um bloco. Porém, os bitcoins dessa recompensa só podem ser gastos se o bloco ficar 100 blocos de profundidade na cadeia mais longa. Isso incentiva os mineradores a sempre tentarem minerar novos blocos que se tornem parte da cadeia mais longa.
O que acontece com transações que não fazem parte da cadeia mais longa?
Uma transação dentro de um bloco que não faz parte da cadeia mais longa é inválida. Os nós só consideram a cadeia mais longa como o histórico válido de transações, e qualquer coisa fora dela não é uma transação válida.