Em Solo Mining, o minerador recebe a recompensa pelos blocos encontrados com seu próprio poder computacional e aceitos na cadeia. Um bloco é um grupo de transações acrescentado à blockchain, o histórico público do Bitcoin. “Encontrar um bloco” significa obter um resultado de cálculo que permite propor esse grupo ao restante da rede, que ainda precisa verificar o cumprimento de todas as regras. Descobertas de outros não geram renda regular para ele. É possível usar infraestrutura própria ou um servidor solo externo que cobre uma taxa. “Solo” descreve principalmente a distribuição das recompensas.
Jan compra um ASIC, uma máquina especializada nos cálculos da mineração. O painel mostra atividade, mas nada chega à carteira. Em Solo Mining, isso por si só não indica defeito. O poder computacional oferece uma chance de encontrar um bloco, não um salário por hora. Um Mining Pool convencional divide recompensas conforme suas regras; minerando sozinho, Jan espera o próprio achado. Usar um servidor via Stratum, um protocolo de comunicação para mineradores, também não significa automaticamente participar de pagamentos compartilhados. [1] [6]
Para simplificar, suponha uma participação constante de 1% no poder da rede. É uma participação grande, usada apenas como exemplo, não uma estimativa para equipamento doméstico. Nos próximos 100 blocos da rede, espera-se em média um achado próprio. Mas a probabilidade de encontrar pelo menos um é apenas 1 − 0,99^100, aproximadamente 63,4%. A fórmula primeiro calcula a probabilidade de todos esses blocos serem encontrados por outros mineradores e a subtrai da certeza. O que sobra é a chance de Jan encontrar pelo menos um. Podem ser vários ou nenhum. Esperar muito não melhora a próxima tentativa: a mineração não guarda memória dos fracassos. Mudanças na dificuldade, na potência relativa ou na disponibilidade também alteram as condições do modelo. [1]
Jan paga eletricidade qualquer que seja o resultado, além de equipamento, refrigeração e manutenção. A renda média esperada não é dinheiro disponível todo mês para pagar contas. Dividir receitas em um pool reduz a oscilação; não dá à mesma máquina mais Hashrate, ou seja, mais cálculos por segundo. Taxas e regras de pagamento também variam. Para uma experiência em casa, Jan pode definir um limite de gastos que suporte mesmo sem encontrar nada. A notícia do sucesso de outra pessoa não estima os ganhos dele. [1]
Solo CKPool é um exemplo de serviço que fornece trabalho de mineração, conexão à rede e estatísticas. A recompensa do bloco de Jan não é dividida entre outros participantes como em um pool convencional, embora o serviço possa descontar sua taxa. É necessário conhecer o endereço de recebimento, as condições e o procedimento em caso de falha. Por outro lado, um Full Node, um nó que verifica as regras do Bitcoin, não substitui a potência do ASIC. Infraestrutura e distribuição de recompensas são escolhas distintas. A lista de blocos encontrados mostra vencedores, não as chances de cada máquina conectada. [6]
A máquina calcula repetidamente um hash, uma impressão digital numérica do cabeçalho do bloco proposto. O cabeçalho é um pequeno conjunto de dados sobre o bloco, que vincula a proposta ao bloco anterior e às transações incluídas. Bitcoin Core verifica se ele é menor ou igual ao alvo da rede, target, codificado no campo nBits. Um servidor também pode aceitar resultados que satisfaçam um alvo mais fácil: são as shares. Num serviço solo, elas ajudam a acompanhar o trabalho da máquina; não são, por si, blocos encontrados nem direito a pequenos pagamentos. Reduzir sua dificuldade gera mais avisos, não uma chance maior por cálculo contra o alvo da rede. Nem a melhor share comprova um bloco válido. [2] [6]
Antes da busca, o software prepara uma proposta de bloco, um modelo. BIP 22 descreve getblocktemplate, uma interface que fornece, entre outros dados, previousblockhash, a referência ao bloco anterior, transações e coinbasevalue, o valor máximo disponível para a recompensa. O software monta a coinbase, a primeira transação especial que paga a recompensa, e o cabeçalho; o ASIC testa variantes de cálculo. Quando a rede avança, ele precisa de trabalho atualizado. Uma máquina rápida com destinatário errado ou modelo desatualizado não é uma instalação bem configurada. [3]
Um hash suficientemente baixo não basta. Os outros nós verificam transações, coinbase e encaixe do bloco na cadeia. Dois mineradores podem encontrar blocos concorrentes, e a rede continuar pelo outro ramo. Um bloco fora da cadeia ativa é chamado stale; sua recompensa não pode ser gasta nessa cadeia. Divulgação rápida e trabalho atualizado fazem diferença. Jan verifica a aceitação do bloco inteiro e as confirmações seguintes, não apenas uma mensagem verde de share aceita no painel. [3] [4]
A recompensa pode incluir bitcoin recém-criado, o subsídio de bloco, e taxas das transações incluídas. A altura de um bloco indica sua posição na cadeia. Na rede principal, da altura 840000 até o bloco anterior a 1050000, o subsídio é de 3,125 BTC. As taxas variam e um serviço pode descontar sua parte. A coinbase não pode pagar mais que o subsídio somado a essas taxas. Também vale COINBASE_MATURITY: a recompensa só pode ser gasta em um bloco cuja altura seja pelo menos 100 maior que a do bloco que a criou. São blocos, não 100 minutos. Encontrar um bloco, ter uma recompensa confirmada e dispor de dinheiro para gastar são coisas diferentes. [4] [5] [7]
Para ter uma visão mais completa, leia este verbete junto com Mineração, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. Também há referências a este verbete em Mining Pool, Pay Per Share.