Altura (Height)
A posição de um bloco na blockchain
A altura de um bloco indica a sua posição na blockchain.
Ela é calculada com base na distância do bloco em relação ao bloco gênese.
A contagem começa do zero. Então o primeiro bloco da blockchain (o bloco gênese) é o bloco 0.
Uso
Como a altura é usada no Bitcoin?
Há dois grandes ajustes que acontecem no Bitcoin em intervalos de altura específicos.
1. Ajuste de Dificuldade
2.016 blocos
O alvo se ajusta a cada 2.016 blocos (aproximadamente a cada 2 semanas).
Isso ajuda a manter um intervalo de 10 minutos entre os blocos conforme os mineradores entram e saem da rede ao longo do tempo.
Por exemplo, o primeiro ajuste de dificuldade aconteceu na altura de bloco 2.016, o segundo na altura 4.032, o terceiro na 6.048, e assim por diante.
2. Halving do Subsídio do Bloco
210.000 blocos
O subsídio do bloco é reduzido pela metade a cada 210.000 blocos (aproximadamente a cada 4 anos).
Esse halving do subsídio é o que cria o fornecimento fixo de bitcoin, pois eventualmente o subsídio chegará a zero e nenhum novo bitcoin será emitido.
Por exemplo, o subsídio começou em 50 BTC. Na altura 210.000 caiu para 25 BTC, na altura 420.000 caiu para 12,5 BTC, e assim por diante. Na altura 6.930.000 (após 33 halvings no total), o subsídio chegará a zero.
Outros usos
A altura também é usada em alguns outros lugares, principalmente relacionados à elegibilidade de transações para serem mineradas:
Locktime
O campo locktime pode ser usado para impedir que uma transação seja minerada até depois de uma altura específica. Por exemplo, com um locktime de 500.000, a transação só pode ser minerada em um bloco de altura 500.001 ou acima.
Locktime Relativo
O locktime relativo pode ser usado para impedir que uma transação seja minerada até que a saída que ela gasta tenha atingido certa profundidade na blockchain.
Transação Coinbase
A partir do bloco 227.836, todas as transações coinbase precisam conter a altura do bloco em que serão mineradas. Isso força cada transação coinbase a ter um TXID único, pois antes disso era possível que transações coinbase de blocos diferentes tivessem o mesmo TXID.
Referenciando blocos
A altura é um identificador único de um bloco?
A altura não é garantidamente um identificador único de um bloco.
Durante a mineração, é possível que dois blocos sejam minerados ao mesmo tempo. Portanto, pode haver dois blocos diferentes competindo pela mesma altura na blockchain. Dependendo de qual bloco for construído em cima primeiro, há uma chance de o bloco que ocupa uma altura perto do topo mudar — isso é conhecido como reorganização da cadeia.
- O hash do bloco é a forma mais confiável de referenciar um bloco. Um hash sempre referencia um bloco específico, enquanto a altura é mais um descritor do que um identificador único.
- A altura fica mais confiável quanto mais fundo o bloco desce na blockchain. Se um bloco chega a 3+ blocos de profundidade, é altamente improvável que seja trocado por uma reorganização.
Comandos
bitcoin-cli getblockcount
Este comando retorna a altura atual da blockchain.
$ bitcoin-cli getblockcount
952334 bitcoin-cli getblockhash [altura]
Este comando retorna o hash do bloco para uma altura específica na blockchain.
$ bitcoin-cli getblockhash 952334
0000000000000000000195fe7c7ccbb3c663cbf5965966b974b14c6018b05d09 bitcoin-cli getblockheader [hash]
Este comando fornece informações básicas sobre um bloco, incluindo sua altura.
Resumo
A altura é usada para referenciar um bloco que ocupa uma posição específica na blockchain.
Porém, é melhor usar o hash do bloco para referenciar um bloco de forma confiável, já que os blocos perto do topo podem mudar devido a reorganizações da cadeia. Uma vez que um bloco chega a 3 ou mais blocos de profundidade, a altura se torna boa o suficiente como identificador único. Mesmo assim, é mais seguro usar o hash do bloco quando possível.