236 / 736BOOST

ASICBoost

Menos trabalho repetido na busca por um bloco válido

Pedro está escolhendo um equipamento de mineração e encontra ASICBoost nas especificações. O nome parece um botão para aumentar a potência, mas a ideia é organizar melhor os cálculos. A máquina prepara algumas etapas em conjunto para várias tentativas, em vez de repeti-las sempre. Cada tentativa continua sujeita às mesmas regras do Bitcoin. Para avaliar o benefício, Pedro precisa distinguir a proposta teórica, o suporte do aparelho e seu consumo medido.

ASICBoost otimiza a mineração de Bitcoin reutilizando parte do trabalho necessário para calcular hashes, as impressões digitais dos cabeçalhos de bloco. Reduz alguns custos das tentativas sem aliviar a condição que um hash bem-sucedido precisa cumprir. Isso exige preparar tarefas adequadas e projetar o chip para aproveitá-las.

Ao processar pedidos parecidos, podemos preparar os dados comuns uma vez, mas ainda precisamos concluir cada pedido separadamente. Essa comparação ajuda a entender ASICBoost. Timo Hanke o descreveu em 2016, reconhecendo a colaboração com Sergio Demian Lerner. Um ASIC é um chip feito para uma tarefa computacional específica; reorganizar seu trabalho evita repetições. Nem SHA-256, a função de hash usada, nem as regras do Bitcoin mudam. O hash duplo final do cabeçalho precisa continuar menor ou igual ao alvo, e o bloco inteiro deve ser válido. [1]

O byte é uma unidade usada para medir o tamanho dos dados digitais. O cabeçalho resume dados do bloco em 80 bytes. A primeira passagem de hash processa 64 bytes e depois os 16 restantes, com o preenchimento determinado. A Merkle root, a impressão digital conjunta das transações, atravessa essa fronteira: seus últimos 4 bytes ficam na segunda parte. Ali também estão o tempo, bits, a representação compacta do alvo de mineração, e nonce, o contador alterado entre tentativas. Os campos modificados determinam quais cálculos podem ser reaproveitados. [1]

Hanke chama os conjuntos apropriados de colliding work items. As primeiras partes dos cabeçalhos diferem e produzem midstate distintos, os estados intermediários do cálculo. A parte chamada Message, porém, permanece igual. Para um nonce escolhido, o chip pode compartilhar o message schedule, os valores auxiliares usados para processar a segunda parte do primeiro SHA-256. Os cálculos seguem separadamente a partir dos estados intermediários. Não são hashes finais idênticos nem uma quebra da função. Colisão, aqui, significa coincidência de uma parte selecionada da entrada; as primeiras partes dos cabeçalhos diferem. [1]

Sergio Demian Lerner distingue overt e covert ASICBoost. Overt altera bits permitidos de nVersion, o campo de versão do cabeçalho, sem procurar uma coincidência parcial da Merkle root. Covert procura essa coincidência: os últimos 4 bytes da Merkle root permanecem iguais enquanto a primeira parte muda. Dados permitidos das transações ou sua ordem podem variar, mas as dependências entre transações devem ser respeitadas e as impressões digitais registradas precisam continuar correspondendo aos dados do bloco. Versões diferentes de cabeçalho não comprovam, sozinhas, uma economia de energia nem a identidade do operador. [2]

Um pool coordena o trabalho dos mineradores. Seu servidor, o serviço de computador com o qual o equipamento se comunica, aceita os resultados conforme as condições acordadas. A máquina de Pedro não pode alterar o cabeçalho livremente. O documento identificado como BIP310 descreve a negociação por mining.configure: version-rolling.mask indica bits modificáveis, e a resposta seleciona a interseção das possibilidades do minerador e do servidor. A máscara mostra posições permitidas, não promete maior velocidade. A condição version_bits & ~last_mask == 0 exige que os bits enviados respeitem a última máscara válida. Uma notificação mining.set_version_mask vale imediatamente, sem esperar a próxima tarefa. O firmware, programa que controla o equipamento, precisa cumprir esse acordo. [3]

BIP320 propõe 16 bits gerais de nVersion; BIP323, seu substituto proposto, descreve 24 bits. Nesta revisão editorial, ambos têm status Draft, ou proposta. Esse rótulo não significa, por si só, que nada foi implementado nem que todos os pools oferecem suporte. O documento trata do uso pretendido do campo; uma conexão concreta depende da máscara e do software utilizados. Pedro não pode deduzir as permissões da máquina pelo número de um BIP nem confundir uma proposta com uma mudança automática nas regras da rede. [4] [5]

Hanke expressa a economia do modelo como x × (n − 1) / n. O x é a parcela do cálculo que pode ser compartilhada, e n é a quantidade de tarefas adequadas. Com x = 25% e n = 4, o resultado é 18.75%. A preparação comum é feita em conjunto em vez de repetida para cada tarefa. O resultado descreve esse modelo computacional, não automaticamente a mesma redução de watts em qualquer máquina. Outros circuitos e condições de operação também influenciam o consumo. Sem medições, não se deve copiar a porcentagem para uma previsão de desempenho ou receita. [1]

Pedro verifica primeiro o suporte do chip, do firmware e a cooperação com o pool. Depois confere se o trabalho é aceito e mede o equipamento completo em condições comparáveis. J/TH significa joules por terahash: a energia necessária para um trilhão de tentativas de hash. Para comparar, as medições precisam abranger os mesmos componentes do equipamento e o mesmo período. O nome ASICBoost não substitui essa medição. Também não é sinônimo de overclocking, que aumenta a frequência de operação, nem garante encontrar um bloco ou lucrar. É uma maneira de realizar parte do trabalho com mais eficiência quando toda a configuração oferece suporte. [1] [3]

Para ter uma visão mais completa, leia este verbete junto com ASIC Miner, Mineração, Block Header, Proof of Work, Bitcoin, SHA-256. Também há referências a este verbete em Mining Firmware.

DOC · 001Timo Hanke — AsicBoost, 2016Fonte primária DOC · 002Sergio Demian Lerner — Overt and covert AsicBoost, 2017Fonte primária DOC · 003BIP310 — Stratum protocol extensionsEspecificação DOC · 004BIP320 — General-purpose nVersion bitsEspecificação DOC · 005BIP323 — 24 general-purpose nVersion bitsEspecificação DOC · 006NIST — SI prefixesDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento