Effect is the effect. Write a 1 MB inscription, pay for 0.25 MB, externalize the difference to every node on Earth, forever.
Bitcoin has two ways of counting the bytes in a block. Most users only ever see one of them.
The first is raw bytes: the actual size, on disk and on the wire, of the serialized block. This is the number every full node stores, every full node transmits, and every full node must keep valid for the lifetime of the chain. It is the physical size of the object.
The second is the vbyte — short for virtual byte, sometimes vsize. The vbyte is the number the wallet quotes, the fee market quotes, and the block explorer displays. It is the unit of every fee in modern Bitcoin: sat/vB.
For blocks with no SegWit transactions, the two numbers are identical. For blocks with SegWit transactions, they are not. The vbyte is computed by taking the block weight, separating the non-witness portion (which counts four weight units per byte, as in pre-SegWit Bitcoin) from the witness portion (which counts one weight unit per byte, post-SegWit), and dividing the total by four:
Every byte of witness data is divided by four. Every byte of non-witness data is not. The witness byte costs a quarter of the non-witness byte in vbytes, but the same as the non-witness byte in raw bytes, in disk, in RAM, in bandwidth, and in validation. The discount is applied to the price signal. It is not applied to the object.
Take the simplest possible inscription. A 1 MB image, wrapped in a witness structure, packed into a single transaction. The writer attaches a fee, broadcasts the transaction, and a miner includes it in a block.
What the writer pays. The fee is denominated in sat/vB. The transaction's vsize is approximately 0.25 MB: 1 MB of raw witness data divided by four, plus a few hundred bytes of non-witness overhead. At a representative fee rate of 10 sat/vB, the total cost to the writer is on the order of 2,500,000 sats — roughly $20 at typical prices. The wallet displays this number. The block explorer displays this number. The miner's revenue column displays this number.
What the network stores. The block is 1 MB larger than it would have been. Every full node on Earth accepts the block, validates it, writes it to disk, and serves it to peers. From this block forward, every node — forever — carries the 1 MB of witness data in its block storage, in its UTXO commitments, in its block index, and in the chainstate it serves to new nodes syncing the chain. The chain grows by 1 MB. The 1 MB is unprunable, unerasable, and unforgeable. It is part of consensus history.
The gap. The writer paid for 0.25 MB. The network stored 1.00 MB. The 0.75 MB in between is uncompensated. It is not paid for by the writer's fee. It is not paid for by the miner's revenue. It is not priced anywhere in the consensus rules, the fee market, the wallet UI, or the block explorer. It is paid for, in storage and bandwidth and validation cost, by every full node operator who has ever run Bitcoin Core, present and future, in perpetuity.
This is not a thought experiment. The current chain's largest inscription-era block (height 836,903, year 2024) is 3,993,936 bytes of raw serialized data, priced as 0.99 vMB. The writer paid for 0.99. The chain stores 3.99. The factor is 4.03×.
To the writer, the vbyte is the only number that matters. The wallet quotes the fee in sat/vB. The block explorer reports the block's vsize. The mempool accepts or rejects the transaction based on its vsize against the weight cap. The miner's transaction-selection algorithm sorts by sat/vB. Every layer of the modern fee market is denominated in vbytes.
This is not a coincidence. The vbyte was designed to be the fee-pricing unit. SegWit's 2017 activation introduced the witness discount and the vbyte as a single change: witness data is cheaper to include in a block, so the unit that prices block space is calibrated to make the discount visible. The wallet says your transaction costs X sat/vB. The user reads cheap. The user does not read I am paying for 25% of the persistence cost of the bytes I am enshrining.
The effect is the effect. A 0.99 vMB inscription at 10 sat/vB is priced as cheap. A 3.99 MB inscription at 10 sat/vB is priced the same. The 0.75 MB gap per MB of witness data is the same in both cases: invisible, because the unit that prices block space is the unit that hides the persistence cost.
The chain has filled to 99.5% of the witness-discounted cap in the current 2024–2028 halving epoch.[1] The 0.5% slack is the floor of the fee market — the minimum fee a miner will accept for the marginal byte. The constraint is binding. The price signal is wrong. The chain has reached the limit of what the witness discount will permit, and it has done so without ever making the writer pay for the persistence of the bytes the writer is enshrining.
The fee market prices block space. It does not price persistence. The two are unrelated.
A block space is a one-time unit: the bytes fit into a 4 MB weight envelope, the miner collects the fee, the block is included, and the transaction is done. The fee is paid. The unit of space is sold. The accounting closes.
Persistence is not one-time. The byte that lands in a block at height h is carried by every full node that has ever validated the chain, by every full node that will ever validate the chain in the future, and by every lightweight client that depends on those full nodes to know what Bitcoin's history is. The byte is replicated. The byte is indexed. The byte is served. The byte is committed to the chainstate. The cost is paid in disk, in RAM, in bandwidth, in validation CPU, and in operator time, and the cost is paid forever.
The Landauer attack article frames this in thermodynamic language.[2] A bit of information that is committed to a substrate that cannot opt out of storing it has been made thermodynamically permanent. The persistence of that bit is a debit against the universe's energy budget, and the bill is paid by the nodes, not by the writer.
The witness discount is not the cause of the Landauer attack. The Landauer attack is older than SegWit — it is the natural consequence of a system that guarantees permanence but does not price it. But the witness discount is the amplifier: the four-fold under-pricing of witness bytes in the fee market is the lever that turned a theoretical gap into a 99.5% utilized subsidy for non-monetary data. The cap is being filled. The bill is being externalized. The writer pays for a quarter of what the network stores.
The witness discount is one of two ways Bitcoin encodes the block-size limit. Both ways resolve to the same number. The protocol already knows the rule. The rule has been in the source code, in two different code paths, since SegWit activated in 2017.
Pre-SegWit, the cap was a raw-byte cap:
Post-SegWit, the cap is a weight cap, with the witness discount applied:
The two derivations are not equivalent in their effect on the chain. The first caps raw block size at 1 MB. The second caps vsize at 1 MB — which permits raw block size up to ~4 MB, because witness bytes count at a quarter of their weight. The 1 MB number appears in both code paths. The chain's actual behavior is determined by which code path the protocol enforces.
Post-SegWit, the protocol enforces the weight cap. Raw block size has been unbounded since 2017, with the witness discount as the multiplier. The 4× inflation in raw bytes — the same 4× that produces the 0.75 MB gap — is the gap between the cap the protocol writes and the cap the protocol enforces.
What this looks like across real history. The empirical M(t) = τt / Wt for every block in the dataset (output of compute_m_max.py, which reads raw blk files). The red Satoshi-design step function is the rule the pre-SegWit code path encodes; the gold line is what the chain actually produced. Pre-SegWit, the gold line touches the red line. Post-SegWit, the gold line climbs toward the purple step — the four-times-larger cap the witness discount permits — and effectively reaches it in 2020–2024 (99.7% of the SegWit 4× cap) and 2024–2028 (99.5%):
The 0.75 MB gap is closed by the simplest possible change: enforce the raw-byte cap the pre-SegWit code path already encodes. Set MAX_BLOCK_SERIALIZED_SIZE = 1,000,000 as a consensus rule, and remove the witness discount from the block-weight calculation. The witness data counts at the same rate as the non-witness data: one byte, one weight unit, one raw byte, one vbyte.
Under this rule, the vbyte becomes the raw byte. The fee market's price signal aligns with the persistence cost. A 1 MB inscription costs 1 MB of fee, not 0.25 MB. The writer pays for the bytes the network stores. The 0.75 MB gap closes.
This is the rule the protocol already implies. Stated in the only form that matters at validation: a block is valid if and only if the bytes it commits to the chain are backed by satoshis at the rate set by the 1 MB cap and the current subsidy. The pre-SegWit code path encodes this directly. The post-SegWit code path encodes it in two steps (weight cap divided by witness scale factor), and the witness discount is what lets the two steps drift apart from the raw-byte accounting the storage cost actually depends on. The fix collapses the two steps into one and the drift disappears.
The empirical check is sharp. The 2012–2016 pre-SegWit era had a 1 MB raw cap, no witness discount, and a 25 BTC subsidy. The largest block in the era touched the cap exactly: 999,985 raw bytes, at height 349,755. The rule's pre-SegWit prediction is 0.000400 bytes/sat. The observed M at height 349,755 is 0.000400 bytes/sat. The chain is satisfying the rule. The rule has been in the code since 2010. The chain has been satisfying it whenever the code path that enforces it is the one that runs.
The cumulative version of the gap. Two lines, both starting at zero at genesis. The gold line is the chain as it actually is — running sum of every block's raw bytes. The red dashed line is the same sum, but with every block that exceeded 1 MB clamped to 1 MB. Pre-2017 the two lines sit on top of each other (no SegWit, no over-1 MB blocks). Post-2017 they fan out; the gap is the cumulative externality:
Bytes are not abstractions. Every byte the chain carries is a piece of matter — electrons, magnetic domains, the orientation of a microscopic grain of rust on a hard drive platter somewhere. Bytes were not created from nothing; they were committed, by consensus, and they will be carried by every full node, for as long as the network exists.
What does that cost, in physical terms? The Landauer principle[3] gives the answer. A bit of memory that is forbidden from being erased carries, at minimum, an energy debt of kB · T · ln 2 — where T is the temperature of the system and kB is Boltzmann’s constant. The lower the temperature, the cheaper the bit. The higher the temperature, the more it costs. The bill is not zero at any temperature.
Energy has a mass, E = mc2. Whatever the Landauer cost is in joules, it is not zero grams. Take the worst case — the highest temperature physics allows — and the bill works out to 1.36 × 109 joules per bit, or 120.7 micrograms per byte in mass units. Multiply by the chain’s bytes, and the chain has a mass.
Applied to the 951k-block chain:
| Quantity | Raw bytes | Mass equivalent (worst case) |
|---|---|---|
| Chain (SegWit, 951k blocks) | 743 GB | ~90 t |
| Chain (Satoshi design, 1 MB cap) | 558 GB | ~67 t |
| Externality (gap) | 185 GB | ~22 t |
22 tons of what? Not a physical weight — the hard drives still weigh kilograms, not tons. It is the absolute ceiling on the cost of making the witness-discounted bytes un-erasable, expressed in mass units via E = mc2, evaluated at the highest temperature physics permits. At room temperature, the actual joule cost is smaller by 30 orders of magnitude; the chain “weighs” essentially nothing in practice.
What matters is the gap. The 1 MB cap is the difference between the universe carrying 90 tons of persistence debt at the ceiling and 67 tons — a saving of 22 tons that the fee market did not pay for.
From genesis (height 0, January 2009) through height 481,823 (August 2017, the last fully pre-SegWit block), the chain enforced the 1 MB raw cap with no witness discount. Across 481,823 blocks, the empirical mass-to-value ratio never exceeded the rule's prediction. The 2012–2016 row of the calibration table is at the cap. The 2009–2012 row is at half the cap — the early chain was small, the subsidy was 50 BTC, and the rule's predicted ceiling is 0.0002 bytes/sat. The observed max is 0.0001 bytes/sat. The chain did not approach the ceiling because the demand for block space was small, not because the rule was not enforced.
Post-SegWit, the rule stopped being enforced. The same rule predicts a ceiling of 0.0008 bytes/sat in the 2016–2020 era, 0.0016 bytes/sat in the 2020–2024 era, 0.0032 bytes/sat in the 2024–2028 era. The observed maxima are 0.0019, 0.0064, 0.0127. The chain is 2.4×, 4.0×, 4.0× over the ceiling. The 4× factor is the witness discount. The 0.75 MB gap is the witness discount. The Landauer attack, at 99.5% utilization of the witness-discounted cap, is the witness discount.
The 0.75 MB gap is not a thermodynamic abstraction. It is a unit-conversion artifact. The unit that prices block space is the unit that hides the persistence cost. The fix is to use the same unit for both.
mass-value-bound-951k.json.gz dataset, 2024–2028 halving epoch: p99 of block weight / 4,000,000 weight cap.