Adding operation codes to Bitcoin can increase the types of functions users are able to perform, but choosing their size limits has been a topic of debate.
Listen To This Episode Here:
In this episode of “Bitcoin, Explained,” hosts Aaron van Wirdum and Sjors Provoost discuss OP_RETURN and what some have called the “OP_RETURN Wars.” More specifically, they discuss a blog post by BitMEX Research titled “The OP_Return Wars of 2014 – Dapps Vs Bitcoin Transactions.”
Van Wirdum and Provoost start off by explaining that OP_RETURN is an operation code (a piece of code for Bitcoin transactions) that will render invalid any transaction that includes it in an input. This means that outputs that include OP_RETURN are unspendable, which in turn means that Bitcoin nodes can safely remove such UTXOs from their UTXO set, which saves on storage.
Early in Bitcoin’s years, people started using bitcoin for more than just transactions. As one example given by Provoost demonstrates, someone uploaded the entire Bitcoin white paper onto the blockchain. The BitMEX post explains that Layer 2 protocols, like Counterparty, were rolling out decentralized applications on the blockchain. This type of non-transaction data was initially embedded in multisig transactions, but this meant that all Bitcoin nodes had to download, process and store this data forever, which comes at a cost.
Van Wirdum and Provoost explain that in 2014, Bitcoin developers agreed to let nodes process and forward transactions with OP_RETURN outputs to mitigate this problem. These transactions would be better for uploading data, since their outputs can be removed from the UTXO set.
The “OP_RETURN Wars” refer to a debate between Bitcoin developers and (most notably) Counterparty developers over the maximum size of such transactions. Provoost explains why the maximum of 40 bytes was initially chosen, why this was later increased to 80 bytes and how these considerations have changed over time.