An Ocean Launch Post-mortem

Well, let’s just say the launch of Ocean from the social perspective was anything but smooth. The decision to filter out transactions conducting inscriptions should have been communicated clearly on launch day, instead speculation lead to a chaotic shitshow on Twitter. People were screaming about inscription censorship, while at the same time inscription transactions were present in the public block templates Ocean publishes. Then to top it all off, the first block they found was actually a template created by a test server that was connected to the production system when it shouldn’t have been, meaning the coinbase transaction didn’t trustlessly pay out miners on-chain like it should have.

Their second was found shortly after, and correctly paid out miners above the payout threshold non-custodially on-chain in the coinbase, so that problem at least has been resolved and their payout system is now functioning correctly. Bitcoin Mechanic, an Ocean employee, has clarified they do intend to filter inscriptions from their templates. So while the launch was fraught with problems and miscommunications to the public, they have officially sorted out the payout issues and actually been more lucky in block production so far than they should have been statistically with less than 1% of the network hashrate.

Censorship As A Distraction

I’m sure many people take issue with the decision to implement filtering of inscription transactions from their block template’s, especially in the context of portraying the pool as a step forward in improving Bitcoin’s censorship resistance. I personally do not like the decision either, just from the point of view of neutrality. How people choose to transact with their Bitcoin, as long as they are paying the fees and the transaction is valid under network consensus rules, should be entirely up to them. At the same time though, that argument is equally valid when it comes to miners (and mining pools) deciding what to include in their block templates, and what block templates to mine on.

Both Bitcoin Mechanic and Luke have publicly made this argument in regards to responding to claims of them engaging in censorship, and frankly speaking from a purely ethical point of view they are entirely right. No one is forced to mine at their pool, and no one ethically is under any obligation to use their resources or personal actions in a way that other people want them to.

Expecting miners to mine your transaction because of a moral or ethical obligation is not how Bitcoin works. Morality is not the foundation of Bitcoin’s censorship resistance, greed and economic self interest is. Bitcoin isn’t censorship resistant because of morality, or miners engaging in some ideological dogma, it is censorship resistant because if you the transacting user pays a high enough fee, some miner somewhere will mine it purely out of their own economic self interest. They might even hate you, or what you are doing, or look down at you as a disgusting animal. But if the fee is high enough, they will mine it because it is in their best financial interest to do so.

If that financial incentive alone is not enough to guarantee that transactions unwanted by some users, or even some miners, are included in the blockchain anyway, then Bitcoin is already fundamentally broken.

Stratum v2

Stratum v2 is not supported yet by Ocean, but it is according to them one of their high priorities to implement as software and miner firmware support is addressed as the current limiting factor. This would address many of the issues people have taken with Ocean regarding filtering out inscriptions from their block templates. Any miner who chooses to after they implement support can construct their own block templates and include whatever transactions they want while mining with Ocean, including inscriptions. Until they do however, Ocean currently publishes in real time the templates they are constructing and sending to miners. These can be viewed before directing even a single hash to the pool. 

Luke and Mechanic have taken a very ideological stance on the issue of inscriptions, and will not include them in pool constructed templates after testing their filters for it to ensure it does not create any invalid block templates in the course of filtering these transactions. After Stratum v2 is implemented they are literally handing the hashers at their own pool everything they need to mine templates in complete defiance of the ideological stance they themselves have taken. They have even explicitly confirmed that nothing will be done to reject or block templates including inscriptions that miners in the pool propose.

Whether you agree or disagree with the stance they have taken, this is completely ethically consistent with that stance. The decision of how to use your own resources is entirely up to you. They do not wish to include this class of transactions they disagree with in the templates they produce themselves, but they will not interfere with miners in the pool who take a different ideological stance on the issue.

Block Templates Are Only Half Of The Puzzle

People may look at Stratum v2 as some kind of solution to the censorship issue, and it partially does. After Ocean has integrated support any miner who wishes to construct their own block templates can do so, and include whatever they see fit in those templates. This still leaves the issue of economic coercion. Obviously Ocean has partially solved this issue with their non-custodial payouts in the coinbase transaction, but this still has scaling issues and limitations. P2Pool is a historical example of something that tried to function the same way that Eligius (and now Ocean) did with trustless payouts. Because of the fact that it was a decentralized protocol, it could not enforce minimum payout thresholds like Ocean does. This demonstrated the huge scaling issues involved with such a non-custodial payout scheme. Fragmentation of UTXOs collected by miners, leaving a huge cost to actually condense and use their mining payouts after receiving them. The opportunity cost of lost fees as larger coinbase transactions leave less room in a block for other fee-paying transactions. This is why Ocean implemented a minimum threshold like Eligius, they can hold onto funds below the threshold to aggregate them and pay them out as miners reach the threshold. This scheme also allows, through the publishing work histories publicly, transparent verification that the pool is paying out mining revenue correctly. 

Is this perfect? No. Does this make them custodial for smaller miners? Yes. It is a step in the necessary direction though. Proposals such as Braidpool seek to completely address this issue, by actually coupling a decentralized template construction mechanism with a fully decentralized payout mechanism handling the scaling issues of the coinbase transaction by integrating payouts over a second layer (Lightning in this case). This is the reason Ocean is planning on integrating Lightning for payouts of smaller miners. On-chain payouts in the coinbase will only scale so far, and will get less scalable as overall network hashrate grows and the fee market matures more creating consistently higher fee pressure. To my knowledge, Ocean isn’t planning a fully trustless and atomic payout scheme like Braidpool plans to implement, but even a basic Lightning withdrawal functionality allows them to minimize the time in which they are custodying miners funds, and the overall amount they will be custodying for smaller miners. Again, is Ocean perfect here? No. But they are pushing things in the right direction.

