WEB3DEV

ViniBlack
ViniBlack

Posted on

Hashing e prova de trabalho (PoW)

A Prova de Trabalho é outro componente do Bitcoin que é essencial para seu sucesso.

Vamos examinar suas origens e como ele é realizado antes de nos aprofundarmos em como ele funciona para o Bitcoin. 🧐

O termo "Prova de Trabalho" é usado para descrever a solução de um desafio computacionalmente caro para computadores. Por exemplo, poderíamos programar um computador para procurar um hash que comece com três 5. Isso pode levar algum tempo para ser adivinhado:

sha256("0"); // 5feceb…
sha256("1"); // 6b86b2…
sha256("2"); // d4735e…
// Continue tentando adivinhar, continue tentando adivinhar...
sha256("5118"); // 555850…
Enter fullscreen mode Exit fullscreen mode

Ufa, demoramos um pouco para adivinhar! 😅

A dificuldade de obter essa entrada fica exponencialmente mais difícil quanto mais 5s forem exigidos no hash de saída para começar. É assim que é possível controlar a dificuldade da Prova de Trabalho.

🧐 Tecnicamente, o Bitcoin controla isso em um nível mais refinado, especificando um hash de destino ao qual o novo bloco deve ser igual ou inferior.

Por que você usaria o Proof of Work?

Um dos primeiros casos de uso da Prova de Trabalho foi para evitar o envio de spam. A ideia é que você pode dificultar um pouco cada ação. Se você quiser enviar um e-mail para sua avó, talvez seja necessário criar um hash que comece com três 5s. Se um spammer quiser enviar um e-mail para um milhão de avós, ele precisará criar um milhão de hashes com três 5s. Esse tipo de spam torna-se computacionalmente caro para eles.

👵 Prova de trabalho salvando uma avó de cada vez!

Agora você deve estar se perguntando: O remetente de spam poderia simplesmente usar o mesmo hash para todos os 1 milhão de e-mails?

Sim, com certeza! Bem, isto é, a menos que criemos requisitos para tornar cada hash exclusivo. Por exemplo, poderíamos exigir que a entrada do hash incluísse o endereço "para" e o conteúdo para enviar o e-mail. Se eu quisesse enviar à minha avó a mensagem "Oi, vovó!", eu precisaria encontrar um hash com o endereço de e-mail da minha avó e o conteúdo do e-mail mais algum valor para satisfazer o hash:

sha256("Hi Grandma! [email protected] 0"); // f2d9e2…
sha256("Hi Grandma! [email protected] 1"); // 4ee36e…
sha256("Hi Grandma! [email protected] 2"); // c25e5c…
// continue adivinhando, continue adivinhando...
sha256("Hi Grandma! [email protected] 424"); // 5552ab…
Enter fullscreen mode Exit fullscreen mode

☝ Encontrei! Isso não levou muito tempo em meu computador. Podemos gerenciar a dificuldade alterando o número de 5s para que leve um minuto no meu computador. Dessa forma, um spammer leva 1 milhão de minutos (ou 11,5 dias!) para fazer isso em um computador com recursos semelhantes. Como usuário, mal noto a diferença, mas ela é muito mais problemática para o remetente de spam! 😁

📖 O número que estamos anexando ao final da mensagem aqui é geralmente chamado de nonce. Veremos como a Ethereum e a Bitcoin usam os nonces de algumas maneiras!

Como o Bitcoin usa a Prova de Trabalho?

Você pode pensar na Prova de Trabalho como a segurança do sistema Bitcoin. Milhares de nós estão trabalhando para encontrar hashes de dados na rede Bitcoin a qualquer momento. Essas máquinas são incentivadas financeiramente por meio de recompensas quando encontram o hash. Esse processo é conhecido como mineração. 🔨

Para dominar essa rede e forçar sua própria versão da verdade, você precisaria ter mais poder de computação do que todos os nós de todo o sistema. Isso é chamado de ataque de 51% porque você precisa ter 51% do poder de hashing total da rede. Mesmo conseguindo isso, você está** extremamente limitado** no que pode realmente realizar.

☝ A compreensão dessa parte tem muito a ver com a estrutura de dados subjacente da própria blockchain! Veremos isso em mais detalhes posteriormente.

Top comments (0)