Soft forks, hard forks e ativação

Como as regras do Bitcoin mudam: BIP9, BIP8, Speedy Trial.

O Bitcoin não tem autoridade central para empurrar atualizações. Mudar regras de consenso exige que a maioria dos usuários e mineradores rode software compatível.

Soft vs hard

Um soft fork aperta as regras: blocos novos ainda são válidos para nós antigos. Um hard fork as afrouxa: nós antigos rejeitam blocos novos e, sem atualização universal, a cadeia se divide. As atualizações deliberadas de regras do Bitcoin desde 2010 têm sido soft forks, incluindo P2SH, assinaturas estritas BIP66, CLTV, CSV, SegWit e Taproot.

Por que mineradores sinalizam

Com um soft fork, se só alguns mineradores aplicam as regras, outros poderiam minerar um bloco que as quebra, e nós antigos o seguiriam. Isso arrisca reorganizações. Então a ativação tenta garantir que a maior parte do hashrate aplique primeiro as regras novas.

BIP9: version bits

Cada implantação recebe um bit na versão do cabeçalho do bloco, um horário de início e um timeout. Nós contam sinais em cada período de retarget de 2.016 blocos. Os estados são DEFINED → STARTED → LOCKED_IN → ACTIVE, ou FAILED no timeout. Na mainnet o limiar era 95% (1.916 de 2.016 blocos). Após LOCKED_IN passa mais um período antes de ACTIVE. CSV (2016) foi a primeira implantação BIP9.

A lição do SegWit

Em 2017, a sinalização do SegWit estagnou em cerca de um terço dos blocos por meses. BIP148, um soft fork ativado por usuários (UASF), propôs que nós rejeitassem blocos sem sinalização a partir de 1º de agosto de 2017. Mineradores adotaram BIP91, e o SegWit foi travado e ativado em agosto de 2017. O episódio mostrou que sob o limiar de 95% do BIP9, uma pequena minoria de hashrate podia travar uma atualização.

BIP8: lock-in no timeout

BIP8 usa alturas de bloco em vez de horários e adiciona um parâmetro lockinontimeout. Se definido como true, o fork trava no fim mesmo sem apoio de mineradores, e nós rejeitam blocos sem sinalização no período final. Usar LOT=true ou false foi um grande debate antes do Taproot.

Speedy Trial

O Taproot usou Speedy Trial: uma janela de sinalização de cerca de três meses (maio–agosto de 2021) com limiar de 90%, e uma altura mínima de ativação. Travou em junho de 2021 e ativou em novembro de 2021.

Hoje

Propostas como covenants são debatidas sem nenhum método de ativação acordado. A barra é intencionalmente alta, porque um fork falho poderia dividir a rede.