Death To The Mempool, Long Live The Mempool

With all of the above covered, there is a much more important issue that I think Ocean is paving the road in attempting to actually address. The mempool is dying, and what is killing it is essentially poorly aligned incentives. The recent rise of the popularity of Ordinals has drastically exacerbated this dynamic. When the mempool becomes unpredictable, or especially if you have a transaction that is non-standard (valid according to consensus rules but not relayed by standard node mempool policy) users have an incentive to attempt to propagate a transaction directly to a miner. Miner’s have an incentive to accept these transactions, as they represent income. These two incentives on both sides create a dynamic where followed through to its natural end, there is no public mempool anymore. This has huge implications for any type of second layer protocol or Bitcoin system that depends on observing the mempool to detect transactions it should respond to. Ocean’s launch focused on discussing the dynamics of this creating opportunities for mining pools, the ones who actually receive the transactions and out of band payments for them, to withhold this revenue stream from the actual miners and keep it for themselves.

The consequences of out-of-band payments and transactions on second layer systems is much more worrying and systemic than miners occasionally not making optimal profit from a block they mine. Integration of, and more importantly real adoption of, Stratum v2 by miners can be a powerful force in undermining and reversing this dynamic. Stratum v2 is designed to improve censorship resistance, allowing any individual miner to decide what transactions to include or not included in their blocks, but it has a more important side effect if successful: it encourages strategies and observations of how to construct maximally profitable block templates to be made public.

If you are a miner at a pool supporting Stratum v2 who constructs their own templates, and you find some strategy or optimization to squeeze more profit out of a block template, you want every other miner in your pool to be aware of and using this strategy. If someone else in the pool finds a block and isn’t using your strategy, you yourself lose the revenue a more optimal block template would have generated. This means you have to share it or you are actually acting economically irrationally.

Think of this in the context of out-of-band payments, and types of transactions that are effectively bypassing the mempool because of the many incentives to do so. A conventional pool presents a single entity that information must be transmitted to, and Stratum v2 turns it into a giant distributed group of people. It’s very easy to get a piece of information to a single person and have it remain a secret, but ten people? Twenty people? The larger the group gets, the more impossible it becomes to secretly transmit information to each of them and have it remain secret. Especially if you want to do so in a distributed way that doesn’t rely on any single point of failure.

The adoption of Stratum v2 could walk back the poisonous incentives leading to private relay mechanisms directly to mining pools, and shove it in the direction of a second parallel yet public mempool that accomplishes the goal of transmitting transactions not in-line with standard mempool policy to miners, but without the negative consequences of that occuring privately in a place not visible to other peers on the network.

This dynamic also has massive implications for threats such as MEV (Miner Extractable Value) that Bitcoin is inevitably going to have to deal with on some level, though likely much less complicated and costly to optimize than other systems like Ethereum. Miners engaging in MEV strategies want to keep those strategies private and hidden from other miners, but this becomes much more difficult in a Stratum v2 world. You still want to, and have an incentive, to try and keep that strategy hidden from other mining pools, but you also now have an incentive to convey those strategies (or at least the resulting block templates) to all of the other miners you are mining with. If you don’t, then you don’t profit from them when someone in your pool group other than yourself finds a block.

When you construct an MEV optimal template, you relay it to other miners in your pool. When something changes in the mempool that creates a more optimal template candidate, you construct that and relay it onward to everyone else. This dynamic makes it inevitable that either through carelessness, or even other miners spying by devoting a small portion of hashrate to your pool, the differences in those templates will leak out publicly. Being able to see the changes between templates as mempool contents change makes it easier to deduce and replicate whatever algorithmic strategy is being used to optimize MEV collection.

It’s not implemented and supported by Ocean yet, but the protocol isn’t ready for production. Anyone familiar with the recently launched DEMAND pool who has looked into it would know that their implementation of Stratum v2 is essentially a custom proxy server that has to be put in the middle between their pool and your mining device to get around the lack of support by mining hardware firmware for the protocol. Once it is implemented however, it opens a lot of doors to drastically improving the current incentive dynamics of the mining ecosystem.

Wrapping Up

While the Ocean launch was a minefield of goofs, and miscommunications, and people in the space taking issue with both of those things, the pool is now live and functioning. Everyone doesn’t have to agree with every stance they take, I myself do not agree with the decision to filter inscription transactions, but you are free to mine or not mine with Ocean. No one is forcing you to do that, or not do that. It is your own decision to make entirely yourself.

Disagreeing with their stance on things, however, should not detract from the face that they are actually stepping up to do something to address very serious incentive issues that have been growing in size in the mining industry. Are their solutions all encompassing, or perfect? No. But they are at least acting to do something where everyone else is just complaining and whining. Disagree all you want about how they are trying to solve these problems, but recognize they are actually trying.

That is more than most are doing. 

Share with your friends!

Products You May Like

Leave a Reply

Your email address will not be published. Required fields are marked *