Для размера B без witness и полного размера T действует W = 3 × B + T. Расчёт охватывает весь сериализованный блок, включая заголовок и coinbase.
B — размер исходной сериализации без witness, T — полный размер. W = 3 × B + T объединяет оба значения и даёт WU, а не байты. [BIP 141 — Segregated Witness] [BIP 144 — SegWit peer services]
Базовый байт стоит 4 WU. Байт, добавленный сериализацией witness, стоит 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]
getblock в Bitcoin Core v29.0 возвращает size, strippedsize и weight. chainwork означает другое: накопленную работу цепочки, а не байтовый вес её блоков. [Bitcoin Developer Reference — Block chain] [Bitcoin Core — getblock RPC]
Для полной картины прочитайте эту статью вместе с Virtual byte (vbyte), Witness data, SegWit, Война за размер блока. На эту статью также ссылаются Virtual byte (vbyte), Witness data.