Precisa de ajuda?

Como funciona a mineração em pool e como ela é diferente da mineração solo?

Neste artigo, vamos explicar qual é a diferença entre mineração solo e em pool. Já falamos sobre mineração em pool e mineração solo. Mas neste artigo iremos um pouco mais fundo.

Já falamos sobre Prova de Trabalho (PoW) neste artigo. Aprendemos que o minerador usa um número nonce para manipular a saída de hash até que a solução correta seja encontrada. Isso aplica-se apenas (parcialmente) no caso em que o minerador está a minerar sozinho (solo) - participando da solução/validação do bloco de transações por conta própria - a maneira antiga de minerar antes dos pools.

Se começarmos a falar sobre mineração num pool, as coisas começam a ficar um pouco mais complicadas. Todo o trabalho que o minerador fez durante a mineração solo deve ser distribuído por outros mineradores e evitar que dois ou mais mineradores resolvam o mesmo nonce.

Depois de compreender o princípio de distribuir o trabalho do pool para os mineradores, tudo ficará claro e fácil de entender o que é um trabalho de mineração.

Como é que o minerador adivinha os números nonce ao minerar sozinho?

Primeiro, vamos relembrar o nosso conhecimento sobre mineração solo.

O node (que na verdade também é um minerador na blockchain) irá “coletar” todas as transações que estão à espera para serem processadas e incluí-las num bloco. Este é o chamado bloco de transações. Ele incluirá apenas uma certa quantidade de transações porque um bloco Bitcoin tem um limite de quantas transações podem ser incluídas no bloco.

Em seguida, o minerador começará a adivinhar o número nonce até que a saída hash das transações e o número nonce comecem com uma certa quantidade de zeros (dificuldade de rede).

Uma vez encontrada a saída de hash correta, o minerador transmite a solução para a rede e, se tudo estiver correto, ele recebe a recompensa do bloco.

Você pode usar o formulário abaixo e adivinhar o número nonce até que a saída de hash correta seja encontrada. Comece inserindo dados aleatórios no campo DATA e adivinhe o número nonce até que o formulário fique verde. Ou você pode pressionar o botão MINE para encontrar o número nonce automaticamente.

Como é que o minerador adivinha os números nonce ao minerar num pool?

Ok, agora sabemos que o minerador deve adivinhar/manipular os números nonce para obter a saída de hash correta. Mas o que acontece se a dificuldade exigida (número de zeros no formulário acima) for muito grande? O minerador que estava a minerar solo terá uma probabilidade menor de encontrar o número nonce correto e, portanto, menor frequência de encontrar um bloco.

O minerador solo encontra uma solução para pedir aos seus amigos que comecem a minerar como um grupo de mineradores - um grupo de mineradores é conhecido como pool. Agora, o pool de mineradores parecerá mais forte na blockchain e terá uma probabilidade maior de encontrar o número nonce correto e obter a recompensa do bloco, aumentando assim a frequência de pagamento.

Mas como é que o operador do pool pode ter certeza de que os mineradores não estão a adivinhar o mesmo nonce? Se 2 ou mais mineradores estão a adivinhar o mesmo intervalo de nonces, ou eles têm a mesma posição inicial (por exemplo, todos começam a adivinhar o nonce em 0 e o incrementam em 1), então eles estão a adivinhar os mesmos números de nonce. Se todos os mineradores tiverem a mesma velocidade de adivinhação (hashrate), não faria diferença minerar juntos, pois todos encontrariam a solução aproximadamente ao mesmo tempo.

Em vez disso, o operador do pool espalharia a “posição inicial” do nonce para cada trabalhador. O pool pode distribuir o trabalho entre todos os trabalhadores dividindo o número nonce em duas partes. Isso permite que o pool envie uma parte do intervalo nonce para o primeiro minerador e a outra parte para o segundo minerador. Assim, mais alcance é coberto mais rapidamente.

Explicação Detalhada

Como visto no formulário acima, o nonce é um número aleatório que está a ser adivinhado. Para simplificar, diremos que o número nonce que resolve o bloco imaginário da transação pode variar de 0 a 100.000.

Se tivermos um minerador, a fazer mineração solo, ele começará a adivinhar o nonce em 0 e trabalhará até 100.000. Um dos números nonce entre 0 e 100.000 criará uma saída hash que corresponde à dificuldade alvo (quantidade de zeros no início da saída de hash). Assim que o minerador encontra o nonce correto, ele recebe a recompensa.

