Usando um modelo de bloco para minerar
Estou um pouco confuso sobre como uso o modelo de bloco. Vi essa pergunta que me leva a pensar que talvez precise chamar essa função até obter um hash que se encaixe na dificuldade. Basicamente, quais são as chamadas de função que preciso realizar para extrair um modelo de bloco para que eu possa chamar o bloco de envio.
Desculpe se esta é uma pergunta vaga, estou muito confuso.
Eu também vi essa pergunta, mas novamente ela realmente não responde a qual função eu devo chamar.
Apenas para obter mais contexto, estou chamando monero de um repositório bazel, então as coisas são um pouco complicadas e complicadas.
Respostas
Estou um pouco confuso sobre como uso o modelo de bloco ... Basicamente, quais são as chamadas de função que preciso realizar para extrair um modelo de bloco para que eu possa chamar o bloco de envio.
Um modelo de bloco é apenas isso, um modelo para um bloco no qual um minerador pode realizar um trabalho (hash repetido) para tentar encontrar uma solução (um hash que atenda à dificuldade da rede) e depois enviar para a rede.
Portanto, primeiro um minerador obtém um modelo de bloco, normalmente usando o método daemon get_block_template .
Em seguida, o minerador atualiza o espaço nonce 1 de forma relacionada e executa um hash 2 (usando a função hash RandomX). Se / quando o hash resultante (que é apenas um número) encontra a dificuldade da rede, eles podem enviar o bloco para a rede usando o método daemon submit_block .
Por último, os nós de mesmo nível validam se qualquer hash de bloco proposto atende à dificuldade da rede. Se nenhum outro minerador enviar um bloco válido (ou cadeia de blocos) com mais trabalho feito, após 60 blocos o minerador receberá a recompensa.
1, o espaço nonce pode ser qualquer combinação do campo nonce no cabeçalho do bloco ou em qualquer espaço reservado da transação do miner.
2 o que realmente é hash é um blob de hash de bloco, que é uma concatenação do cabeçalho do bloco, um hash de raiz do merkle das transações de blocos e um varint da contagem de txs ( src ). Um minerador pode usar diretamente o blob de hash de bloco retornado get_block_template
ou pode construir o próprio blob de hash de bloco usando o blob de modelo de bloco. O último é necessário se o minerador estiver mudando o espaço reservado do minerador.