Qual é a dificuldade de mineração em Bitcoin

De Área31 Hackerspace
Revisão de 19h48min de 16 de abril de 2021 por Coffnix (discussão | contribs) (Criou página com 'Sabias que minerar um bitcoin nem sempre é tão complicado? Um telefone móvel (um dos mais baratos) poderia minerar bitcoins rapidamente em 2009, mas hoje exige enormes comp...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Sabias que minerar um bitcoin nem sempre é tão complicado? Um telefone móvel (um dos mais baratos) poderia minerar bitcoins rapidamente em 2009, mas hoje exige enormes complexos industriais cheios de milhares de dispositivos especializados para esta tarefa, gerando milhões de milhões de operações por segundo para minerar a mesma quantidade de bitcoins. Descubra por que isto se deve a um dos aspectos mais importantes da mineração, a “dificuldade”.

Bitcoin tem uma complexidade/dificuldade de mineração dinâmica. O que significa isto exatamente? Em essência, isto significa que a dificuldade de minerar um bloco no Bitcoin nem sempre é a mesma. Às vezes sobe, às vezes desce (embora, a longo prazo, atualmente tenda a subir).

No próximo capítulo da Bit2Me Academy, irá aprofundar um dos aspectos mais importantes de criptomoedas como o Bitcoin. Entrar nem sempre é fácil, mas, como sempre, iremos explicar este conceito de uma forma simples.

O termo "dificuldade" é usado como unidade de medida no processo de mineração de criptomoeda, referente a como é difícil encontrar a hash do bloco.

Como já explicámos no artigo dedicado à mineração de criptomoedas, o hash deve atender às características encontradas nessa blockchain. Cada bloco dentro da rede é gerado a uma determinada taxa pelo protocolo blockchain. E esse ritmo deve permanecer, na medida, de forma constante.

Agora uma das perguntas mais importantes: Porque é variável a complexidade da mineração?

Bem, vamos tomar o Bitcoin como exemplo. Em Bitcoin foi estipulado em seu código que um bloco deve ser extraído a cada 10 minutos, em média. Para minerar um bloco, o núncio que dentro da operação de mineração com um hash que atenda ao padrão desejado. Uma pessoa que tem muita capacidade de computação (por exemplo, milhares de ASICou descobrindo um novo mecanismo para executar a operação mais rapidamente), você poderá encontrar o nonce muito rapidamente, quebrando a média dos 10 minutos que está procurando. Foi aí que o Bitcoin adicionou um de seus componentes mais importantes: o redefinindo a dificuldade de mineração.

Sem este reajuste, o minerador iria minerar todos os blocos num curto espaço de tempo, quebrando a curva de emissão de bitcoin pré-estabelecida no modelo económico subjacente ao protocolo Bitcoin. Ou seja, em pouco tempo todos os bitcoins seriam minerados. Para evitar isto, entra em ação o reajuste da mineração, aumentando a complexidade do problema matemático procurado e estabilizando o tempo de cada bloco novamente para 10 minutos (em média).

Com que frequência é redefinida a dificuldade de mineração no Bitcoin? A configuração da dificuldade de mineração depende dos protocolos de programação e funcionamento de cada blockchain e criptomoeda. Como já explicámos, a dificuldade de mineração no Bitcoin deve permitir que os mineradores resolvam e criem um novo bloco aproximadamente a cada 10 minutos. E quando essa condição não é atendida, o grau de dificuldade é ajustado.

Este reajuste ocorre automaticamente a cada 2.016 blocos (aproximadamente a cada duas semanas). Ou seja, em cada um dos nós da rede bitcoin, já existe um código no seu código-fonte que foi preparado para isso. Portanto, toda vez que 2.016 blocos minerados são alcançados, todos os nós irão recalcular, resultando numa nova dificuldade para a Prova de trabalho (PoW).

Como é determinada a dificuldade de mineração em Bitcoin? Antes de tudo, é importante observar que a dificuldade de mineração é totalmente independente do número de transações ou do valor das transações. No entanto, existe uma correlação com o poder de hash da rede e, portanto, com o objetivo e o tempo de mineração.

A fórmula para calcular a dificuldade é a seguinte:

dificuldade = dificuldade_1_target / current_target

Onde o destino é um número de 256 bits. dificil_1_target pode ser diferente para várias maneiras de medir a dificuldade. Tradicionalmente, representa um hash onde os 32 bits iniciais são zero e o restante é um (isso é conhecido como “dificuldade do grupo"Ou"penhasco"). O protocolo Bitcoin representa alvos como um tipo de ponto flutuante personalizado com precisão limitada. Como resultado, os clientes Bitcoin muitas vezes se aproximam da dificuldade com base nisso, que é conhecido como “bdiff".

Por sua vez, a rede Bitcoin verifica o tempo real necessário para minerar os últimos 2.016 blocos da cadeia e compara com 20.160 minutos. Este valor deve-se ao facto de que, como cada bloco teve que ser minerado num tempo de 10 minutos, o tempo estimado para minerar os 2.016 blocos é de 20.160 minutos. Em seguida, usando estes dados, é calculada a relação entre o intervalo de tempo real e o intervalo de tempo estimado. Fazer os ajustes correspondentes à dificuldade de acordo com os resultados obtidos, para se saber se é necessário aumentá-la ou diminuí-la.

Em que se traduz a dificuldade? A dificuldade na blockchain desempenha um papel muito importante. Primeiro, regula a fabricação e a ativação da criptomoeda a um ritmo constante e predeterminado. Em segundo lugar, permite manter o tempo de produção dos blocos de criptomoedas, evitando problemas de segurança e evitando possíveis fraudes. Assim, quando o valor de uma criptomoeda aumenta, os mineiros são atraídos para ingressar na rede, aumentando assim o seu poder de hash e a dificuldade ajusta-se e aumenta. Portanto, o ritmo de emissão de moedas permanece constante.

Além disso, como há muito tempo entre cada bloco, os mineradores fornecem maior segurança à rede, podendo verificar se todos os blocos atendem aos requisitos.

Portanto, este recurso é importante, pois garante que os blocos sejam gerados na velocidade predeterminada pelo protocolo e pela segurança da rede, permanecendo resilientes mesmo quando mais mineradores ingressarem na rede e aumentar o poder de hash da mesma.

Como se representada visualmente a dificuldade de mineração no Bitcoin? Curiosamente, a dificuldade de mineração pode ser representada visualmente. Além disso, dependendo da blockchain, pode ser visto de forma diferente. No entanto, vamos usar o Bitcoin para mostrar como é representado. Primeiro, vamos olhar para a imagem que deixamos abaixo (ou abrir o link), onde estão os dados do bloco #607557.

Olhe para os dados bits e dificuldade. O primeiro deles é uma representação abreviada em hexadecimal do número máximo que pode ser alcançado no hash do bloco. O segundo valor é uma representação decimal da dificuldade em atingir esse objetivo.

Agora, se tomarmos o valor bits (1715dbd2) e transformamos em número hexadecimal completo, obtemos o seguinte:

bits = 0x00000000000000000015dbd20000000000000000000000000000000000000000

Agora vamos transformar este valor em decimal:

bits = 2093644940525638357414324633411056914147713045789409280

Como pode ver, bits representa um número decimal muito grande e esse é o número objetivo máximo a ser atingido para o hash do bloco. Contudo, Como podemos verificar se o hash do bloco respeita isto?. Muito simples, vamos pegar no hash do bloco e transformá-lo de hexadecimal em decimal.

Block hash = 000000000000000000144758ca662636f4aa4089caaa776ea18cf53cbc8f5781

Transformar este resultado em base decimal nos dá o seguinte número:

Hash de bloco = 1942313447480713367840564387969267204147459722176321409

Como pode ver,o número do hash do bloco é menor que o alvo que os bits nos dizem. Isso significa que o bloco é válido para a dificuldade programada pelo protocolo Bitcoin naquele momento específico.

Como um facto curioso, podemos mencionar que o valor do hash e o objetivo são expressos em números hexadecimais. Ou seja, num conjunto de números e letras, mas no final é um número. Enquanto a dificuldade é expressa em números inteiros, com os quais estamos mais familiarizados.

O que é uma dificuldade alta? A dificuldade máxima da rede Bitcoin pode ser expressa como: maximum_target/1. E o número 1 é usado desde que o Bitcoin foi lançado no mercado, a dificuldade da rede estava nesse nível. Este valor não pode ser 0, pois daria um resultado infinito. Assim, o cálculo de maximum_target/1 resultará num número enormemente grande, aproximadamente 2^224.

A dificuldade é apenas para o protocolo de consenso de PoW? A dificuldade de mineração em criptomoeda é aplicável a diferentes protocolos de consenso como PoW, PoS, DPoS um PoA. Mas são as blockchains que usam o sistema Proof of Work (PoW), que usam estes dados como um ponto importante para a sua segurança e funcionamento. Numa rede blockchain PoW, os mineradores são solicitados a realizar uma prova criptográfica cuja dificuldade aumenta à medida que o poder da rede aumenta.

Isto significa que, para encontrar a solução certa, é necessário executar milhões de operações de hash por segundo em toda a rede. O algoritmo de prova de trabalho envolve o hash do cabeçalho do bloco e a geração de um número aleatório. Para isso, o algoritmo criptográfico geralmente usado é SHA-256, até encontrar uma solução que atenda a um determinado padrão.

Todo este processo faz com que equipamentos de computação mais poderosos sejam criados, como FPGA, CPU, GPU ou ASIC para gerar soluções suficientes e verificar transações. Assim, a dificuldade da rede é ajustada para garantir a velocidade de geração do bloco.

Todo este processo não é repetido em outros protocolos porque o seu funcionamento é diferente e concentram a sua capacidade de fornecer segurança noutros mecanismos menos exigentes em energia e recursos computacionais.

A dificuldade de mineração é variável e adapta-se à concorrência no Bitcoin? Sim, a dificuldade de mineração em Bitcoin é variável e se adapta à competição que participa da rede. Essa dificuldade de mineração é fornecida por um algoritmo. Esse algoritmo garante que a dificuldade tenha o valor ideal, para que os mineradores possam produzir um novo bloco aproximadamente a cada 10 minutos.

Se observarmos isto num cenário extremo, onde o preço do Bitcoin cai para valores extremamente baixos, a mineração não seria lucrativa. Muitos mineiros abandonariam a rede. Mas como a dificuldade é ajustável de acordo com o poder de hash da rede num determinado momento, ela diminui e se ajusta automaticamente. Assim, abre as portas para os mineradores menores, que poderiam, pelo menos por um tempo, minerar bitcoins novamente como no início: de um desktop ou laptop.


Porque a dificuldade de mineração às vezes aumenta e outras diminue? A dificuldade de mineração funciona como um parâmetro dinâmico que é constantemente ajustado de acordo com as condições da rede. Lembre-se de que o objetivo da mineração é descobrir e gerar um novo bloco de acordo com a programação da rede. Então a dificuldade é ajustada pelo mesmo sistema. Tudo isso levando em consideração o poder de hash que a rede possui num determinado momento.

Vamos dar o exemplo a seguir, se a rede Bitcoin estiver a gerar novos blocos em menos tempo que os 10 minutos estabelecidos, a mesma rede ajustará a dificuldade num grau maior. Ou seja, como os blocos são gerados mais rapidamente do que o desejado, a dificuldade de mineração aumentará. Pelo contrário, se a rede estiver a gerar novos blocos num tempo superior a 10 minutos, a dificuldade de mineração será reduzida, pois os blocos seriam gerados mais lentamente.

Outro aspeto muito influente no grau de dificuldade da rede Bitcoin é o custo da eletricidade e o valor do Bitcoin no mercado. Isso em relação à moeda fiduciária usada para cobrir as despesas operacionais da rede. Assim, o preço de um quilowatt por hora em bitcoins é um aspeto muito importante da dificuldade.

Mas quando o preço de um bitcoin é alto, a mineração torna-se lucrativa; pelo contrário, se o preço do Bitcoin for baixo, alguns mineradores deixarão a rede porque os seus lucros não cobrem as suas despesas operacionais. Portanto, quando a mineração é lucrativa, maior o número de mineradores conectados à rede e, portanto, maior poder de hash e maior grau de dificuldade. Por outro lado, quando a mineração não é lucrativa, o poder de hash diminui e, com isso, a dificuldade.

Como saber a dificuldade atual de uma blockchain? Este é outro ponto relacionado à parte técnica e aos protocolos da blockchain. Por exemplo, para descobrir a dificuldade atual da rede Bitcoin, pode visitar um explorador de blocos, por exemplo BitXNUMXMe Explorer, que mostra a dificuldade do Bitcoin e sua rede de teste Bitcoin Testnet, apenas navegando no último bloco gerado, poderá ver os últimos blocos Clique aqui e veja os detalhes do bloco que você deseja.

Da mesma forma, se tiverm um cliente Bitcoin, pode conhecer a dificuldade digitando o comando OP_GETDIFFICULTY no cliente de Bitcoin Core.[1]


Referências: