Blockchain/Nível III · A rede/3.2 Mineração/Lição 5
Modelos de bloco e Stratum V2
A função do cabeçalho, a escolha do modelo e quem segura a caneta
MateriaisA especificação Stratum V2 (stratumprotocol.org)BIP22 e BIP23
Curiosidade
- Por que um minerador com hardware dedicado ainda depende de um operador de pool para decidir quais transações entram em um bloco?
- O que permite que um minerador de grupo escolha as transações em seus próprios blocos, ao mesmo tempo em que ainda compartilha as recompensas do grupo?
- Como a mudança de JSON para protocolos binários resolve tanto a segurança quanto a eficiência em operações de mineração de alta velocidade?
Explorar
- Desde o surgimento do protocolo, todo bloco válido requer a seleção de transações. Nos primeiros dias, os mineradores que operavam nós completos escolhiam essas transações por conta própria. Em 2012, com o hardware se tornando cada vez mais especializado e caro, a maioria passou a fazer parte de pools. O protocolo Stratum, introduzido pela Slush naquele ano, padronizou a forma como os servidores dos pools distribuíam o trabalho entre seus membros. Os pools já criavam blocos desde 2010; o Stratum tornou esse processo muito mais eficiente e manteve sua abordagem centralizada na construção dos blocos.
- Sob o Stratum V1, o operador do pool atua como o único arquiteto de cada bloco candidato. O servidor agrega transações de seu próprio mempool e envia aos mineradores as partes necessárias para a geração do bloco: as duas metades da transação coinbase, o ramo Merkle, o hash do bloco anterior, o alvo e o tempo. O minerador insere seu próprio valor extra-nonce, calcula a raiz Merkle e procura por um hash válido, mas não tem poder de decisão sobre quais transações serão incluídas.
- Essa arquitetura confere aos operadores de pools poder significativo sobre a seleção das transações. Um pool que controla uma parte substancial da hashrate da rede pode censurar transações efetivamente, simplesmente excluindo-as de seus modelos. Embora isso seja raramente praticado, a capacidade estrutural para isso existe. Isso também significa que, se um servidor do pool falhar ou sofrer um ataque de negação de serviço, todos os mineradores conectados ficarão ociosos, criando um único ponto de falha para sua receita.
- Em 2012, o BIP22 e o BIP23 introduziram a função `getblocktemplate`, que permitia ao software de mineração solicitar um modelo completo de bloco a um nó. Ela foi projetada para que os membros dos pools pudessem criar seus próprios blocos. Os pools utilizam `getblocktemplate` internamente para obter modelos de seus próprios nós, mas permitir que os membros criassem seus próprios blocos complicou a validação e o compartilhamento das informações contábeis; poucos pools ofereciam essa funcionalidade (o Eligius era uma exceção).
- O Stratum V2, desenvolvido a partir de 2019 por Braiins e Matt Corallo, entre outros, redesenhou o protocolo para resolver esses problemas. Ele introduz um formato binário para reduzir o consumo de recursos e criptografia para garantir segurança. O que é crucial é que ele inclui o Protocolo de Declaração de Trabalho (Job Declaration). Isso permite que um minerador que opera seu próprio nó completo declare seu próprio modelo de bloco ao servidor do pool. O pool então aceita as contribuições dessa tarefa personalizada, dividindo as recompensas de acordo com seu esquema padrão, enquanto o minerador mantém o controle sobre a inclusão das transações.
- Esforços alternativos como o protocolo DATUM do Ocean’s (2024) buscam objetivos semelhantes de descentralizar a criação de modelos. Leia a seção de Declaração de Trabalho da especificação Stratum V2 e compare-a com a maneira como um pool que você conhece constrói seus modelos. Nos locais onde esses protocolos são adotados, a escolha das transações volta para os proprietários do hardware.
Fatos-chave
- O Stratum V1, introduzido pela Slush em 2012, centraliza a criação de modelos de bloco nos operadores do pool.
- No Stratum V1, os mineradores recebem apenas tarefas de cabeçalho e não têm influência na seleção das transações.
- BIP22/BIP23 (2012) definiram o getblocktemplate; poucos pools permitem que os membros o usem para criar seus próprios blocos.
- O Stratum V2 (a partir de 2019) utiliza um protocolo binário com criptografia para maior segurança e eficiência.
- O Protocolo de Declaração de Trabalho no Stratum V2 permite que os mineradores enviem seus próprios modelos de bloco para o pool.
- O protocolo DATUM do Ocean’s (2024) é mais um esforço voltado para descentralizar a seleção de transações entre os mineradores em grupo.
Exercício nove, seis, três, um
9ReunirListe 9 decisões envolvidas na produção de um bloco (por exemplo, quais transações incluir, a mensagem Coinbase, o carimbo de data/hora, o nonce) e indique quem toma cada uma delas no Stratum V1.
6AgruparAgrupe os 9 em 6 de acordo com quem os controla: pool, minerador, software de nó, regras de consenso, sorte ou outro.
3DestilarReduza as 6 categorias para 3 razões centrais pelas quais o poder de seleção de transações é economicamente e politicamente significativo para os produtores de blocos.
1CristalizarEscreva 1 frase explicando como a Declaração de Trabalho (Job Declaration) no Stratum V2 altera o equilíbrio de poder entre os operadores de pool e os mineradores individuais.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.