Rethinking “Incentive Compatibility” Within the Bitcoin Protocol
As we debate mempoolfullrbf, and I familiarize myself with related PRs from engineers trying to reign in all of the possible behaviors that make it inconsistent, I can’t help but think about how I see people using the term “incentive-compatible” and how it seems to be awfully presumptive.
The idea that a single Bitcoin transaction can be “incentive-compatible” by simply restricting it to having a higher fee or fee rate is theoretical, likely narrow, and not totally objective. RBF is inherently a fee-minimization tool, which as a concept, as I understand “incentive-compatibility” to be about miners in this context, makes RBF to be anti-incentives; miners are fee maximizers.
Miners want the most fees per block, and per lifetime, do they not? If miners, and the mempool, are prioritizing for the smallest txns with the highest fees, over the longest acceptable amount of time, this may conflict with extra-mempool behaviors that result in more txns per block / per lifetime.
If this isn’t making sense yet, let me summarize by how such a problem would express: a per-transaction fee-minimized, fully replaceable mempool as policy, that appears to always require the highest fee per txn, but ultimately includes less txns per block and less fees per lifetime. Basically, less use cases, less users, less txns — all to enforce a misunderstood theory and predictive speculation of what people want out of the system and what miners will do about it.
Simply, we probably want designs that fill blocks, and we don’t need to do anything at all to facilitate bidding on a use case like replacement.
Bidding does not require protocol enforcement, it is miner-subjective. So why are we pursuing it? Why do we even have RBF? Why are we trying to clean up all of the mess RBF creates with more and more code? If bidding is already accepted as incentive-compatible, and Bitcoin already allows setting a fee, then replacement requires no special code at all.
Market-Compatible? User-Compatible?
I would think a holistic definition of what is incentive-compatible would be something more like what is “market compatible” and enables the complementary goals & incentives of every user in the system to make it thrive.
It has been shown that users control Bitcoin (UASF) and thus ultimately miners would be incentivized to do what users want, up to the point of inability or loss. Correct?
So, in contrast, how would the opposite, a user-compatible design, express? Well, I think the idea of txns being able to signal intent and desired behavior is more interesting (more useful) than a mempool that overrides all intent with RBF, and possibly more incentive-compatible than mempoolfullrbf as concept.
Since we can’t be sure what the market wants, but we can be sure that the more users we have, making the most possible txns, at the highest possible prices, will yield the most valuable Bitcoin, and thus the most hashpower, we could entertain giving users the most ways to express their intent, the most flexibility.
The most basic design would be to simply have no mempool policy at all, and let market incentives emerge on their own, but we have a status quo to consider, and most users do not have the technical expertise to express their own policies with misc patches and hacks of their Bitcoin Core software.
I know this is a bit of a high-level abstract perspective, but I think it is important to respect such dynamics when making smaller decisions. It certainly is not our charge to prioritize what miners want any more than any other user type, nor is it within our ability to predict the future or fully model incentives of all players across all use cases.
I know some of you may scoff at my bias for use cases like zero-conf, but what I am trying to convey is a possible folly in active management, speculation, and misapplied game theory that may permeate many Bitcoin Core decisions and designs, even beyond the mempoolrbf / zero-conf debate.
So, what to do?
—
John Carvalho
CEO, Synonym.to