126 / 736WU

Block Weight

Peso do bloco

Por que um bloco não comporta todos os pagamentos pendentes e por que blocos cheios podem ter tamanhos diferentes em bytes. O peso limita os dados que a rede aceita num mesmo bloco.

Block Weight é a forma como o Bitcoin mede a capacidade utilizada por um bloco, o grupo de transações acrescentado ao histórico compartilhado. As partes dos dados contam de maneiras diferentes. O peso tem um teto fixo; não determina a quantidade de pagamentos nem o valor transferido.

Transaction Fees: tamanho e taxaEstime o tamanho virtual da transação, a taxa segundo a sua tarifa e o valor aproximado na moeda escolhida.

Ana envia Bitcoin, mas o bloco seguinte não inclui seu pagamento. Isso, por si só, não significa que o dinheiro desapareceu. Uma transação não confirmada pode aguardar no Mempool, a fila local de um nó. Um nó é um programa que verifica transações e blocos e se comunica com outros participantes da rede. O minerador escolhe transações para um bloco de capacidade limitada e também pode produzir um bloco menor. As taxas são um incentivo, não uma ordem para incluir determinado pagamento. Block Weight explica uma restrição dessa escolha, não todos os motivos da espera. [1] [7]

O teto é 4 000 000 WU, incluindo esse valor exato. WU significa unidade de peso. Um Full Node, que verifica as regras do Bitcoin por conta própria, rejeita um bloco acima desse limite. Nem taxas altas nem um Proof of Work válido, a prova de trabalho computacional exigida na mineração, o tornam aceitável. Encontrar essa prova e montar um bloco válido são condições simultâneas. A vontade do minerador não determina sozinha a capacidade. [1] [3] [4]

Byte é uma unidade comum para medir dados. SegWit separou parte dos dados que demonstram a autorização para gastar, incluindo assinaturas. Essa parte se chama witness. Um byte dos dados básicos contribui com 4 WU; um byte adicional da representação completa com witness contribui com 1 WU. Os campos auxiliares marker e flag também entram nessa segunda categoria. Assim, a estrutura básica é preservada e há espaço para dados de verificação sem contar todos os bytes da mesma maneira. [1] [2]

Uma assinatura demonstra o direito de gastar determinadas moedas. Um pequeno programa, o script, descreve as condições desse gasto. A contribuição menor de witness ao peso não permite ao nó ignorar as assinaturas ou condições aplicáveis. Esses dados também continuam na representação completa. Trata-se de uma regra de contabilização da capacidade, não de uma afirmação de que processamento, tráfego e armazenamento caem na mesma proporção. [1] [4]

Serializar um bloco é escrevê-lo como a sequência exata de bytes trocada entre computadores. Chamemos de B o tamanho sem witness e de T o tamanho completo. BIP 141 usa W = 3 × B + T. Os dados básicos já estão incluídos em T e, portanto, contam quatro vezes ao todo. Os dados acrescentados pela representação witness contam uma vez. A fórmula vale para o bloco inteiro, não apenas para os pagamentos comuns. [1] [8]

Imagine B = 500000 e T = 2500000 bytes. O resultado é W = 4000000 WU. Outra composição pode ter B = 750000 e T = 1750000 bytes e chegar novamente a W = 4000000 WU. São cálculos ilustrativos, não medições de blocos. Ambos usam o mesmo peso, mas o segundo transmite menos bytes. Logo, dizer que um bloco cheio sempre tem 4 MB está errado. A quantidade de transações num bloco cheio também não é fixa. [1]

Um bloco não é apenas um conjunto de pagamentos. Há um cabeçalho de 80 bytes que contém, entre outras coisas, uma referência ao bloco anterior e um resumo das transações. Depois vem a quantidade de transações, codificada com CompactSize, uma representação de inteiros de comprimento variável. A primeira é a Coinbase Transaction, a transação especial de recompensa do minerador; aqui o nome não se refere a uma corretora. Todas essas partes entram na conta. Somar os pesos das demais transações ainda não dá o peso do bloco inteiro. [5] [7] [8]

Uma carteira é um aplicativo ou dispositivo para receber e enviar bitcoins. Ela costuma usar o tamanho virtual da transação em unidades vByte. Ele é o peso da transação inteira dividido por 4 e arredondado para cima. Isso permite comparar taxas pela capacidade ocupada. Somar esses tamanhos arredondados não dá o peso exato do bloco: a unidade é outra, houve arredondamentos individuais e falta a estrutura própria do bloco. Uma quantia alta não exige necessariamente muitos dados. [1] [8]

O peso não descreve todo o trabalho do nó. As regras pertinentes também estabelecem um teto de 80 000 unidades ponderadas de custo de operações de verificação de assinaturas. Não se trata simplesmente de contar todas as assinaturas do bloco. Tapscript, a linguagem de scripts introduzida com Taproot, tem um orçamento separado por entrada, a parte da transação que gasta moedas recebidas anteriormente; suas operações de assinatura não entram nesse limite anterior do bloco. BIP 342 descreve essa restrição diferente. Respeitar o peso não autoriza uma verificação arbitrariamente cara. [1] [3] [9]

Um explorador de blocos é um aplicativo para consultar transações e blocos de uma determinada rede. Em Bitcoin Core v29.0, getblock retorna, entre outros campos, size, strippedsize e weight: tamanho completo em bytes, tamanho sem witness e peso. Também pode aparecer chainwork, que expressa o trabalho computacional acumulado da cadeia, não seu peso em dados. No dia a dia, diferencie capacidade e preço: Block Weight limita o espaço do bloco; a taxa efetiva depende do tamanho da transação e da tarifa escolhida. Nenhum desses números promete sozinho um prazo de confirmação. [6]

Para ter uma visão mais completa, leia este verbete junto com vByte, Witness Data, SegWit, Guerra do tamanho dos blocos, Bitcoin, Full Node. Também há referências a este verbete em Signet, vByte, Witness Data, Ordinals Inscriptions.

DOC · 001BIP 141 — Segregated WitnessEspecificação DOC · 002BIP 144 — SegWit peer servicesEspecificação DOC · 003Bitcoin Core v29.0 — consensus limitsDocumentação DOC · 004Bitcoin Core v29.0 — validationDocumentação DOC · 005Bitcoin Developer Reference — Block chainDocumentação DOC · 006Bitcoin Core — getblock RPCDocumentação DOC · 007Bitcoin Core v29.0 — Block assemblyDocumentação DOC · 008Bitcoin Core v29.0 — Block and transaction weightDocumentação DOC · 009BIP 342 — Validation of Taproot ScriptsEspecificação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento