Blockchain/Nível III · A rede/3.3 Consenso e governança/Lição 3
Forks suaves e forks duros
A assimetria da validade: por que endurecer as regras é seguro e relaxá-las divide a cadeia
MateriaisUm explorador de blocos com dados históricos da cadeiaO repositório BIP no GitHub para consultar os status das propostas
Curiosidade
- Por que uma rede pode adotar regras mais rígidas sem forçar todos os nós a atualizarem simultaneamente?
- Qual mudança estrutural específica em agosto de 2017 causou a divisão do Bitcoin Cash do Bitcoin?
- Como um erro de software em março de 2013 criou duas cadeias concorrentes que ninguém pretendia?
Explorar
- Um soft fork torna as regras de consenso mais rígidas. Blocos e transações válidos sob as novas regras, mais estritas, continuam válidos também sob as regras antigas, mais flexíveis. Essa compatibilidade retroativa significa que os nós que não foram atualizados continuam a aceitar a cadeia, enquanto os nós atualizados aplicam as novas restrições. Enquanto a maior parte da capacidade de hashing seguir as novas regras, a rede permanece em uma única cadeia; caso contrário, até mesmo um soft fork pode dividi-la, como aconteceu em julho de 2015.
- Um hard fork relaxa ou altera as regras de modo que estruturas anteriormente inválidas se tornem válidas. Por exemplo, aumentar o limite do tamanho do bloco torna blocos maiores aceitáveis. Se nem todos os nós fizerem a atualização para aceitar essas novas estruturas, a rede se divide em duas cadeias concorrentes com histórias incompatíveis. Essa divisão ocorreu em 1º de agosto de 2017, quando o Bitcoin Cash adotou um tamanho de bloco maior do que o Bitcoin.
- Os soft forks exigem ativação cuidadosa, pois os mineradores que aplicam as novas regras precisam constituir uma maioria da capacidade de hash. Se os mineradores ignorarem o sinal ou aplicarem regras desatualizadas, a cadeia corre o risco de se dividir de qualquer forma. O BIP9 (2015-2016) padronizou a ativação por meio do sinal dos mineradores: um soft fork era consolidado assim que 95% dos blocos em um período de 2.016 blocos sinalizavam prontidão, e, após mais um período, os nós atualizados o aplicavam.
- O fork acidental de março de 2013 ocorreu quando um grande bloco foi aceito pela versão 0.8, mas rejeitado pela versão 0.7 devido a um limite do banco de dados. A rede se dividiu, e a situação não foi resolvida com a vitória da cadeia mais longa, mas sim porque os mineradores mudaram deliberadamente para a versão 0.7, fazendo com que o ramo compatível com 0.7 superasse o outro. Isso mostrou que diferenças não intencionais entre as versões podem dividir a rede e que, em situações de emergência, a solução pode ser uma decisão humana coordenada que determine qual ramo tinha mais trabalho realizado naquele momento.
- Exemplos históricos ilustram essas mecânicas. O P2SH (Pay-to-Script-Hash) foi ativado em 2012 como um soft fork, permitindo scripts complexos enquanto mantinha a compatibilidade com nós mais antigos. O SegWit (Segregated Witness) foi ativado em 24 de agosto de 2017, no bloco 481.824, movendo os dados de assinatura para fora da parte da transação usada para calcular seu ID, corrigindo a maleabilidade e aumentando a capacidade. O Taproot veio em seguida, em novembro de 2021, no bloco 709.632.
- Verifique a divisão do Bitcoin Cash em dois exploradores de blocos. O bloco 478.558 é o último bloco compartilhado pelas duas cadeias. Procure pelo bloco 478.559 em um explorador de Bitcoin e em um explorador de Bitcoin Cash: eles são blocos diferentes, e o do Bitcoin Cash tem tamanho maior que 1 MB, o que as regras antigas do Bitcoin proibiam. A partir daí, cada cadeia considera os blocos da outra como inválidos.
Fatos-chave
- Forks suaves tornam as regras mais rígidas; novas estruturas válidas continuam sendo válidas como antes, garantindo compatibilidade retroativa.
- Os hard forks relaxam as regras; novas estruturas válidas eram anteriormente inválidas, o que representa risco de divisão da rede se não forem adotadas universalmente.
- O Bitcoin Cash se separou do Bitcoin em 1º de agosto de 2017 devido a uma divergência quanto aos limites de tamanho dos blocos.
- O fork de março de 2013 foi uma divisão acidental entre as versões 0.7 e 0.8 do Bitcoin-Qt/bitcoind, causada por um limite de banco de dados não documentado na versão 0.7.
- O SegWit foi ativado como um soft fork em 24 de agosto de 2017, no bloco 481.824.
- O BIP9 (2015-2016) permitiu que os mineradores sinalizassem sua disposição para um soft fork; era necessário que 95% dos blocos fossem criados em um período de 2.016 blocos.
Exercício nove, seis, três, um
9ReunirListe 9 principais mudanças de consenso na história do Bitcoin de 2009 a 2023. Para cada uma delas, indique o ano e se foi um soft fork ou hard fork.
6AgruparAgrupe essas 9 mudanças em 6 categorias com base no seu impacto: aumentos de capacidade, aprimoramentos de segurança, adições de funcionalidades, correções de bugs, forks acidentais e propostas rejeitadas.
3DestilarReduza esses grupos a 3 razões principais pelas quais uma mudança seria implementada como um soft fork em vez de um hard fork.
1CristalizarEscreva uma frase explicando a diferença fundamental entre os conjuntos de validade em um soft fork e em um hard fork.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.