Para o tamanho B sem witness e o tamanho completo T, W = 3 × B + T. O cálculo cobre todo o bloco serializado, incluindo cabeçalho e coinbase.
B é o tamanho da serialização original sem witness e T o tamanho completo. W = 3 × B + T combina ambos os valores e resulta em WU, não bytes. [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
Um byte base custa 4 WU. Um byte acrescentado pela serialização witness custa 1 WU, incluindo marker, flag e outros itens serializados dessa parte. [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
BIP 141 exige W ≤ 4 000 000 WU. A igualdade é permitida; tarifas maiores, mais Proof of Work ou aprovação do minerador não justificam ultrapassar o limite. [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — consensus limits] [Bitcoin Core v29.0 — validation]
Os valores ilustrativos B = 500 000 e T = 2 500 000 dão W = 4 000 000 WU. B = 750 000 e T = 1 750 000 dão o mesmo peso; um bloco cheio não tem tamanho fixo de 4 MB. [BIP 141 — Segregated Witness]
Um bloco inclui cabeçalho de 80 bytes, quantidade codificada de transações e coinbase. Cabeçalho e contador são dados base; somar apenas pesos das outras transações não basta. [Bitcoin Developer Reference — Block chain]
O vsize arredonda W / 4 para cima para cada transação inteira. Somar esses tamanhos arredondados também omite parte da sobrecarga do bloco e não calcula exatamente o peso de consenso. [BIP 141 — Segregated Witness] [Bitcoin Developer Reference — Block chain]
Um Full Node ainda verifica assinaturas e scripts pertinentes. Witness consome transmissão e computação; peso menor não significa custo zero nem verificação opcional. [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — validation]
BIP 141 também limita custos de operações de assinatura a 80 000 unidades. Não é uma simples contagem de todas as assinaturas; as regras dependem do tipo de script e versões mais novas têm outros limites próprios. [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — consensus limits]
Um minerador pode escolher peso alvo menor por motivos operacionais. Seu modelo ou a política local de um nó não mudam o máximo de consenso nem garantem incluir uma transação específica. [Bitcoin Core v29.0 — consensus limits] [Bitcoin Core v29.0 — validation]
getblock no Bitcoin Core v29.0 retorna size, strippedsize e weight. chainwork é diferente: refere-se ao trabalho acumulado da cadeia, não ao peso em bytes de seus blocos. [Bitcoin Developer Reference — Block chain] [Bitcoin Core — getblock RPC]
Para ter uma visão mais completa, leia este verbete junto com Virtual byte (vbyte), Witness data, SegWit, Guerra do tamanho dos blocos. Também há referências a este verbete em Virtual byte (vbyte), Witness data.