Pular para o conteúdo
buybitcoinsmart

Glossário / Mineração e consenso

Limite de sigops por bloco

O que é o limite de sigops por bloco?
O limite de sigops por bloco limita cada bloco de bitcoin a 80.000 unidades de custo de operações de assinatura, um orçamento de verificação contado separadamente do orçamento de tamanho de 4.000.000 unidades de peso.

Especificação no BIP-141.

Verificar assinaturas custa tempo a um nó, então o consenso mede esse trabalho com um orçamento próprio em vez de cobrá-lo do espaço de bloco. O BIP141 fixou o medidor em 80.000 unidades e atribuiu a cada operação de assinatura legada o preço de quatro delas, quadruplicando um teto anterior de 20.000. Um saque normal de chave única ou Taproot gasta um punhado de unidades, então o teto é invisível para quase todos que movem bitcoins.

Como funciona

O limite de sigops por bloco é um total acumulado, somado transação por transação à medida que um nó conecta um bloco, e um bloco cujo total ultrapassa 80.000 é inválido.

Nada é executado para produzi-lo: um nó varre os bytes dos scripts e conta os opcodes, então uma verificação de assinatura em um ramo que o gasto nunca toma é cobrada integralmente. O pessimismo é deliberado: um nó precisa saber que um bloco é custeável antes de verificar qualquer coisa.

Três contagens são somadas, e não recaem todas sobre a mesma transação. A contagem legada lê os scripts de entrada e os scripts de saída da própria transação, multiplicados por quatro, então uma operação escrita em um scriptPubKey é cobrada de quem cria a saída, não de quem a gasta depois. A contagem pay to script hash lê o script de resgate que uma entrada que gasta revela, também multiplicado por quatro. A contagem de testemunha conta pelo valor nominal: uma unidade por uma entrada P2WPKH, e um script P2WSH cobrado exatamente como seria sob P2SH.

Uma diferença entre essas varreduras custa dinheiro de verdade. As leituras de P2SH e de testemunha aplicam o desconto do BIP141, em que OP_CHECKMULTISIG precedido de OP_1 a OP_16 conta de um a dezesseis em vez das vinte fixas; a varredura legada nunca o aplica. Uma saída bare de multiassinatura de dois de três é cobrada pelas vinte operações completas, oitenta unidades de orçamento, e cobrada na criação.

O tapscript saiu do orçamento por completo. O BIP342 retirou as operações de assinatura de tapscript das 80.000 do bloco inteiro e deu a cada script sua própria dotação: 50 unidades, mais o tamanho serializado da testemunha dessa entrada, reduzida em 50 cada vez que um opcode de assinatura é executado com uma assinatura real anexada. Cinquenta vem de quatro milhões de peso divididos por oitenta mil sigops, a proporção entre os dois tetos.

Onde você vê isso

A política de retransmissão encontra o limite de sigops por bloco bem antes do consenso, por meio de três constantes do Bitcoin Core mais restritas que a regra da rede.

Uma única transação não pode reivindicar mais de um quinto do orçamento do bloco, 16.000 unidades. Uma entrada pay to script hash padrão pode revelar um script de resgate com no máximo 15 operações de assinatura. Uma terceira contagem lê operações que não são de testemunha onde elas realmente podem ser executadas, e não onde estão, e barra a retransmissão acima de 2.500 por transação; ela lê o scriptPubKey que está sendo gasto, que a contagem do bloco inteiro já cobrou na criação.

O limite também chega à sua taxa. A configuração bytespersigop do Bitcoin Core, 20 por padrão, substitui o peso de uma transação pelo maior valor entre seu peso real e seu custo em sigops multiplicado por vinte, então uma transação com muitas operações de assinatura para o seu tamanho é cobrada como se fosse maior do que é. Criar uma saída bare de multiassinatura é a forma comum de esbarrar nisso.

Os mineradores encontram o orçamento como uma segunda restrição ao lado do peso, o que o BIP342 apresenta como motivo para retirar o tapscript: dois tetos tornam a construção de um bloco mais difícil que um só. O Core reserva 400 unidades para as saídas coinbase antes de preencher um modelo.

Limite de sigops por bloco vs peso de bloco

O peso de bloco conta dados e o limite de sigops por bloco conta trabalho de verificação, e um bloco está cheio no momento em que atinge qualquer um dos dois tetos. O peso é o teto que um bloco comum atinge primeiro, porque uma entrada P2WPKH custa uma unidade e um gasto Taproot não acrescenta nada, então o orçamento de sigops só decide o resultado em um bloco carregado de scripts de estilo antigo. Divida um teto pelo outro e você obtém 50 unidades de peso por operação de assinatura, a proporção que o BIP342 reutilizou para precificar o orçamento de tapscript e o mais próximo que o protocolo tem de uma taxa de câmbio entre bytes e verificações de assinatura.

Não confundir com

Perguntas frequentes

Por que o limite de sigops por bloco é 80.000?

Porque o BIP141 reescalou a regra anterior em vez de substituí-la. O teto antes do SegWit era de 20.000 operações de assinatura por bloco, e o BIP141 multiplicou por quatro tanto a contagem quanto o teto, o que deixa um bloco de scripts legados diante exatamente da restrição que enfrentava antes e é parte da razão pela qual a mudança pôde ser lançada como um soft fork.

Os gastos Taproot contam para o limite de sigops por bloco?

Não. O BIP342 tirou as operações de assinatura do tapscript das 80.000 do bloco inteiro e deu a cada script seu próprio orçamento: 50, mais o tamanho serializado da testemunha daquela entrada, diminuído em 50 cada vez que um opcode de assinatura é executado com uma assinatura não vazia.

O limite de sigops por bloco pode afetar o que eu pago para mover bitcoin?

Somente se sua transação tiver um número de assinaturas extraordinariamente alto para o seu tamanho, o que, para a maioria das pessoas, significa criar uma saída bare de multiassinatura, e não gastá-la. O valor de bytespersigop do Bitcoin Core é 20, e isso precifica uma transação pelo maior valor entre o peso real e o custo em sigops multiplicado por 20, portanto um gasto normal com uma única chave ou Taproot não é afetado.

Gastar uma saída de multiassinatura antiga consome parte do limite de sigops por bloco?

Somente quando a saída estava envolvida em um hash de script. As sigops dentro de um script de resgate pay-to-script-hash ou de um script de testemunha P2WSH são cobradas da transação que as gasta, enquanto as sigops que estão diretamente em um scriptPubKey bare de multiassinatura já foram cobradas da transação que criou a saída, de modo que gastar essa saída não acrescenta nada.

Leia a seguir

Termos relacionados

Mais em Mineração e consenso

Ler esta página em inglês