Stratum V1 é um protocolo de comunicação para mineração conjunta de Bitcoin. O pool envia tarefas por uma conexão mantida aberta, e os equipamentos devolvem resultados. O protocolo não define, por si só, a remuneração nem as regras de validade dos blocos.
Eva ligou um ASIC, uma máquina especializada em minerar Bitcoin, e o conectou a um pool. O pool coordena os mineradores que buscam o próximo bloco, um conjunto de transações a ser acrescentado ao histórico do Bitcoin. A capacidade de cálculo não basta: o equipamento precisa de uma tarefa, e o pool precisa reconhecer a contribuição de Eva. Stratum V1 organiza essa conversa. O pool fornece dados para buscar o próximo bloco; a máquina calcula e devolve resultados intermediários. Como o idioma de uma ligação telefônica, o protocolo permite que as partes se entendam. Ele não fixa o preço do trabalho. Isso depende das regras de remuneração do pool, enquanto os nós Bitcoin verificam a validade do bloco encontrado. [4] [2]
À medida que as máquinas ficavam mais rápidas, o antigo getwork se tornava inadequado. Ele entregava pequenas porções de trabalho, exigindo pedidos frequentes de mais tarefas. Marek Palatinus apresentou uma nova proposta em 11 de setembro de 2012. Stratum mantém a conexão aberta para o pool enviar alterações sem esperar outra solicitação, reduzindo a sobrecarga de comunicação. Isso não substitui todas as partes da mineração: o pool pode continuar obtendo um bloco candidato de um nó Bitcoin por getblocktemplate, descrito em BIP 22. [11] [3] [5]
O software de controle normalmente envia primeiro mining.subscribe, solicitando trabalho. Recebe dados da conexão e informações que distinguem seus cálculos. Depois, mining.authorize associa a máquina a uma conta. Aqui worker é o identificador de um dispositivo ou conexão, não um empregado. Eva consegue assim distinguir várias máquinas na mesma conta. A eventual senha dessa mensagem não autentica, por si só, o servidor nem cifra a comunicação. Entrar na conta com sucesso não demonstra que a conexão seja segura. [2] [13]
mining.notify traz uma tarefa identificada por job_id, com a ligação ao bloco anterior, informações sobre transações, horário e outros dados do cabeçalho, um conjunto compacto de informações sobre o bloco. O sinal clean_jobs é importante. true manda abandonar as tarefas antigas; false permite continuar a anterior enquanto se passa para a nova. Portanto, nem toda mensagem nova invalida automaticamente os resultados em andamento. A tarefa também é apenas uma proposta sobre a qual calcular, não um bloco já válido. [2] [13]
Esta parte é técnica; uma conexão comum não exige conhecer cada campo. O pool fornece duas partes da transação coinbase, que paga a recompensa do bloco e não tem relação com a corretora de mesmo nome. O software insere entre elas extranonce1, atribuído pelo pool, e seu próprio extranonce2, gerando mais variantes de trabalho. A partir da transação e das Merkle branches recebidas, valores intermediários de um resumo de transações em árvore, calcula a Merkle root. Com a referência ao bloco anterior, versão, horário e o limite codificado que o hash deve respeitar, ela forma a base de um cabeçalho de 80 bytes. O ASIC calcula repetidamente seu hash, uma impressão digital numérica, variando nonce, um número usado para novas tentativas. [2] [4] [13] [14]
Encontrar um bloco inteiro é raro. O pool estabelece, então, um limite mais fácil, chamado target. Um resultado que o atende é uma mining share, evidência de trabalho realizado. A maioria das shares não atende ao limite mais exigente da rede Bitcoin; ocasionalmente uma consegue e pode ajudar a produzir um bloco válido. mining.set_difficulty e o ajuste automático vardiff alteram a dificuldade das shares para que cheguem com uma frequência razoável. Não mudam a dificuldade da rede. Atender a uma condição mais difícil exige, em média, mais cálculos; por isso esse resultado tem maior peso na medição do trabalho. Menos shares, porém mais difíceis, não significam por si só menor remuneração: seu peso e as regras do pool também importam. [2] [4] [13]
Por mining.submit, o dispositivo envia o identificador do worker, job_id, extranonce2, nTime (o registro de tempo do cabeçalho) e nonce. O pool reconstrói e verifica o resultado. duplicate indica trabalho enviado novamente, low difficulty um resultado insuficiente e stale trabalho em uma tarefa que já não é aceita. Eva acompanha, portanto, rejeições e atrasos da conexão, além da velocidade da máquina. Mesmo uma share aceita ainda não é um pagamento à carteira: Stratum transmite trabalho, enquanto o crédito e o pagamento das recompensas obedecem a regras próprias. [2] [13]
BIP 310, de 2018, descreve como negociar funções adicionais por mining.configure. O documento verificado em 17 de outubro de 2026 continua com o status Draft, ou proposta. Version-rolling permite mudar somente os bits acordados da versão do cabeçalho; depois de negociado, acrescenta um sexto campo a mining.submit. Isso não autoriza alterações arbitrárias nas regras do Bitcoin. minimum-difficulty e subscribe-extranonce tratam da dificuldade mínima solicitada para as shares e dos avisos de novos valores extranonce. Negociar capacidades evita mal-entendidos entre programas, mas não cifra a conexão. [6]
V1 costuma usar TCP sem criptografia. Sem proteção adicional, alguém no caminho da comunicação pode ler ou alterar mensagens e tentar desviar trabalho. A pesquisa Hardening Stratum, de 2017, examinou esses riscos na prática. Trata-se da conexão entre máquina e pool, não de quebrar o Bitcoin. Na configuração habitual, o pool também escolhe as transações do bloco. Possuir o equipamento não significa que Eva determine esse conteúdo. Os nós Bitcoin continuam rejeitando blocos que violem as regras, mesmo quando produzidos por um pool grande. [7] [4]
Stratum V2 traz mensagens binárias mais compactas e uma conexão protegida por criptografia. Seu componente separado Job Declaration pode permitir que o minerador proponha sua própria seleção de transações para um bloco, se os dois lados o suportarem e utilizarem. Um tradutor V1/V2 ou a simples indicação V2 não demonstra essa capacidade. Eva deve conferir o suporte do firmware, o endereço correto do servidor, a proteção da conexão, os resultados rejeitados e as conexões de reserva. A ideia central de V1 é simples: entregar trabalho, comprovar o cálculo e distinguir isso da escolha do bloco e do pagamento. [8] [12] [10]
Para ter uma visão mais completa, leia este verbete junto com Bitcoin, Mineração, Mining Pool, Braiins, Braiins Pool, Marek ‘Slush’ Palatinus. Também há referências a este verbete em Mining Pool, Marek ‘Slush’ Palatinus, Braiins, Braiins Pool.