Difficulty Adjustment altera automaticamente a dificuldade de minerar um bloco. Quando os mineradores encontram blocos rápido demais, as regras tornam a busca mais difícil; quando demoram demais, tornam-na mais fácil. Isso ajuda o Bitcoin a manter um ritmo aproximado mesmo com grandes mudanças na capacidade de processamento. Cada nó que valida todas as regras verifica o ajuste da mesma maneira; nenhum administrador decide seu valor.
Imagine que muitas máquinas novas passem a minerar. Juntas, elas tentam mais cálculos por segundo e, com a mesma dificuldade, encontram blocos mais rápido em média. Um bloco reúne transações confirmadas, e sua criação também pode gerar novos bitcoins. Sem o ajuste, máquinas mais potentes acelerariam essa emissão. Os mineradores calculam repetidamente um hash, uma impressão digital numérica do cabeçalho do bloco. Eles têm sucesso quando o resultado é suficientemente pequeno. Um limite mais exigente reduz a chance de sucesso de cada tentativa, aumentando o trabalho necessário em média. [3]
Na rede principal do Bitcoin, chamada mainnet, a dificuldade é recalculada a cada 2 016 blocos. Com uma média de dez minutos por bloco, isso corresponde a cerca de duas semanas. Mas não existe um despertador: o ajuste acontece quando se chega ao número de bloco correspondente, sua altura. Se muitos mineradores desligarem suas máquinas de repente, os blocos restantes podem demorar mais. A rede primeiro termina o período com a dificuldade antiga; a mainnet não tem uma redução emergencial imediata. [1] [2]
Suponha que o tempo usado no cálculo seja de 10 dias, em vez dos 14 previstos. O período seguinte fica mais difícil: a dificuldade aumenta aproximadamente na proporção de 14 para 10, ou 40%. Se o período medido durar 28 dias, a dificuldade cai aproximadamente pela metade. Esses exemplos simplificados desconsideram arredondamentos e supõem que a dificuldade mínima permitida não entre em ação. Se a capacidade de processamento permanecer igual depois disso, o novo ajuste aproxima novamente de dez minutos o tempo esperado entre blocos. [1] [2]
Dez minutos são uma média de longo prazo, não um prazo prometido. Dois blocos podem chegar quase juntos, enquanto outro demora bem mais. Sua transação também pode ficar de fora do próximo bloco: a taxa oferecida e outras transações pendentes influenciam a seleção. O ajuste não controla o preço do BTC nem garante lucro aos mineradores. Também não altera a quantidade de novos bitcoins permitida em cada bloco. Sua redução periódica pela metade, o Halving, segue outra regra. [2] [3]
As regras usam um limite numérico chamado target. Um target menor torna a mineração mais difícil; o número chamado dificuldade expressa essa relação no sentido inverso. O novo target é o anterior multiplicado pelo tempo medido e dividido pelo tempo previsto de 1 209 600 segundos. Antes do cálculo, o tempo medido é limitado a um mínimo de um quarto e um máximo de quatro vezes o tempo previsto. Isso limita o tamanho de cada ajuste. Além disso, o target não pode superar o máximo permitido, powLimit. Ele é registrado no cabeçalho na representação compacta nBits, que tem precisão limitada. Por isso, os percentuais dos exemplos são aproximados. [1] [2]
O Bitcoin Core compara o horário no cabeçalho do último bloco do período concluído com o do primeiro. Entre 2 016 blocos existem 2 015 intervalos; as regras preservam essa particularidade histórica. Os mineradores escolhem esses horários dentro dos limites das regras da rede. Eles não são medições exatas do momento em que um bloco foi encontrado nem Median Time Past, outro valor de tempo calculado a partir de blocos anteriores. Você não precisa desse detalhe para entender o objetivo do ajuste, mas ele importa ao reproduzir o cálculo exato. [1]
Sites costumam mostrar uma estimativa da próxima mudança. Enquanto o período não termina, chegam novos blocos e a estimativa pode mudar. Um ajuste concluído pode ser verificado com seu próprio nó: compare os horários dos blocos nas extremidades do período, converta seus nBits em targets numéricos e repita o cálculo, incluindo limites e arredondamentos. Cada Full Node, um nó que verifica por conta própria as regras do Bitcoin, confere o target exigido ao aceitar um bloco. Esse procedimento vale para a mainnet; redes de teste podem usar regras diferentes. [1] [2]
Para ter uma visão mais completa, leia este verbete junto com Proof of Work, Mineração, Timechain / Blockchain, Block Subsidy. Também há referências a este verbete em Timechain / Blockchain, Proof of Work, Mineração, Halving.