Skip to content
Satoshi Gazette
Glossary

Virtual byte and weight unit

The units block space is metered in since SegWit: weight counts each non-witness byte as 4 units and each witness byte as 1, and virtual size is weight ÷ 4.

Protocol and network

Definition dated

also vbyte · vB · weight unit · WU · virtual size · vsize

SegWit, specified in BIP 141, replaced the old one-megabyte size limit with a weight limit. Weight counts each byte of a transaction's non-witness data as four units and each byte of its witness data, mostly signatures, as one. A block may weigh at most 4,000,000 units.

The virtual byte is weight divided by four, rounded up. It lets fees be quoted per byte as they were before SegWit: a transaction without witness data has the same virtual size as serialized size, and one with witness data has a smaller one. Bitcoin Core's relay policy can count a transaction as larger than its weight implies when it carries an unusually high number of signature operations.

The Network tab sizes the queue in virtual bytes, so its count of full blocks waiting is a count of whole millions of vbytes.

Common misreadings3

  • People say

    A block is limited to one megabyte

    Precisely

    Since SegWit activated in August 2017 the limit is 4,000,000 weight units. A block heavy in witness data can exceed a million serialized bytes.

  • People say

    A vbyte is a byte

    Precisely

    A vbyte is a quarter of the weight. A transaction carrying witness data has a virtual size smaller than its serialized size.

  • People say

    Mempool size in megabytes is memory

    Precisely

    mempool.space's vMB, like getmempoolinfo's bytes, sums virtual sizes. The memory a node uses for its mempool, getmempoolinfo's usage, is a different number.