Soft Fork

Uma atualização compatível com versões anteriores do software

Diagrama mostrando um soft fork na blockchain.

Um soft fork é quando é feita uma atualização no software do Bitcoin que é compatível com as versões anteriores.

Para resumir a diferença entre um soft fork e um hard fork:

Com um soft fork, os nós que não atualizam seu software ainda conseguem aceitar blocos/transações criados pelo software atualizado. Portanto, nós que não atualizam conseguem se manter atualizados com a blockchain e não ficam para trás.

Diagrama mostrando um soft fork na rede bitcoin, com nós antigos recebendo os novos blocos dos nós atualizados.

Para uma mudança via soft fork ser bem-sucedida, você só precisa de uma maioria dos mineradores atualizando. Porque, se a maioria dos mineradores atualiza, o poder de mineração deles constrói a cadeia mais longa de blocos atualizados (que os nós antigos vão adotar).

Cenário

Como você cria um soft fork?

Para criar um soft fork, você precisa restringir as regras do que é considerado um bloco ou transação válido. Em outras palavras, você precisa tornar blocos/transações antes válidos em inválidos.

Por exemplo, digamos que o limite de tamanho do bloco seja 1 MB. Uma mudança via soft fork seria criar uma nova regra que restringe o tamanho do bloco para 0,5 MB. Quando mineradores atualizados começam a minerar esses blocos menores, os nós antigos ainda os veem como válidos, então não há ramificação da blockchain como haveria num hard fork.

Método

Como tornar um soft fork bem-sucedido?

Para um soft fork bem-sucedido, você quer uma maioria de mineradores atualizando. Como os nós sempre aceitam a cadeia mais longa, se a maioria dos mineradores está minerando os blocos atualizados com as regras restritas, os nós antigos naturalmente adotam isso como sua blockchain.

Riscos

Quais são os riscos de um soft fork?

O principal risco é se você não conseguir a maioria dos mineradores atualizando. Isso resultaria na blockchain se dividindo em duas. Porém, diferente de um hard fork (onde as cadeias nunca convergem), essa divisão pode ser resolvida colocando mais poder de mineração na nova cadeia. Se os mineradores atualizados conseguem construir a cadeia mais longa, os nós antigos fazem uma reorganização da cadeia para adotar a blockchain feita com os novos blocos.

Compromissos

Qual é a desvantagem de um soft fork?

A maior desvantagem é que soft forks tendem a tornar o software mais complexo (o Segregated Witness é um ótimo exemplo). Como você precisa manter as mudanças compatíveis com o software antigo, tem que fazer mais contornos técnicos.

Exemplos

Houve soft forks no bitcoin?

Todas as grandes atualizações do Bitcoin até agora foram implantadas como soft forks. Alguns exemplos, com as novas restrições que introduziram:

1. BIP 16: Pay to Script Hash (03/01/2012)

Adicionou regras de validação a um padrão específico de ScriptPubKey (veja P2SH), permitindo travar bitcoins a um script personalizado por meio do seu hash.

2. BIP 30: Transações duplicadas (22/02/2012)

Proibiu que um bloco contenha uma transação com um TXID igual ao de uma transação anterior ainda não totalmente gasta na mesma cadeia.

3. BIP 34: Bloco v2, Altura na Coinbase (06/07/2012)

Exigiu que a transação coinbase contenha a altura do bloco como primeiro campo do ScriptSig, garantindo que cada coinbase tenha um TXID único.

4. BIP 65: OP_CHECKLOCKTIMEVERIFY (01/10/2014)

Reaproveitou o opcode OP_NOP2 como OP_CHECKLOCKTIMEVERIFY, permitindo tornar uma saída não gastável até uma data futura.

5. BIP 66: Assinaturas DER estritas (10/01/2015)

Restringiu as assinaturas a seguir um único formato de codificação, removendo a dependência do OpenSSL.

6. BIP 141: Segregated Witness (21/12/2015)

Introduziu novos padrões de ScriptPubKey (P2WPKH, P2WSH) e uma nova estrutura de transação, onde as assinaturas ficam no fim (na área de testemunha) e não entram na criação do TXID. Também permitiu um aumento do tamanho do bloco.

7. BIP 341: Taproot (19/01/2020)

Introduziu um novo padrão de ScriptPubKey (P2TR) que permite um mecanismo de travamento que revela apenas uma condição de gasto (e não todas as outras), melhorando a privacidade.

Implantação

Como os soft forks são implantados?

O objetivo é fazer uma maioria de mineradores concordar com a atualização. Então, antes de a mudança ser ativada, os mineradores são solicitados a sinalizar sua prontidão definindo um bit específico no campo version do cabeçalho do bloco. Por exemplo:

00100000 00000000 00000000 00000001 = Bit 0 = CHECKSEQUENCEVERIFY
00100000 00000000 00000000 00000010 = Bit 1 = Segregated Witness (BIP 141)
00100000 00000000 00000000 00000100 = Bit 2 = Taproot (BIP 341)

Quando 90-95% dos mineradores sinalizam concordância com a atualização dentro de um período de ajuste de dificuldade, o soft fork fica "travado" (locked in), e em uma altura de bloco específica os mineradores começam a minerar os novos blocos.

  • Os 3 primeiros bits da versão precisam ser 001 para sinalizar prontidão para soft forks.
  • Soft forks anteriores (ex.: BIP 16) foram implantados antes desse sistema de sinalização.
  • Soft forks geralmente exigem 95% dos mineradores sinalizando, mas para o Taproot isso foi mudado para apenas 90%.

Resumo

Um soft fork é uma atualização do software do Bitcoin que é compatível com versões antigas. Ele mantém essa compatibilidade restringindo as regras sobre blocos/transações válidos, em vez de relaxá-las como em um hard fork.

O principal benefício é que todos os nós conseguem se manter atualizados mesmo sem atualizar. A chave para o sucesso é conseguir uma maioria de mineradores atualizando. Todas as atualizações do Bitcoin até agora foram feitas via soft forks.

Recursos