Author: Juan Galt, Bitcoin Magazine; Compiler: Wuzhu, Golden Finance
In recent weeks, a debate about OP_RETURN has erupted in the Bitcoin industry and has now swept most discussion spaces in the industry. This topic is rich and complex, and many people have strong opinions on it.
OP_RETURN is an opcode in the Bitcoin script language that is used to store metadata or arbitrary data that is not related to the verification of Bitcoin transactions. Therefore, node operators can prune it without much problem, thereby more effectively managing spam while providing developers with a controlled environment to anchor data on the chain.
In order to reduce the harm of spam, the OP_RETURN controversy was recently triggered by a pull request submitted by Peter Todd to the Bitcoin Core code base. Proponents of the update attempted to remove the limit on the amount of arbitrary data that can be put in OP_RETURN by removing the memory pool policy rule (which limits arbitrary data in OP_RETURN to 80 bytes). Therefore, this will raise the limit to the upper limit of the consensus block size, that is, 1MB of non-segregated witness data. They argue that this limit is no longer effective in stopping spam and instead leads to more harmful behavior, such as padding UTXOs with data, which harms the interests of node operators.
In addition, the proposal removes the datacarrier flag, a configuration option that allows node operators to choose which transactions to filter from their local memory pool based on the amount of arbitrary data carried by the OP_RETURN.
The opposition, led by Luke Dashjr, not only wants to keep the OP_RETURN limit and datacarrier size, but also proposes a policy that further restricts arbitrary data and "non-monetary" transactions in the Bitcoin memory pool.
Both camps generally agree that arbitrary data on Bitcoin is bad for the network. They also believe that filters cannot possibly filter out all types of spam. They disagree on the effectiveness of these filters in reducing spam. They also disagree on the consequences of enforcing or removing these filters from the network, their impact on node operation costs, and their impact on mining centralization.
Author's note: Of course, not all supporters of the OP_RETURN change agree with all arguments in favor of this pull request, and not all opponents agree with all arguments against it. This article is just a summary of the various arguments (which may not be complete).
Support for Removing OP_RETURN Size Limits
This proposal, led by Peter Todd and supported by many Bitcoin Core contributors, represents a way to reduce the harm of spam and arbitrary data in Bitcoin.
Todd believes that the current OP_RETURN limit was originally established more than a decade ago to provide a safe and controllable arbitrary data space for spammers, but it is no longer applicable because some companies and enthusiasts have developed private memory pools directly for miners, such as MARA's Slipstream, which can bypass the memory pool policy.
The OP_RETURN limit was put in place after Satoshi left to protect the network from similar junk data, but back then it was a very different time, when blocks were rarely full, not to mention a high-fee environment. There were few tools to do block pruning back then, and the software was highly inefficient. Many optimizations have been implemented over the past decade, and their cumulative effect is influencing this debate.
As a result, the OP_RETURN limit was more effective and harder to bypass when it was originally created. Today, ambitious projects by NFT and arbitrary data enthusiasts are forced by current mempool limits to abandon OP_RETURN space and instead cram arbitrary data into the UTXO set. Unlike OP_RETURN or SegWit space, which can reasonably be removed from nodes, the UTXO set is typically stored in RAM, the most expensive form of memory. The UTXO set needs to be processed by nodes in order to verify the money supply and be able to verify the integrity of new transactions, which are essential elements of running a node, and without these elements, the masternode will lose most of its value proposition. Therefore, UTXO data stuffing increases the initial block download, overall sync time and hardware requirements, thus imposing significant costs on node operators, ultimately harming the decentralization of the Bitcoin network.
Finally, proponents believe that miners are "rational economic actors", an economic term referring to the need to optimize profits as much as possible in order to survive in a competitive market. Therefore, if mining non-standard transactions that meet consensus can give them an advantage, they will seize the opportunity.
As early as 2023, Luke Dashjr proposed a change that seeks to apply the data carrier memory pool strategy to arbitrary data (such as inscriptions) of Segregated Witness and Taproot, further limiting the options of spammers. Peter Todd opposed the PR, explaining: “The transactions targeted by this pull request are a very important source of fee income for miners. Miners are unlikely to give up this source of income. Censoring these transactions will only encourage the development of private mempools - which is harmful to small miners - while reducing the reliability of fee estimates.”
Support for Removing the Data Carrier Flag
Todd’s pull request does one more thing besides removing the OP_RETURN limit: it also removes the data carrier flag from the configuration options for node operators. Users of the Bitcoin Core node software can control the transactions relayed through their nodes based on a configuration option called the data carrier flag, which specifically controls the amount of data in OP_RETURN, and currently defaults to 80 bytes of arbitrary data.
Supporters argue that the flag is now obsolete and that the popularity of tools like mining pool MARA’s Slipstream program or Todd’s Libre Relay have simplified the inclusion of consensus-valid transactions even if they do not meet the “standards” of the mempool policy.
Consensus-valid non-standard transactions that conflict with mempool policy rules (such as the OP_RETURN limit) but do not violate any consensus rules can be directly included in Bitcoin as long as miners can learn about the transaction. Proponents argue that such a system has eliminated the controversial filter, making the data carrier flag irrelevant, especially after the default OP_RETURN size limit is removed.
Proponents argue that the flag only gives users a false sense of control and is a "gunmanship" - a tool that is extremely easy to abuse - and is useless to users in this case.
Finally, removing the data carrier flag along with the OP_RETURN limit can eliminate a recurring point of conflict and controversy in Bitcoin Core, as Bitcoin maximalists who support filters are not the only ones who have opinions on the matter or have the ability to rally support on the internet to oppose pull requests.
In 2023, a pull request was sent to Bitcoin Core to change the default mempool policy around routing naked multi-signature transactions. This is an old standard that is now used by NFT protocols such as Stamps to ensure that their arbitrary data can easily get on-chain and, better yet, cannot be easily modified. The pull request quickly devolved into an online war of words between "spammers" and supporters, resulting in the suspension of its integration into Bitcoin Core, just like Todd's pull request last week.
They believe that by removing the data carrier flag (which supporters say is irrelevant), this kind of farce can be calmed down and Bitcoin Core contributors can focus on other more pressing issues.
Opposition to Removing OP_RETURN Size Limit
The opposition - colloquially known as "Filterors" - is led by long-time Bitcoin Core contributor Luke Dashjr. They believe that removing the OP_RETURN size limit is a capitulation to spammers, that perfect filters are not necessary, and that the mere act of filtering sends a message to companies or projects that want to build arbitrary data-reliant systems on top of Bitcoin: build elsewhere, or find a better way.
They argue that Bitcoin is just a network for the exchange of money, and anything outside of that definition is spam. In their view, a monetary transaction is a Bitcoin transaction whose purpose is solely to transfer value denominated in Bitcoin between two users, and in return transfer goods and services off-chain.
According to Chris Guida, a Lightning Network developer and Bitcoin Knots supporter, there are roughly two formal definitions of monetary transactions on Bitcoin.
“I think there are actually two different definitions: One is about whether the transaction is actually using Bitcoin as a payment channel, rather than a database of a scam ‘product,’” he said, referring to NFTs, adding, “The other definition is actually ‘does it meet the 40/80 bytes in the OP_RETURN.’ If neither of those criteria apply, they consider it spam.”
NFT transactions or arbitrary data used to anchor second-layer protocols on top of Bitcoin are not considered monetary transactions in this sense, and therefore are considered spam, even though these second-layer protocols may be conducting various financial transactions.
In addition, filter supporters believe that Bitcoin Core should actively seek ways to prevent this behavior. They argue that spammers’ shift to UTXO padding is proof that filters are working, because the pressure actually pushes them to find other ways to spam the network. In other words, if filters don’t work, then spammers won’t look for more expensive areas to build their spam systems, such as UTXO sets.
Thus, the OP_RETURN limit should not only remain, but also be further reduced, perhaps returning to its historical 40 bytes. Additionally, the data carrier flag should be expanded to manage Segregated Witness and Taproot transactions. Both of these transactions are not limited within the block size limit and are being exploited by spammers, most notably the Inscriptions attack.
Finally, the filterists confirm that systems like Todd’s Libre Relay or MARA’s Slipstream can be countered in a number of ways, and they are not going to give up easily if Bitcoin Core continues on its current development path. Hence the growing interest in Bitcoin Knots. Bitcoin Knots is an alternative implementation of Bitcoin maintained by Luke Dashjr et al. that aims to allow Bitcoin users to run filters at their own will and combat spam. As of this writing, over 5% of Bitcoin nodes are running Bitcoin Knots, according to Luke’s network analysis.
Opposition to Removal of Data Carrier Flags
Filterers and Bitcoin Knots enthusiasts also defend data carrier flags in principle. They argue that with enough numbers, coordinated node operators can successfully filter certain types of spam, and even advocate for expanding the jurisdiction of data carrier flags, as reflected in a pull request submitted by Luke Dashjr in 2023. In that request, Segregated Witness (SegWit) and Taproot arbitrary data storage features would also be restricted by data carrier flags controlled by node operators; this is not currently the case.
This point in particular resonates with many, and a growing number of Bitcoin users are running the Bitcoin Knots implementation of Bitcoin, which contains such a mempool policy change while leaving all other Bitcoin Core code intact.
Some Bitcoin Knots proponents, such as Chris Guida, have begun discussing user-controlled relay policies or “modular filters.” These filters could be created by refactoring the mempool policy code and updated according to some actively managed template — an automated spam filtering algorithm that users could choose from a provider.
On X, he argued: “It’s often said that filtering spam is a ‘cat and mouse game’ where filters are somehow at a disadvantage.
I think that’s ridiculous. We can create filters as fast as new fungible token meta-protocols are creating new transaction formats, even before they go live on mainnet.”
While filter proponents acknowledge that spam controls have limitations, they insist that maintaining a hostile environment for spam-related software systems and business models is a good thing that needs to be maintained to discourage bad behavior, even if less price-sensitive versions are still sent directly to miners and paid to be included in blocks.