Dificuldade

Intermediário

O que é dificuldade?

Em criptomoedas, o termo dificuldade refere-se ao esforço necessário para minerar um bloco. Blockchains Proof of Work (PoW) implementam certas regras que fazem a dificuldade aumentar ou diminuir dependendo da quantidade de poder de hashing na rede. Isso é feito para garantir que os blocos não sejam produzidos rápido demais e para manter a segurança contínua da rede.
O Bitcoin, por exemplo, define o tempo de bloco em aproximadamente dez minutos (tempo médio para encontrar um novo bloco válido). Se os blocos forem encontrados rápido demais, a rede aumenta a dificuldade, o que efetivamente reduz o limiar alvo de mineração.

Em contrapartida, se os blocos demorarem muito para serem encontrados, a dificuldade diminui, elevando o alvo. Esse alvo é um número redefinido periodicamente. Para minerar um bloco com sucesso, o minerador deve encontrar um hash menor do que esse número.

Como funciona a mineração: um exemplo simplificado

Podemos usar um exemplo simples. Suponha que temos o termo "binance" e queremos produzir um hash SHA256 cujo resultado (output) seja numericamente menor que um alvo específico que corresponda aproximadamente a hashes que começam com um certo número de zeros em sua forma hexadecimal.

Na mineração real, os mineradores tentam encontrar um valor de hash menor do que o número-alvo, que é um número muito grande representado em formato de 256 bits. Podemos ilustrar isso adicionando números iterativamente a "binance" (por exemplo, "binance1", "binance2", "binance3") e aplicando a função de hashing até obtermos uma saída de hash (output) que atenda a um critério, como começar com zeros à esquerda.

Quando chegamos a "binance10", conseguimos. Se quisermos que os primeiros dois caracteres sejam "0", precisamos continuar aplicando a função de hashing até "binance99". Para obter três zeros, tivemos que aplicar o hashing até "binance458". Mas e quatro zeros? Entre os primeiros vinte milhões de números, não existe uma entrada (input) que nos dê uma saída desse tipo.

Isso deve te dar uma ideia de como funciona a mineração, com a diferença de que os mineradores estão tentando encontrar um número que esteja abaixo de um valor alvo.Quanto menor esse alvo, mais difícil de encontrar uma solução, e é por isso que o Bitcoin consome tanto poder computacional. Os mineradores aplicam funções de hashing repetidamente em variações das mesmas informações para encontrar um hash válido.

Ajuste de dificuldade

O Bitcoin ajusta sua dificuldade de mineração aproximadamente a cada 2016 blocos (cerca de duas semanas) para manter o tempo médio de bloco de 10 minutos. Esse ajuste se baseia no tempo necessário para minerar os últimos 2016 blocos. Se os blocos forem minerados mais rápido do que o esperado, a dificuldade aumenta para tornar a mineração mais difícil; se o processo for mais lento, a dificuldade diminui para facilitar a mineração.

Evolução do hardware de mineração

Como é muito difícil minerar Bitcoin, os participantes há muito tempo abandonaram PCs e placas de vídeo comuns em favor de hardwares desenvolvidos especificamente para isso, conhecidos como ASICs (circuitos integrados de aplicação específica). 

A mineração tornou-se uma atividade de nível industrial dominada por grandes fazendas (farms) de mineração com equipamentos especializados, refletindo a natureza competitiva da rede e a dificuldade crescente.

Nem todas as criptomoedas usam PoW

Vale destacar que nem todas as criptomoedas usam o consenso PoW ou têm um mecanismo de dificuldade de mineração. Por exemplo, a Ethereum fez a transição para um mecanismo de consenso Proof of Stake (PoS) que não exige mineração nem ajustes de dificuldade.

Conclusão

A dificuldade é um parâmetro dinâmico que mantém as blockchains PoW seguras e estáveis ao regular quanto trabalho computacional é necessário para minerar novos blocos. Ela se ajusta às mudanças no poder de hash da rede para manter uma taxa constante de produção de blocos, garantindo o funcionamento consistente da blockchain.