Bloco Anterior
O campo que conecta os blocos na blockchain
O campo bloco anterior (previous block) no cabeçalho do bloco contém o hash de um bloco anterior sobre o qual o bloco se constrói.
Cada bloco aponta para um bloco anterior, e isso cria uma cadeia de blocos. Ou, como é mais conhecida, uma blockchain.
Exemplo
Abaixo estão os 5 blocos do topo da blockchain. Se você inspecioná-los, verá que cada um contém, no seu cabeçalho, o hash do bloco logo abaixo dele.
| Altura | Hash do Bloco |
|---|---|
| 953.548 | 000000000000000000011767c69efb0aa71cab35e9da3f3cd7d8d631901e4411 |
| 953.547 | 000000000000000000018fdce894635dc822ce16a1f4cb14ad011e61def6a3b9 |
| 953.546 | 000000000000000000010bb82d083a09eda931c4cb715a54fefe8e70dee2c37e |
| 953.545 | 00000000000000000001590571778ed722a521678c4e711323ecfd626ba6713c |
| 953.544 | 00000000000000000000208cffb8cbceccce376c3819ef77271c8182a9ace40c |
Você pode visitar todos os blocos da blockchain começando pela ponta (o bloco mais recente) e seguindo os campos de bloco anterior até chegar ao fundo.
Uso
Ao construir um bloco candidato, um minerador coloca o hash do bloco da ponta atual da blockchain no campo de bloco anterior.
Todos os mineradores querem estender a cadeia conhecida mais longa de blocos, porque a cadeia mais longa é o que todos os nós adotam como a versão canônica da blockchain, e eles só podem coletar a recompensa de bloco se o bloco chegar a 100 blocos de profundidade na cadeia mais longa.
canônico – autorizado; reconhecido; aceito
Você pode encontrar o bloco na ponta atual da blockchain rodando bitcoin-cli getbestblockhash.
Todo bloco precisa construir sobre um bloco anterior existente. Se você colocar no campo de bloco anterior um hash de um bloco que não existe, o bloco será inválido e rejeitado pelos nós da rede.
Propósito
Por que os blocos contêm o hash de um bloco anterior?
O campo de bloco anterior é o que conecta os blocos na blockchain.
Um hash de bloco é uma referência única para um bloco, determinada pelo conteúdo do bloco. Então, ao incluir o hash de um bloco anterior no cabeçalho, você cria uma cadeia de dados confiável, onde cada pedaço de dado (ou seja, bloco de transações) está ligado ao anterior.
Então, se você tentasse modificar o conteúdo de um bloco mais antigo (ex.: substituindo ou removendo uma transação), isso mudaria o hash daquele bloco, e ele deixaria de fazer parte da mesma cadeia de blocos, porque o bloco que se construiu sobre ele não estaria mais se referindo a ele.
Então, basicamente, essa cadeia de hashes de bloco é o que impede qualquer um de voltar no tempo e mudar a blockchain. Porque, se você o fizesse, os nós ignorariam o bloco modificado, pois ele não faria parte da cadeia conhecida mais longa.
É a isso que as pessoas se referem quando chamam a blockchain de "livro-razão imutável".
imutável – algo imutável nunca muda ou não pode ser mudado.
Bloco Gênese
O bloco gênese é único porque o seu campo de bloco anterior contém apenas zeros. Isso porque ele é o primeiríssimo bloco da blockchain, então não há um "bloco anterior" sobre o qual ele possa se construir.
Esse é o único fato interessante que tenho sobre o campo de bloco anterior no cabeçalho do bloco.
Recursos
- https://en.wikipedia.org/wiki/Hash_chain
- Blockchain Demo — site interativo bacana que mostra como os blocos são conectados em uma blockchain pelos hashes de bloco.