Prova de trabalho: mineração e ajuste de dificuldade
Implemente um minerador de PoW e compreenda a busca de nonce e a dificuldade do alvo.
Prova de trabalho: mineração e ajuste de dificuldade é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
O que é a prova de trabalho
A prova de trabalho exige que um produtor de blocos execute uma tarefa computacionalmente dispendiosa para adicionar um bloco. Isso desestimula abusos e torna cara a reescrita da cadeia. A verificação da prova é barata (um resumo criptográfico). O trabalho exige muitos cálculos de resumo criptográfico.
O desafio da mineração
Prova de trabalho do Bitcoin: encontre um valor de uso único tal que SHA256d(block_header) < target. O alvo é um número de 256 bits. Um alvo menor significa que mais zeros à esquerda são necessários na saída do resumo criptográfico, tornando os valores de uso único válidos mais raros e difíceis de encontrar.
Demonstração de prova de trabalho em Python
import hashlib def mine(data, difficulty): target = "0"*difficulty nonce = 0 while True: h = hashlib.sha256(f"{data}{nonce}".encode()).hexdigest() if h.startswith(target): return nonce, h nonce += 1 nonce, h = mine("block data", 4) print(nonce, h) # hash starts with "0000"
Alvo de dificuldade
O cabeçalho de bloco do Bitcoin tem um campo "bits" que codifica o alvo atual. Target = coefficient * 256^(exponent-3). Exemplo: bits=0x1703a30c → target = 0x03a30c * 2^(8*(0x17-3)) = um número de 256 bits que exige cerca de 72 bits zero à esquerda.
Ajuste de dificuldade
O Bitcoin ajusta a dificuldade a cada 2016 blocos (cerca de 2 semanas). Ajuste do alvo: new_target = old_target * (actual_time / 2016 * 10 minutes). Se os blocos forem produzidos mais rapidamente do que a média de 10 minutos, o alvo diminuirá (maior dificuldade). Se forem mais lentos, o alvo aumentará (menor dificuldade). Isso mantém o tempo entre blocos em cerca de 10 minutos.
Taxa de cálculo e segurança
A taxa de cálculo de resumos da rede (H/s) mede o poder total de mineração. Uma taxa de cálculo maior = menor probabilidade, por unidade de tempo, de encontrar por acaso um valor de uso único válido. Para reescrever k blocos, um atacante precisa de mais de 50% da taxa de cálculo da rede mantidos durante um período proporcional a k*10 minutos.
Ataque de 51%
Com mais de 50% da taxa de cálculo de resumos, um atacante pode: (1) minerar uma bifurcação secreta, (2) incluir ou excluir transações, (3) gastar duas vezes ao publicar uma cadeia mais longa depois que um pagamento for confirmado. Não pode: roubar as moedas de outras pessoas, criar moedas do nada ou reverter transações profundas na cadeia.
Mineração com ASIC e centralização
A mineração SHA256d do Bitcoin é dominada por ASICs (circuitos integrados de aplicação específica) — chips otimizados para uma única função de resumo criptográfico. Os ASICs são 10^6 vezes mais eficientes que as CPUs. Isso concentra a mineração em grandes centros de dados, aumentando as preocupações com a centralização.
Prova de trabalho com uso intensivo de memória
O Ethereum usava Ethash (agora obsoleto) — uma prova de trabalho com uso intensivo de memória que exige um grande conjunto de dados DAG. O uso intensivo de memória resiste a ASICs (é difícil otimizar a largura de banda da memória a baixo custo). O Monero usa RandomX (otimizado para CPU e resistente a ASICs). O Zcash usa Equihash (com uso intensivo de memória).
Mineração egoísta
Estratégia de mineração egoísta: retenha um bloco encontrado, minere um segundo bloco e depois divulgue ambos simultaneamente. Se o momento for escolhido corretamente, os mineradores honestos desperdiçarão trabalho no bloco órfão. É necessário cerca de 33% da taxa de cálculo para obter lucro em média, não 51%.
Alternativa: prova de participação
A prova de participação (PoS, usada pelo Ethereum após a fusão) substitui o trabalho de cálculo por criptomoeda depositada como participação. Os validadores são escolhidos para propor blocos proporcionalmente à sua participação. A prova de participação usa 99,95% menos energia que a prova de trabalho. Compromisso: pressupostos de confiança e economia de ataques diferentes.
Verificação rápida
O que o ajuste de dificuldade do Bitcoin tenta manter?
Recapitulação
A prova de trabalho exige encontrar um valor de uso único tal que SHA256d(header) < target. A dificuldade é ajustada a cada 2016 blocos. Uma taxa de cálculo de 51% permite ataques de gasto duplo. Os ASICs dominam a mineração do Bitcoin; funções com uso intensivo de memória resistem a ASICs. Próximo tópico: Script do Bitcoin e assinaturas de UTXO.
Perguntas Frequentes
A aula “Prova de trabalho: mineração e ajuste de dificuldade” é grátis?
Sim — o texto completo de “Prova de trabalho: mineração e ajuste de dificuldade” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Prova de trabalho: mineração e ajuste de dificuldade”?
Implemente um minerador de PoW e compreenda a busca de nonce e a dificuldade do alvo. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Prova de trabalho: mineração e ajuste de dificuldade”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Cadeias de resumos e vinculação de blocos
- Árvores de Merkle: integridade de transações em escala
- Prova de trabalho: mineração e ajuste de dificuldade
- Script do Bitcoin e verificação de assinaturas UTXO