Se o pool distribuir o trabalho para vários mineradores, o pool dividirá o intervalo nonce em duas partes. A primeira parte da mensagem será um valor fixo que o minerador recebe, por exemplo 20 000 (a faixa de 20 mil). A segunda parte da mensagem (parte variável) serão os 20 000 (centenas) que podem ser manipulados pelo minerador. O minerador será responsável por apenas adivinhar a segunda parte.

Exemplos de nonces que um dos mineradores irá adivinhar no nosso caso são: 20+001, 20+002, 20+003, até 20+999. O segundo minerador pode estar a adivinhar nonces na faixa de 30.000 (os 30 mil). Por exemplo 30+001, 30+002 até 30+999. No nosso exemplo hipotético, pode haver 99 (01.000 a 99.000) mineradores no total conectados ao pool.

Time to solve the block: 0.229 sec

Como é que o nonce é dividido?

O nonce é dividido em duas partes chamadas extranonce1 e extranonce2.

A primeira mensagem é chamada extranonce1 e é sempre diferente, mas fixa, para cada minerador conectado ao pool.

A segunda mensagem chama-se extranonce2 e esta é a parte do nonce que deve ser manipulada pelo minerador para tentar resolver os dados de entrada do bloco.

Podemos dizer que a diferença no hash entre a mineração solo e a mineração em pool é que o minerador está a adivinhar o intervalo nonce completo ao minerar solo, enquanto o minerador que minera em pool está a adivinhar apenas uma parte do intervalo nonce.

Outra parte importante da mineração em pool é a dificuldade. Quando se trata de mineração solo, o minerador solo está preocupado apenas com a dificuldade da rede de destino. Enquanto os mineiros em pool usam a dificuldade alvo fornecida pelo pool e não pela rede. A dificuldade do pool de destino é sempre menor do que a dificuldade da rede de destino.

Por exemplo, se a dificuldade da rede de destino exigir 10 zeros no início da saída de hash, a dificuldade de destino do pool poderá exigir apenas 2 zeros no início da saída de hash. Nesse caso, a saída hash deve começar com 2 zeros, mas não exatamente 2 zeros. O nonce que corresponde à dificuldade do pool também pode corresponder à dificuldade da rede. Se isso acontecer, o pool encontrará o bloco e distribuirá as recompensas a todos os mineradores com base no trabalho contribuído.

No caso em que o minerador esgotou todo o intervalo nonce que lhe foi atribuído pelo pool antes de encontrar a solução, a dificuldade do pool de destino é muito alta para o minerador (ou, ao contrário, o hashrate do minerador é muito alto)

Você pode verificar este formulário e ver como os mineradores estão a contribuir com o trabalho para o pool. Primeiro, insira dados aleatórios no campo Transaction Data, então selecione a dificuldade de rede desejada e clique em MINE.

Os mineradores irão adivinhar ou percorrer todo o extranonce2 disponível até que a solução seja encontrada. Se nenhuma solução for encontrada, o extranonce1 deve ser aumentado.

Transaction data & Network difficulty
Hash output must start with 00
Miner 1
Miner 2
Miner 3
Miner 4

Repare que o formulário não possui a dificuldade do pool para a representação ser mais fácil. A dificuldade do pool permitiria que os mineradores encontrassem shares mais rapidamente e, assim, obter shares aceites antes de encontrar um bloco (dificuldade de rede). Se a dificuldade do pool for correspondida, isso não significa necessariamente que a dificuldade da rede será correspondida ou encontrada. Mas pode ser. As shares aceites permitem que o pool saiba quanto trabalho cada minerador contribuiu e distribua a recompensa de forma justa.

Repare que os exemplos acima são simplificados demais e são usados para uma representação mais fácil.

Como sempre, sinta-se à vontade para entrar no nosso servidor Discord e subreddit!


ESCRITO POR
Marko Tarman
Marko é especialista em hardware de mineração e criador de conteúdo da NiceHash. Ele começou a minar em 2012, antes do lançamento dos primeiros ASICs. Ele passou de mineração de GPU BTC, LTC para VTC e até mesmo DOGE. O seu lema de mineração: "Tenho 99 problemas, um riser mau são todos eles".
Traduzido do inglês por Nuno Silva