Для розміру 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.