A Knotty Irony
Bitcoin++'s Niftynei shares her thoughts on the OP_RETURN drama...
Bitcoin is a decentralized ledger. Its power comes from its ability to move value between any two people that are using the protocol, without having to ask a third party for permission to transact. To achieve this modern marvel, Satoshi Nakamoto invented a novel form of consensus, one that works so long as 51% of the network maintains their independence via mining.
The bitcoin protocol, unlike most other protocols like http or tcp which run the internet, doesn’t have a written specification. Instead the rules of how bitcoin works is embedded into code. That codebase we call bitcoin core.
Bitcoin core, as a project, is tasked with the responsibility of maintaining the network in an operational state. There are a few guiding principles which go into maintaining bitcoin’s implementation. These principles are occasionally tested.
For example, the blocksize wars was a test of the principles that bitcoin should follow from a resource consumption standpoint. That is to say, what kind of hardware would an individual need to personally own in order to be able to download and verify every block on the network. Some people believed that the ability of every man to run a node was less important than the number of transactions that bitcoin can handle in a second.
Others, the winning faction I should point out, believed that bitcoin could not be a success without keeping the storage requirements within the grasp of a man with a few hundred dollars they were willing to spend on a computer.
Decentralization at the node runner level was decidedly a central principle of the Bitcoin project. The blocksize wars were fought and the winners came out in favor of accessibility and “cockroach like” proliferation of nodes instead of transaction throughput.
For example, Jameson Lopp famously would publish reports on his attempts to start an Ethereum node from scratch. The hardware required was in the thousands of dollars. I’m not sure he successfully managed to sync the chain.
This is exactly the type of thing we want to avoid in bitcoin.
Which brings us to our current conundrum around op-return. The goal of changing the op-return rules is to preserve the ability of anyone to run a node. What’s the connection? Well, people want to put information inside of bitcoin transactions. You may disagree with this idea, but for them there is an economic rationale for doing it. They’re willing to pay good money to publish this information, much like someone might publish a classified ad in a newspaper.
The only problem is that how they choose to publish the data has real costs to the hardware required to run a node successfully (the amount of storage space and RAM your computer has). So bitcoin devs, in their desire to maintain the project in a state where it was still accessible to run, made a special carve out for data-only. This is called op-return.
It works because it allows nodes to effectively ignore the information contained in an op-return. This reduces the total amount of data a node needs to keep track of in working memory, which reduces the RAM requirements.
For the record, more people holding bitcoin, and more UTXOs being created, contributes to the resource requirements of a node. The goal is to get people to hold bitcoin but not use UTXOs for data. Op-return fixes this.
Except people couldn’t fit all the data they needed into 80-bytes, so they reverted to more resource intensive ways of publishing data. So the maintainers of bitcoin core, in order to head off potential loss of accessibility to running a node, opted to remove the relay restriction on op-returns.
I get that having data in blocks may be undesirable, but it’s not anything that can be stopped. Bitcoin core’s maintainers are working to preserve the ability of anyone to run a node, for the foreseeable future.
More people are running nodes now, because they want to make a statement about autonomy and choice. That ability is one that was fought for and continues to be defended by the maintainers of core. The recent op-return decision is one more example of the maintainers prioritizing ability to run nodes on cheap and accessible hardware over all other considerations.
More people are running nodes because of their decision to change op-return. That ability to spin a node up is exactly what the maintainers are safe guarding.
Speaking of decentralization, I think it’s quite ironic that more people are running nodes now in order to filter out transactions, because the act of filtering actually makes it harder for independent miners to compete for blocks.
By running a node that prevents the relay of transactions that are profitable for miners, you’re making it less likely that other nodes will be able to quickly verify blocks.
Every time a new bitcoin block is found, your node has to first get a copy of every transaction in the block. It verifies each of the transactions and then sends the block on to the next node in the network.
If you’ve ever played Base58’s Bitcoin at Work(shop), you’ve done this by hand. If transactions are missing from your node’s mempool, you’d have to request them from other nodes on the network. Until you’ve found them all, you can’t mark the block as valid. You can’t start mining on top of a block until you know it’s valid.
Not having transactions readily available means that your node is at a time disadvantage in hunting for the next block. As is any miner waiting for you to notify them of the current valid block. Requesting transactions means blocks move through the network slower, giving small miners less time to try finding a new block before more centralized miners that keep every transaction in their mempool.
OCEAN claims they’re aiming to help make mining more decentralized, and I believe they mean to do this. However their suggestion to filter out transactions leaves smaller nodes and Bitaxes at a disadvantage in terms of finding a block. Unfortunately this contributes to giving preference to larger miners who are more likely to have every transaction and be connected to more nodes so that they hear about blocks sooner.
Building your own block template is a great opportunity to filter out transactions. At the relay level, however, you’re only undermining the goals you set out to accomplish.
I fully believe in decentralized systems, as does every Bitcoiner I know. It’s incredible to watch the node running community grow and people feel empowered by helping keep bitcoin decentralized. If you’re not already running a Bitaxe, I’d recommend it. Filter the transactions going into your blocks your Bitaxe is mining if you want to have a say in data on bitcoin.
For the sake of maintaining bitcoin as decentralized system, however, I’d strongly suggest you reconsider filtering the mempool and restricting op-return data.