This article has been translated from English to Brazilian.
Como funciona a mineração de Bitcoin?
Na lição anterior, você aprendeu o que é um minerador de Bitcoin, como ele armazena transações novas em seu pool de memória e, em seguida, inicia o processo de "mineração" criando um bloco candidato.
Se o que acabei de escrever soa como uma língua estrangeira para você, recomendo fortemente que comece com a primeira lição do meu Guia para Iniciantes em Mineração de Bitcoin.
Se você ainda está comigo, vamos dar uma olhada mais de perto no bloco candidato...
Assim como você pode ser separado em duas partes básicas com uma cabeça e um corpo, um bloco candidato pode ser dividido em duas partes:
- Cabeçalho do bloco (área amarela)
-
Corpo do bloco (área cinza)
Se observarmos mais de perto um bloco candidato, ele na verdade NÃO contém apenas transações.
Quando um minerador cria um bloco candidato, ele inclui um "cabeçalho de bloco" (área amarela).
O "corpo" do bloco (área cinza) contém as transações.
Além de um bloco candidato conter uma série de transações, ele também contém alguns metadados que fornecem um "resumo" do bloco.
Metadados são apenas dados que fornecem informações sobre outros dados. Nesse caso, os metadados fornecem informações sobre o próprio bloco. Essas informações são conhecidas como "cabeçalho do bloco".
Dentro do cabeçalho do bloco, há vários dados.
Para fins desta lição, vou simplificar o que está dentro do cabeçalho do bloco.
Registro de data e hora
O primeiro dado dentro do cabeçalho do bloco é o "Timestamp".
O registro de data e hora indica quando o bloco foi criado.
Hash de bloco anterior
O próximo dado é chamado de "Previous Block" (bloco anterior) ou, mais especificamente, "Previous Block Hash" (hash do bloco anterior).
O Hash do bloco anterior é o hash do bloco anterior na cadeia de blocos.
Para entender o que isso significa, precisamos dar uma olhada no arquivo.

Agora que estamos olhando para dentro do arquivo, podemos ver que os dados estão estruturados de uma forma específica.

Vamos visualizar isso como o blockchain.
O bloco candidato que o minerador criou deve ser adicionado ao bloco mais recente.
Digamos que o bloco mais recente seja o de cor azul.
Como o Block Hash do bloco de cor azul é o bloco mais recente do arquivo (o "blockchain"), esse é o bloco sobre o qual o minerador deseja construir.
Pense no Block Hash como um número de identificação personalizado gerado para um bloco.
Portanto, o que o minerador fará é adicioná-lo como o "Hash de bloco anterior" no cabeçalho do bloco de seu próprio bloco candidato.
"Hash de "Resumo da transação
A próxima parte dos dados é o que chamarei de hash de "Resumo da transação".
Como o nome sugere, ele fornece um "resumo" de todas as transações no bloco expressas como uma cadeia de caracteres.
Sem entrar em detalhes, o que acontece é que todas as transações no bloco (destacadas em vermelho) são colocadas em uma função de hash e em uma determinada ordem, e você acaba com um único hash.
Esse hash é usado como o hash de "Resumo da transação".
O que esse hash fornece é uma "impressão digital" exclusiva com base em todas as transações incluídas em um bloco.
Isso ajuda a garantir que as transações não tenham sido adulteradas.
Esse hash de "Resumo da transação" é, na verdade, conhecido como "Raiz de Merkle". 🤓
Lembre-se de que uma pequena alteração nos dados mudará totalmente o hash. Isso significa que, se alguém tentasse alterar qualquer transação no bloco no futuro, isso faria com que o hash do "Resumo da transação" mudasse e fosse totalmente diferente do valor original que está no cabeçalho do bloco.
Basicamente, a alteração da transação criaria uma "impressão digital" totalmente diferente e não corresponderia à "impressão digital" original.
Essa alteração permitiria que todos soubessem instantaneamente que uma ou mais transações foram adulteradas.
Hash de bloco
Até agora, o cabeçalho do bloco contém três partes de dados:
- Carimbo de data/hora
- Hash do bloco anterior
- "Hash do "Resumo da transação
A próxima etapa é colocar esses dados do cabeçalho do bloco em uma função de hash.
Isso produzirá um número aleatório chamado "Block Hash".
(Embora um nome mais preciso seria "Block Header Hash", pois é o hash apenas do cabeçalho do bloco, não do bloco inteiro).
Assim como o Hash do bloco anterior mencionado anteriormente, pense no Hash do bloco como um número de identificação personalizado que será atribuído ao bloco candidato.
Para que o minerador tenha seu bloco adicionado à cadeia de blocos, ele precisa encontrar um Block Hash que atenda a um determinado requisito.
Se você NÃO conseguir atender a esse requisito, o bloco NÃO será considerado válido e o minerador não poderá adicionar seu bloco à cadeia de blocos.
Mais especificamente, o Block Hash deve ser um número que comece com um determinado número de zeros.
Quantos zeros exatamente?
Isso varia. O software do sistema Bitcoin determina o número mínimo de zeros com que o Block Hash deve começar.
Originalmente, a exigência era de apenas um pequeno número de zeros, mas à medida que mais e mais mineradores se juntaram, o software do Bitcoin começou a exigir um número maior de zeros.
Um minerador deve gerar uma saída (o "Block Hash") que satisfaça o limite de saída definido pelo software Bitcoin.
Esse "limite" apenas especifica o número de zeros com que o Block Hash deve começar.
É como a dança do "limbo".

