Hash do Bloco
A referência única de um bloco
Um hash de bloco (ou ID do bloco) é uma referência única para um bloco na blockchain.
Todo hash de bloco é único e é determinado pelo conteúdo do bloco. Você pode usar o hash do bloco para procurar um bloco específico em um explorador. Por exemplo:
- Bloco 123.456:
0000000000002917ed80650c6174aac8dfc46f5fe36480aaef682ff6cd83c3ca - Bloco Gênese:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Não há nada de muito interessante nesses hashes, já que são, em última análise, só um monte de bytes de aparência aleatória. Porém, você vai notar que todos os hashes de bloco começam com um monte de zeros. Isso porque, para um bloco ser adicionado à blockchain, o minerador precisa obter um hash abaixo do valor alvo atual — e, se o hash está abaixo desse valor, ele naturalmente terá vários zeros no início.
Criando
Como você cria um hash de bloco?
Um hash de bloco é criado fazendo o hash do cabeçalho do bloco:
Os passos para criar um hash de bloco são:
- Construir um bloco de transações.
- Construir um cabeçalho de bloco para esse bloco.
- Fazer o HASH256 do cabeçalho para obter o hash do bloco. (HASH256 = SHA-256 duplo: você passa o cabeçalho pelo SHA-256 e passa o resultado pelo SHA-256 de novo.)
Transações. Você notará que não estamos hasheando diretamente as transações do bloco. Porém, o cabeçalho contém uma raiz de Merkle, que é o hash das transações, então as transações fazem parte do cabeçalho.
Ordem de Bytes. O resultado de hashear o cabeçalho produz um hash em ordem natural. Porém, ao procurar blocos em um explorador, o hash está em ordem invertida.
Uso
Onde os hashes de bloco são usados no bitcoin?
- São usados ao procurar um bloco específico na blockchain.
- São colocados no campo de bloco anterior do cabeçalho para conectar os blocos na blockchain.
Perguntas Frequentes
O hash do bloco é só bytes ou é um número?
É os dois.
Tudo o que sai da função de hash SHA-256 é só um monte de bytes sem significado. Mas eles são únicos (para aquele dado específico), então são perfeitos como referência única. Porém, no bitcoin, durante a mineração, esses hashes também são interpretados como números. Por exemplo, o hash do bloco gênese, convertido de hexadecimal para decimal, é:
10628944869218562084050143519444549580389464591454674019345556079 Fazendo isso, você pode verificar se o hash do bloco está abaixo do alvo e, se estiver, o bloco pode ser adicionado à blockchain.