Blockchain/Nível II · Mecânica/2.3 Blocos e a cadeia/Lição 3
Uma cadeia de hashes
O laço inquebrável e o custo de reescrever a história
MateriaisUm explorador de blocos com informações detalhadas do cabeçalhoUma calculadora ou script para verificar hashes SHA-256Um caderno para registrar valores de hash
Curiosidade
- Como uma sequência de registros digitais resiste à adulteração de forma mais eficaz do que um livro-razão físico?
- Por que adicionar um único novo bloco torna cada transação anterior mais difícil de ser alterada?
- Qual é o custo computacional para um atacante que tenta alterar uma entrada passada?
Explorar
- Em 1991, Stuart Haber e W. Scott Stornetta publicaram “How to Time-Stamp a Digital Document”. Eles propuseram conectar os documentos em uma cadeia, na qual cada novo registro continha o hash criptográfico do anterior. Essa estrutura criava um histórico imutável: alterar qualquer documento antigo mudaria seu hash, quebrando a ligação com todos os registros subsequentes. Satoshi Nakamoto citou este artigo de 1991 no whitepaper do Bitcoin como uma inspiração fundamental para a integridade estrutural da blockchain.
- Cada cabeçalho de bloco do Bitcoin inclui um campo de 32 bytes chamado “hash do bloco anterior”. Esse valor é o hash SHA-256 duplo de todo o cabeçalho do bloco anterior. O minerador insere esse hash no novo cabeçalho antes do início da mineração, pois faz parte dos dados que serão processados com hashing. O resultado é uma cadeia na qual cada bloco se compromete criptograficamente com seu bloco pai. Sem essa ligação específica, os blocos seriam ilhas independentes; com ela, eles formam uma sequência contínua, ancorada no bloco de gênese de 3 de janeiro de 2009.
- A raiz Merkle no cabeçalho vincula todas as transações dentro daquele bloco ao hash. Se um atacante modificar sequer uma transação em um bloco histórico, a raiz Merkle muda. Consequentemente, o próprio hash do bloco também muda. Como o próximo bloco armazena o hash antigo desse bloco modificado como seu “hash do bloco anterior”, a ligação é interrompida. A cadeia se torna inválida a partir daquele ponto. Para consertá-la, o atacante precisa minerar novamente a prova de trabalho para aquele bloco específico.
- Reminerar um único bloco não é suficiente, pois todos os blocos subsequentes também contêm hashes que não correspondem mais. O atacante precisa refazer o processo de prova de trabalho para cada bloco após o modificado, a fim de criar uma cadeia válida. Isso requer enorme poder computacional. Enquanto a rede honesta continua a adicionar novos blocos, o atacante compete contra ela. Se a taxa de geração de hashes do atacante ultrapassar a do restante da rede combinado, ele poderá ultrapassar a cadeia e substituir seu histórico.
- Os nós não seguem a cadeia mais longa em termos de número de blocos; eles seguem a cadeia com o maior volume acumulado de prova de trabalho, conhecida como “chainwork”. Essa métrica leva em conta os ajustes de dificuldade que tornam os blocos posteriores mais difíceis de minerar. Um ramo com mais blocos, mas menos trabalho total, não é seguido, mesmo que seus blocos possam ser válidos. Quanto mais profundamente uma transação estiver inserida na cadeia, mais trabalho um atacante precisará realizar para movê-la. Cada confirmação adiciona camadas de esforço computacional necessárias para reverter o histórico.
- Abra qualquer explorador de blocos e selecione um bloco recente. Anote seu campo “hash anterior”. Clique nesse hash para navegar até o bloco pai. Verifique se o hash do cabeçalho do bloco pai corresponde ao valor armazenado no bloco filho. Repita esse processo três vezes, rastreando a cadeia por meio dos links. Essa verificação manual confirma que cada bloco se compromete criptograficamente com seu antecessor, formando uma sequência ininterrupta de registros validados que se estende até a gênese.
Fatos-chave
- O esquema de marcação temporal vinculada de Stuart Haber e W. Scott Stornetta, de 1991, é citado no whitepaper do Bitcoin.
- Cada cabeçalho de bloco contém um hash de 32 bytes do cabeçalho do bloco anterior, ligando-os sequencialmente.
- Modificar uma transação passada altera a raiz Merkle e o hash do seu bloco, quebrando todos os links subseqüentes.
- Os nós seguem a cadeia com o maior valor acumulado de prova de trabalho (“chainwork”), e não apenas o maior número de blocos.
- Um atacante precisa refazer a prova de trabalho para cada bloco após o modificado para ultrapassar a rede honesta.
- O bloco de gênese, minerado em 3 de janeiro de 2009, serve como a âncora imutável da cadeia.
Exercício nove, seis, três, um
9ReunirListe 9 tipos diferentes de livros digitais ou sistemas de registro. Observe como cada sistema impede a adulteração das entradas históricas.
6AgruparAgrupe os 9 em 6 categorias com base em seu mecanismo de imutabilidade: vinculação criptográfica, votação por consenso, auditoria por autoridade central, redundância física, contrato legal ou outro.
3DestilarReduza os 6 grupos a 3 razões fundamentais pelas quais a maioria dos sistemas não consegue fornecer um histórico com evidências de adulteração sem uma terceira parte confiável.
1CristalizarEscreva 1 frase explicando como a prova de trabalho transforma uma lista ligada de hashes em uma cadeia de propriedade economicamente protegida.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.