Quanto mais baixo for o limite, mais zeros serão necessários.
Quanto mais zeros forem necessários, maior será a dificuldade de encontrar um Block Hash "correto".
Isso ocorre porque mais zeros à esquerda significam menos soluções possíveis, o que significa que é necessário mais tempo para "encontrar" um Block Hash correto.
Encontrar um valor que começa com três zeros, como "000123...", é muito mais difícil do que tentar encontrar um valor com seis zeros, como"000000123..."
Aqui está um exemplo recente de um Block Hash válido:
0000000000000000000586b367c292dfd274bf2e67575cf8b4d00735fc1df6ff
Observe com quantos zeros ele começa.
O "determinado número de zeros" vem do que é chamado de "dificuldade de mineração". Isso é ajustado automaticamente para cima ou para baixo pelo software que executa a rede Bitcoin. A dificuldade muda de acordo com o número de mineradores. Quanto mais computadores estiverem minerando, maior será a dificuldade e mais zeros serão necessários no início, tornando mais difícil encontrar o nonce vencedor.
Um Block Hash pode ser interpretado como um número muito grandee deve estar abaixo de um determinado limite. É por isso que os hashes de bloco começam com uma série de zeros seguidos de uma cadeia alfanumérica. Alguns blocos têm até vinte zeros à esquerda, enquanto os anteriores têm apenas oito. O número de zeros necessários demonstra aproximadamente a dificuldade de mineração no momento em que o bloco foi publicado.
O que acontece se o Block Hash não começar com o número necessário de zeros?
Então o bloco NÃO poderá ser adicionado ao arquivo (o "blockchain").
Felizmente, o minerador pode fazer várias tentativas.
Mas se um minerador executasse apenas o cabeçalho do bloco contendo apenas o carimbo de data/hora, o hash do bloco anterior e o hash do "resumo da transação" por meio da função hash novamente, ele sempre obteria o mesmo resultado.
O minerador precisa alterar os dados de alguma forma antes de tentar fazer o hash do cabeçalho do bloco novamente.
O Bitcoin oferece uma maneira!
O Nonce
No cabeçalho do bloco, há um campo extra chamado "nonce" (caixa azul clara)
Há uma parte especial do cabeçalho do bloco que os mineradores podem preencher com um número arbitrário.
O minerador é livre para colocar qualquer número que desejar.
O nonce é completamente separado das transações no bloco. Sua única finalidade é permitir que os mineradores o preencham com um número e alterem o número se o Block Hash não atender ao requisito de começar com um determinado número de zeros.
Ao usar um nonce, um minerador pode manipular a saída da função hash para "adivinhar" a saída desejada.
Como os outros dados do cabeçalho do bloco não podem ser alterados, o único dado que pode ser alterado é o nonce.
Portanto, se a primeira tentativa de hash do Block Hader falhar, o minerador altera o valor do nonce.
Você pode pensar nesse processo como se estivesse tentando encontrar a combinação de um cadeado.

