Versão

O campo usado pelos mineradores para sinalizar soft forks

O campo versão de 4 bytes no cabeçalho do bloco é usado pelos mineradores para sinalizar prontidão para soft forks propostos.

Números de versão são usados em software para indicar atualizações ou novos recursos. Porém, o bitcoin é descentralizado, então não há uma autoridade central para forçar todos a atualizarem. Portanto, é ideal que a maioria da rede consiga concordar com mudanças propostas de antemão. Então o campo versão é basicamente usado para "votar" em atualizações propostas.

Mas não são votos de verdade. Qualquer maioria de mineradores pode começar a aplicar uma nova regra — eles não precisam indicar isso nos blocos. O que o campo versão faz é fornecer uma forma de sinalizar prontidão, para que um ponto de transição seguro e coordenado possa ser encontrado.
Pieter Wuille, bitcoin.stackexchange.com

Números de Versão

Até 2015, o número de versão era incrementado para sinalizar prontidão para novas atualizações, até chegar a 4:

Essas atualizações se tornavam permanentes quando 950 de 1000 blocos em um período eram minerados com o novo número de versão. A desvantagem é que você só pode sinalizar para uma mudança por vez.

Version Bits

Em 2015, o campo versão foi alterado para ser usado como um bit field, o que permite aos mineradores sinalizar até 29 recursos propostos ao mesmo tempo. Diferentes bits no campo de 32 bits podem ser designados ao mesmo tempo para sinalizar prontidão para soft forks diferentes. Tudo o que você precisa fazer para sinalizar prontidão é ligar um bit específico (setá-lo em 1).

Ícone Ferramenta

Version Bits

Cada bit do campo versão pode sinalizar prontidão para uma atualização (BIP9). Os 3 bits do topo devem ser 001 para a sinalização valer.

Campo de Bits 00000000000000000000000000000000
0x
4 bytes
  • Version Bits: Habilitado

Os seguintes bits foram usados para atualizações:

Para usar "version bits" na sinalização, você precisa setar os 3 primeiros bits como 0b001 (especificado na BIP 9). É por isso que você só pode sinalizar para no máximo 29 atualizações diferentes ao mesmo tempo (32 − 3 = 29 bits).

Padrão Atual

A versão padrão no cabeçalho do bloco atualmente é:

0b00100000000000000000000000000000

Que em hexadecimal é 0x20000000. Isso indica que você está usando "version bits" (os 3 primeiros bits são 0b001), mas sem sinalizar para nenhum recurso proposto.

O primeiro bit do campo versão nunca pode ser 1, pois isso indicaria um número negativo, que seria inválido (o Bitcoin usa uma codificação personalizada para valores uint256).