Você sabia que minerar um bitcoin nem sempre é tão complicado? Um telefone celular (um dos mais baratos) poderia minerar bitcoin rapidamente em 2009, mas hoje enormes armazéns industriais cheios de milhares de dispositivos especializados são necessários para essa tarefa, gerando milhões de milhões de operações por segundo para minerar a mesma quantidade de bitcoin. Descubra por que isso ocorre aprendendo sobre um dos aspectos mais importantes da mineração, a “dificuldade”.
BO itcoin tem uma complexidade / dificuldade de mineração dinâmica. O que isso significa exatamente? Em essência, isso 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).
Neste artigo da Bit2Me Academy você vai se aprofundar em um dos aspectos mais importantes das criptomoedas como o Bitcoin. Aprofundar-se nesses aspectos técnicos nem sempre é fácil, mas, como sempre, explicaremos esse conceito de maneira simples.
O termo "dificuldade" é usado como unidade de medida no processo mineração de criptomoeda, referenciamento quão difícil é encontrar o hash do bloco.
Como já explicamos no artigo dedicado a como as criptomoedas são mineradas, o hash deve atender às características procuradas nesse blockchain. Cada bloco dentro da rede é gerado a uma taxa determinada pelo protocolo blockchain. E esse ritmo deve permanecer, na medida do possível, constante.
Baixe o guia básico de mineração gratuitamente
Receba no seu email o PDF com as informações básicas.
Quanto tempo leva para minerar um bitcoin?
En 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 nonce que dentro da operação de mineração encontre um hash que atenda ao padrão pesquisado. Uma pessoa com muito poder de computação (por exemplo, milhares de ASIC, ou aplicar um novo mecanismo para fazer a operação mais rápido) você poderá encontrar o nonce muito rápido, e quebraria a média de 10 minutos fixada pelo protocolo. Foi aí que o Bitcoin adicionou um de seus componentes mais importantes: o redefinindo a dificuldade de mineração.
Sem esse reajuste, esse minerador mineraria todos os blocos em pouco 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 isso, o reajuste da mineração entra em ação e aumenta a complexidade do problema matemático procurado. Desta forma, o tempo de cada bloco é estabilizado novamente em 10 minutos (em média).
Com que frequência a dificuldade de mineração do Bitcoin é redefinida?
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 formas 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 geralmente aproximam a 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 olharmos para isso em um cenário extremo, onde o preço do Bitcoin cai para valores extremamente baixos, a mineração não seria nada lucrativa. Tantos mineradores deixariam a rede. Mas como a dificuldade é ajustável de acordo com o poder de hash que a rede possui em um determinado momento, ela diminuiria e se ajustaria automaticamente. Abrindo assim as portas para mineradores menores, que poderiam, pelo menos por um tempo, minerar bitcoin novamente como no início: de um computador 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 aspecto 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 que é utilizada para cobrir as despesas operacionais da rede. Assim, o preço de um quilowatt-hora em bitcoin é um aspecto 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 um 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.