Não há atalhos possíveis ao tentar encontrar a combinação de números que o destranca. Você precisa tentar todas as combinações possíveis até que, em algum momento, encontre a correta por acaso.
Você precisa adivinhar várias vezes até ter sorte!
E assim como é extremamente fácil e rápido verificar se a combinação de uma fechadura é a correta (ou ela desbloqueia ou não), é extremamente fácil e rápido para o minerador, e para outros nós depois, verificar se o nonce é de fato o correto.
O minerador também está competindo com outros mineradores. O primeiro minerador a encontrar um nonce que resulte em um Block Hash válido recebe o direito de adicionar seu bloco à cadeia de blocos e é recompensado por isso.
Por exemplo, digamos que o Block Hash precise começar com pelo menos quatro zeros.
A única maneira de encontrar um Block Hash com o número necessário de zeros iniciais é escolher aleatoriamente um valor nonce e executar o Block Header por meio da função hash.
Nesse cenário, o minerador começa com "0" para o valor de nonce (caixa azul clara).
Se isso não produzir o resultado desejado, tudo o que o minerador pode fazer é tentar novamente com um nonce diferente.
O minerador altera o nonce e, em seguida, começa novamente até conseguir encontrar um Block Hash com pelo menos o número mínimo necessário de zeros. Nesse caso, quatro zeros.
Lembre-se de que, mesmo que você tenha feito apenas um pequeno ajuste, com uma função de hash, até mesmo a menor alteração produzirá resultados completamente diferentes.
Portanto, a primeira tentativa do minerador foi usar o número "0" no nonce. Em seguida, ele executa o cabeçalho do bloco por meio da função de hash e verifica se o hash do bloco começa com quatro zeros.
Como você pode ver, o Bloch Hash começa com apenas dois zeros, portanto NÃO atende aos critérios necessários para adicionar o bloco ao blockchain.
Se a saída não for válida, o minerador continuará tentando com valores de nonce diferentes.
Como o valor "0" não funcionou, o minerador pode alterar o valor do Nonce para "1" (caixa azul claro) e, em seguida, executar o cabeçalho do bloco por meio da função hash novamente.
Como você pode ver, o Block Hash começa sem zeros, portanto isso também não funciona.
Como o valor de "1" não funcionou, o minerador pode alterar o valor do Nonce para "2" (caixa azul claro) e, em seguida, executar o Block Header por meio da função de hash novamente.
Nesse caso, o Block Hash finalmente começa com quatro zeros e atende aos critérios.
É um resultado bem-sucedido do Block Hash! 🎉
Como você pode ver, é imprevisível qual nonce produzirá um Block Hash com o número correto de zeros, de modo que o minerador precisa continuar tentando nonces diferentes para encontrar o valor correto.
Os mineradores podem minerar por longos períodos de tempo sem nenhuma garantia de que encontrarão um nonce correto. A maioria nunca encontrará!
O nonce é usado como um contador, em que seu valor é constantemente incrementado até que você encontre o Block Hash correto ou algum outro minerador o faça.
É como um jogo de adivinhação de números!
Você está simplesmente tentando encontrar um hash que comece com um determinado número de zeros, alterando o valor do nonce.
Os mineradores fazem isso repetidamente .... ESPERANDO que o resultado produza um Block Hash que atenda aos critérios.
Quanto mais potentes forem seus computadores, mais "suposições" eles poderão fazer.
Esse processo de "adivinhação" é conhecido como mineração.
O minerador "vencedor" é recompensado com um número definido de bitcoins (mais taxas de transação) chamado de "recompensa de bloco".
Um minerador ganha a recompensa do bloco aproximadamente a cada 10 minutos.
Recompensa do bloco
Como os mineradores gastam muito tempo e energia para "adivinhar" o nonce correto e confirmar as transações no blockchain do Bitcoin, o software do Bitcoin os recompensa por seu esforço:
- Bitcoin recém-criado Quando um minerador confirma transações, elas são agrupadas em um bloco e adicionadas ao blockchain do Bitcoin. Para cada novo bloco adicionado ao blockchain, novos bitcoins são pagos ao minerador. Isso é conhecido como subsídio de bloco. A quantidade específica de bitcoins é baseada em um cronograma de emissão determinado pelo protocolo no momento da criação do bloco. A partir de 20 de abril de 2024, a nova emissão é de 3,125 BTC por bloco, após o mais recente evento de redução pela metade. A próxima redução pela metade está programada para ocorrer por volta de 2 de abril de 2028, quando a recompensa do bloco diminuirá para 1,5625 BTC por bloco.
- Taxas de transação. Quando as pessoas fazem transações com bitcoin, elas pagam uma taxa aos mineradores para incentivá-los a confirmar a transação. Quando um minerador confirma um pacote de transações, ele também coleta todas as taxas de cada transação individual.
A mineração é um processo monótono e repetitivo:
Você pega um cabeçalho de bloco com o nonce, faz o hash, verifica se o hash começa com um determinado número de zeros e, se não começar, repete o processo com um nonce diferente.
Estou ficando com sono só de pensar nisso. 😴
Portanto, quando você ler ou ouvir que a mineração envolve "resolver problemas matemáticos complexos", agora você sabe que essa não é uma descrição correta.
Não há nada de complexo na mineração! O processo em si é bastante simples. Você está apenas tentando adivinhar um número correto o mais rápido possível ou apenas o suficiente para ser o PRIMEIRO minerador a acertar, de modo que seu bloco candidato seja adicionado ao blockchain. É isso aí!
A "taxa de hash" indica o "poder de adivinhação" de um computador de mineração. Quanto mais hashes você conseguir adivinhar por segundo, maior será sua taxa de hash. Por exemplo, 1 trilhão (1.000.000.000) de adivinhações por segundo é igual a uma taxa de hash de 1 terrahash (TH/s).
O fato de o processo ser simples não significa que seja fácil. É por isso que ele é chamado de "mineração". Você está tentando "cavar" o número correto, o que exige muito esforço, semelhante à mineração no mundo real.
Agora que o minerador encontrou um nonce capaz de gerar um Block Hash que atende aos requisitos (começa com pelo menos 4 zeros), o bloco é adicionado à cópia do arquivo do minerador (o "blockchain").
Você se lembra de como o bloco azul era o bloco mais recente no blockchain do minerador? Você não se lembra mais.
Como o minerador conseguiu adivinhar o nonce correto, ele pôde adicionar seu bloco ao blockchain (colorido em verde).
Portanto, em uma visão de alto nível, o arquivo no computador do minerador foi atualizado (indicado em verde).
E, em seguida, o nó transmitirá esse bloco para os nós próximos aos quais está diretamente conectado.
Os nós o verificarão, conferirão e se certificarão de que o cabeçalho do bloco produza um hash de bloco que atenda aos critérios. Nesse caso, o Block Hash precisava começar com quatro zeros.
Esses nós atualizarão seu arquivo (o "blockchain") adicionando o bloco ao arquivo.
O arquivo DELES será atualizado e agora terá a mesma versão que o do minerador vencedor( arquivoverde ).
Todas as transações em seu mempool que fazem parte desse bloco vencedor passam do status "fresh" (fresco) (ou "unconfirmed" (não confirmado)) para o status "confirmed" (confirmado) e são agora permanentemente adicionadas ao arquivo.
Todas as transações conflitantes serão expulsas.
Graças ao processo de mineração, somente a transação roxa entrará no blockchain.
Em seguida, esses nós passarão o bloco para outros nós.
Quando o novo bloco é aceito pela maioria dos mineradores, todos os mineradores recomeçam e criam um novo bloco candidato, e o processo de mineração se repete.
A mineração funciona como um mecanismo de classificação para transações em uma rede de computadores, em que os blocos "minerados" têm a palavra final sobre o que pertence ao blockchain.
O Hash do bloco desse bloco recém-criado será usado pelos mineradores para o "Hash do bloco anterior" em seus blocos candidatos.
O Hash do bloco funciona como a "cadeia".
Os mineradores agora devem incluir o Block Hash do bloco anterior no novo bloco que estão criando.
Por exemplo, isso significa que, para minerar o bloco 101, os mineradores precisam saber o hash do bloco 100.
Até que o bloco 101 tenha sido minerado, o bloco 102 não poderá ser minerado.
Isso força os mineradores a se concentrarem no bloco 101, que, por sua vez, inclui o hash do bloco 100. Nenhum minerador pode pular adiante.
Mas, em vez de cada bloco ter um "número de bloco", cada bloco se refere ao bloco anterior pelo seu Bock Hash.
Isso implica que todos os blocos estão vinculados uns aos outros e é isso que cria uma "cadeia de blocos" conhecida como blockchain.
Essa "cadeia de blocos" é mantida unida não por números de bloco, mas por hashes de bloco.
Por que você não pode trapacear no Bitcoin
Digamos que todos estejam trabalhando no bloco 101.
Mas um minerador quer alterar uma transação no bloco 80.
Ele teria de fazer suas alterações e refazer todos os cálculos dos blocos 80-100 E também fazer o bloco 101.
São 21 blocos de computação dispendiosa!
Além disso, o minerador teria que fazer tudo isso antes que os outros mineradores da rede Bitcoin terminassem o bloco atual (bloco 101) no qual estão trabalhando. Isso é basicamente impossível.
É muito difícil conseguir adulterar qualquer transação que já faça parte do blockchain.
É isso que você quer dizer quando as cadeias de blocos são descritas como imutáveis.
Prova de trabalho (PoW)
O processo de mineração é frequentemente chamado de "Prova de Trabalho" ou PoW.
O PoW é conhecido como o "mecanismo de consenso" que o Bitcoin usa para fazer com que todos os nós concordem com a cópia "oficial" do blockchain do Bitcoin. É assim que o Bitcoin consegue chegar a um consenso sem a necessidade de resolução de disputas ou intervenção de uma autoridade central.
O termo "prova de trabalho" refere-se apenas ao fato de que é preciso "trabalho" para encontrar um hash de bloco abaixo de um determinado limite. E uma vez que você o faça, qualquer pessoa pode verificá-lo, o que fornece a "prova".
O processo de "adivinhar um nonce" e, em seguida, executar o cabeçalho do bloco por meio da função hash está sendo usado como uma forma de provar que você executou uma quantidade necessária de "trabalho" em seu bloco.
O primeiro minerador a produzir um hash válido tem permissão para adicionar um novo bloco ao blockchain e recebe uma recompensa de bitcoins.
Se um grande número de mineradores se juntar à rede Bitcoin, o PoW se ajustará para dificultar a obtenção de um hash de bloco válido. Se esse aumento da dificuldade desestimular muitos mineradores e eles pararem de minerar, a dificuldade será reduzida para facilitar a mineração.
Esse processo, conhecido como ajuste de dificuldade, ocorre aproximadamente a cada duas semanas e garante que novos blocos sejam adicionados ao blockchain aproximadamente a cada 10 minutos, independentemente do número de mineradores que entrem ou saiam da rede.
Os ajustes de dificuldade são feitos com base na velocidade com que os mineradores estão criando novos blocos.
Ao ajustar a dificuldade da mineração, o Bitcoin pode garantir que novos bitcoins sejam criados em uma taxa predeterminada, independentemente da quantidade de poder de computação que participa da rede.
O ajuste da dificuldade é importante porque garante que os mineradores não consigam minerar uma quantidade excessiva do suprimento de bitcoins muito rapidamente.
O hardware de computador especializado e a eletricidade necessários para minerar também significam que atacar a rede é proibitivamente caro. Isso garante a segurança e a integridade do blockchain do Bitcoin.
Qualquer pessoa com capacidade de computação suficiente para atacar a rede é melhor se você minerar honestamente e ganhar a recompensa do bloco (novos bitcoins mais taxas de transação).
Você tem interesse em saber mais sobre os aspectos técnicos do Bitcoin? O learnmeabitoin.com fornece um guia incrível e fácil de seguir para ajudar as pessoas a entender como o Bitcoin funciona.
Resumo
Parabéns a você! Agora você sabe como funciona a "mineração" no Bitcoin!
- Os mineradores procuram um hash aceitável que será o "Block Hash" escolhendo um nonce, executando a função hash e verificando o resultado.
- Se o hash não tiver a quantidade certa de zeros à esquerda, os mineradores alteram o nonce, executam a função de hash e verificam novamente.
- Quando um minerador finalmente tem a sorte de encontrar um nonce que funcione e "vence", o bloco é enviado para outros nós (incluindo outros mineradores) na rede Bitcoin, cada um dos quais pode executar a função de hash com o nonce do minerador vencedor e verificar se funciona.
- Se a solução for aceita pela maioria dos nós, o bloco será adicionado ao blockchain e o minerador vencedor receberá a recompensa do bloco.
- Todos os mineradores "reiniciam" e começam a trabalhar em um novo bloco candidato, usando o hash do bloco minerado recentemente como referência em seu cabeçalho de bloco (como o "cabeçalho de bloco anterior").
- Esse processo em que os mineradores tentam "adivinhar" ou encontrar um nonce correto é conhecido como "Proof-of-Work" (PoW).
Agora que você aprendeu sobre mineradores e mineração, vamos atualizar nosso mapa do sistema Bitcoin:



















