witness なしのサイズ B と完全サイズ T に対し W = 3 × B + T です。ヘッダーと coinbase を含むシリアライズ済みブロック全体を計算します。
B は witness を除く従来のシリアライズサイズ、T は完全なシリアライズサイズです。W = 3 × B + T は両者を組み合わせ、結果の単位はバイトではなく WU です。 [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
基本部分の1バイトは 4 WU です。witness シリアライズで追加された1バイトは 1 WU で、marker、flag、この部分の他のシリアライズ要素も含みます。 [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
BIP 141 は W ≤ 4 000 000 WU を要求します。等しい場合は有効ですが、手数料の増額、追加の Proof of Work、採掘者の同意でも超過は許されません。 [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — consensus limits] [Bitcoin Core v29.0 — validation]
例の B = 500 000、T = 2 500 000 では W = 4 000 000 WU です。B = 750 000、T = 1 750 000 でも同じ重量となり、満杯のブロックが常に 4 MB とは限りません。 [BIP 141 — Segregated Witness]
ブロックには80バイトのヘッダー、符号化された取引数、coinbase も含まれます。ヘッダーと取引数は基本データであり、他の取引の重量だけを足しても不十分です。 [Bitcoin Developer Reference — Block chain]
取引の vsize は、取引ごとに W / 4 を切り上げます。その合計はブロックの付加データの一部も含まないため、正確なコンセンサス重量の計算にはなりません。 [BIP 141 — Segregated Witness] [Bitcoin Developer Reference — Block chain]
Full Node は該当する署名とスクリプトを引き続き検証します。Witness は通信と計算を消費し、低い重量は費用ゼロや検証の任意化を意味しません。 [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — validation]
BIP 141 には重量とは別に署名操作コスト 80 000 単位の上限があります。すべての署名を単純に数えるものではなく、規則はスクリプト種類に依存し、新しい版には追加の独自制限もあります。 [BIP 141 — Segregated Witness] [Bitcoin Core v29.0 — consensus limits]
採掘者は運用上の理由で低い目標重量を選べます。そのテンプレートやノードのローカル方針はコンセンサス上限を変えず、特定取引の収録も保証しません。 [Bitcoin Core v29.0 — consensus limits] [Bitcoin Core v29.0 — validation]
Bitcoin Core v29.0 の getblock は size、strippedsize、weight を返します。chainwork は別物で、ブロックのバイト重量ではなくチェーンの累積作業量に関係します。 [Bitcoin Developer Reference — Block chain] [Bitcoin Core — getblock RPC]
理解を深めるには、この項目とあわせて次もお読みください Virtual byte (vbyte), Witness data, SegWit, ブロックサイズ戦争. 次の項目からも参照されています Virtual byte (vbyte), Witness data.