Block Weight & Witness Discount
Block Weight & The 4:1 Witness Discount
Rather than executing a risky hard fork to increase the raw 1 MB block size limit, SegWit introduced a new mathematical metric called Block Weight, measured in Weight Units (WU).
By redesigning how block capacity is calculated, SegWit effectively increased Bitcoin's transaction throughput while keeping UTXO storage costs sustainable.
⚖️ Defining Block Weight
Under SegWit rules, the strict 1,000,000-byte limit was replaced with an absolute block weight limit:
$$\text{Maximum Block Weight} = 4,000,000 \text{ WU}$$
For any transaction, its overall weight in Weight Units is calculated using a dual-factor formula:
$$\text{Transaction Weight} = (\text{Base Size} \times 3) + \text{Total Size}$$
The Variables Explained:
- Base Size (bytes): The size of the transaction excluding all witness data (metadata, inputs, outputs, amounts, and legacy scriptSigs).
- Total Size (bytes): The complete physical size of the transaction including all witness data (signatures and public keys).
🧮 Mathematical Proof of the 4:1 Witness Discount
We can rewrite the Weight formula to isolate the non-witness bytes and the witness bytes.
Let $\text{Base}$ represent non-witness bytes, and let $\text{Witness}$ represent witness bytes. Since $\text{Total Size} = \text{Base} + \text{Witness}$:
$$\text{Weight} = (\text{Base} \times 3) + (\text{Base} + \text{Witness})$$
$$\text{Weight} = 4 \cdot \text{Base} + \text{Witness}$$
This algebraic expansion reveals the core economic engine of SegWit:
- Every non-witness byte contributes exactly 4 Weight Units to the block capacity.
- Every witness byte contributes only 1 Weight Unit to the block capacity.
This mathematically establishes a 4:1 witness discount. Because signatures are four times cheaper than output scripts, transactions with large signatures (such as complex multisig scripts) are heavily incentivized.
🚀 Scaling the Virtual Block Size (vByte)
To make fee estimations consistent between legacy and SegWit transactions, wallets measure transaction sizes in Virtual Bytes (vBytes):
$$1 \text{ vByte} = 4 \text{ Weight Units}$$
$$\text{Transaction vSize} = \frac{\text{Transaction Weight}}{4}$$
📈 Real-World Capacity Limits
Because witness data occupies a substantial portion of any transaction, this discount effectively expands Bitcoin's on-chain capacity:
- Standard Tx Mix: Typically yields a virtual block size of 1.6 MB to 2.2 MB of raw transaction data.
- Extreme Witness Mix: If a block is packed with transactions containing massive witness payloads (such as large multisig spends or inscriptions), the physical block size can scale up to 4.0 MB on-chain, while still strictly satisfying the 4,000,000 WU limits!
- Legacy Node Safety: Because legacy nodes are stripped of the witness data before blocks are relayed to them, they see the block size as strictly under 1 MB, ensuring they never reject the block.
TeachMeBitcoin is an ad-free, open-source educational repository curated by a passionate team of Bitcoin researchers and educators for public benefit. If you found our articles helpful, please consider supporting our hosting and ongoing content updates with a clean donation: