Explicado · Bitcoin
O que é proof of work, o mecanismo que torna caro reescrever o Bitcoin
Proof of work exige que cada bloco do Bitcoin tenha hash abaixo de um alvo ajustado pela rede, limitando a criação a um bloco a cada 10 minutos em média e tornando inviável reescrever o histórico sem refazer toda a cadeia.
Proof of work é um dado difícil e custoso de produzir, mas fácil para outros verificarem e que satisfaz requisitos determinados. Produzi-lo pode ser um processo aleatório de baixa probabilidade, o que exige muita tentativa e erro em média antes de se obter um resultado válido. O Bitcoin usa o sistema de proof of work Hashcash.
Uma aplicação dessa ideia é o uso do Hashcash como método para prevenir spam de e-mail, exigindo proof of work sobre o conteúdo da mensagem, incluindo o endereço do destinatário. E-mails legítimos conseguem gerar a prova com pouco esforço, mas um remetente de spam em massa teria dificuldade, pois precisaria de recursos computacionais enormes.
No Bitcoin, os mineradores precisam completar um proof of work que cubra todos os dados do bloco. A dificuldade desse trabalho é ajustada para limitar a taxa de geração de novos blocos pela rede a um a cada 10 minutos. Devido à baixa probabilidade de sucesso, é imprevisível qual computador da rede conseguirá gerar o próximo bloco.
Para um bloco ser válido, seu hash deve ser um valor menor que o alvo atual; isso significa que cada bloco indica que trabalho foi feito para gerá-lo. Cada bloco contém o hash do bloco anterior, formando uma cadeia de blocos que juntos contêm uma grande quantidade de trabalho. Alterar um bloco exige regenerar todos os sucessores e refazer o trabalho que eles contêm, o que protege a blockchain contra adulteração.
O hash também é usado como referência ao próprio bloco. O cabeçalho do bloco contém a árvore de Merkle, que depende das transações incluídas, inclusive a transação de geração, que paga o minerador e garante que cada um processe um conjunto de dados único. O esquema de proof of work mais usado é o Hashcash com SHA-256 duplo, introduzido como parte do Bitcoin. No exemplo didático da wiki, a string "Hello, world!" com alvo 2^240 precisou de 4.251 tentativas até encontrar um hash abaixo do alvo; o Bitcoin varia o alvo para manter a taxa de blocos aproximadamente constante.