The Pile
non-monetary data on Bitcoin, measured from a full node
Inscriptions
Files tucked inside transactions. The transaction that writes one exists only to do that, so all of it counts — about half is the file, half is the wrapper around it.
- Counted
- The whole transaction that writes an inscription
- When an inscription is moved: the inscribed UTXO going in, and the one it becomes
- Not counted
- The transaction before it. Every inscription needs a setup transaction first. It looks like a normal payment, so nothing identifies it. This is the biggest thing we miss
- The rest of a move. Fees and change. A transaction moving an inscription might be doing ordinary business too, and there is no way to tell
- OP_RETURN inside it. Counted under OP_RETURN instead, so it is never counted twice
OP_RETURN
Bitcoin's built-in slot for attaching data to a transaction. An OP_RETURN output can never be spent — anything sent to one would be burned, so in practice nothing is. None of it is money.
- Counted
- Every OP_RETURN output on the chain, at the size a node stores it
- Not counted
- The rest of the transaction. It is usually moving money too
- The one in every coinbase. That is protocol bookkeeping, not data someone added
Chainstate
Every inscription sits on a UTXO worth a few hundred satoshis. That is less than the fee to spend it, so it never moves — and every node keeps it in the UTXO set, forever.
- Counted
- Inscription UTXOs of 1,000 satoshis or less
- Not counted
- Change sent back to whoever made the inscription. That is normal money
- UTXOs that merely descend from one. Being downstream of an inscription does not make a UTXO an inscription
Change is counted under Inscriptions but not here. That is on purpose: the inscription caused those bytes to be written, so they count there — but the UTXO itself is money and will be spent, so it is not a permanent burden on every node.
Nothing is counted twice. An inscription transaction is counted once. OP_RETURN is counted only outside those transactions. Chainstate is a separate database — a node really does store the same output once in its block history and once in the UTXO set, so counting both is counting what the node holds.
Every figure is a floor. Setup transactions are missed, moves and chainstate are counted at their minimum, and data hidden in fake public keys is not detected yet. Every block is read from a full node — no sampling, no third-party data. The long version is in the repository: METHODOLOGY.md · source and tests at github.com/bretstu/thepile.