I really enjoyed the comparison Pearly makes in this article, but let's start with this quote Perley provides from Robert Michels' The Iron Law of Oligarchy:
The majority is thus permanently incapable of self-government...Thus the majority of human being, in a condition of eternal tutelage, are predestined by tragic necessity to submit to the dominion of a small minority, and must be content to constitute the pedestal of an oligarchy.
This is a pretty grim view of humanity, I think. But it's difficult to see many cases where it isn't the outcome. Perley explains how he sees the US government shifting over the last century and half from a more governance structure that was more responsive to the overt democratic will of its citizens to a place where power resides with a covert administrative state.
Perley provides charts showing increasing reliance on executive orders, more and more new federal agencies, and a decrease in the number of laws passed per year, but an increase in the number of pages per law.
As the federal government has accrued more and more power for itself, and the individual and states conversely ceded more and more ground, we have seen some parallel changes in the processes by which we as a population make decisions for ourselves.
I'm sold on this point. But you might wonder
What does this have to do with Bitcoin?What does this have to do with Bitcoin?
Perley makes a very nice comparison between the shift away from rule of law toward rule by administration of the law and the rule of block validation rules in Bitcoin toward a rule by mempool policy. Perley is particularly careful to note that he doesn't see anything nefarious in this shift, but rather that it is the natural trend in any large system of people.
Here's a nice comparison table Perley made:
| Administrative State | Mempool Policy |
| Regulations bypass legislation | Policy bypasses broad signaling via soft forks |
| Executive actions bypass public debate | Changes ship as bundled upgrades and configuration defaults |
| Omnibus / emergency legislation | Omnibus or emergency protocol changes |
| Insiders benefit from regulatory complexity | L1/L2 insiders benefit from policy complexity complexity |
| Advocacy via lawyers and social media | Advocacy via funding groups and social media |
Keeping these points in mind, he puts a chart of Bitcoin soft forks next to a chart of mempool policy changes in Bitcoin Core:
Changes to Bitcoin block validation rulesChanges to Bitcoin block validation rules
Changes to Bitcoin Core mempool policiesChanges to Bitcoin Core mempool policies
It is a little hard to see because the x axis in these charts is not consistent, but it does kinda look like fewer changes are made to Bitcoin via soft fork and more changes are being made to mempool policy. Does this mean that we're trying to implement changes without overt changes to consensus rules?
Perley describes the benefits of effecting change via soft fork:
In order to avoid an inadvertent split, the process for deliberation and coordination is much more important for consensus changes than for policy. Miners and nodes, no matter whether they are in favor of a consensus change or not, largely want to avoid activating one unless and until enough of the network will accept the same blocks they will accept. Conversely, they will also more likely than not accept a change the network has activated, whether or not they politically supported it, if that’s where the economic activity is.
While difficult to change on the surface, policy rules ultimately are easier to alter:
Policy changes have proven nearly as difficult to change (consider the decade-long debate over opt-in RBF) and hardly without controversy. Their rules, however, can be changed with the proverbial “pen and a phone” where a Bitcoin Core release can change the policy incentives upon which well-established businesses depend, almost overnight.
Because they are easier to alter, the temptation is to use mempool policies to nudge the network into the things we want to see rather than doing the hard work of building consensus around the changes that need to be made.
Soft fork deployment asks more of the community in terms of participation, communication, and coordination than any policy change. The legibility of the process brings legitimacy to the final decision, whether the activation succeeds or not. It allows the community to sharpen its muscles of persuasion and develop its collective analytical mind. Opaque governance systems invite lazy thinking and mob rule. This amounts to a type of social DoS attack we’ve seen against core developers, where a position gains perceived legitimacy from the volume and passion of its supporters. This can become self-perpetuating, where the only defense against such positions is to have an even louder and more passionate counter-position.
The reality is that in the majority of cases, whether we’re talking about legislatures, regulators, core devs, soft fork proposers, or node runners, most people are behaving according to amoral incentives. The real responsibility doesn’t lie with “the other” to behave in the way we want, but rather with each individual to hold themselves up to a higher standard of responsibility of persuasion and compromise rather than coercion. Long-term anti-fragility comes from making hard decisions the hard way rather than bowing to the incentives of easy change and easy blame.
The comparison to the US government didn’t seem relevant at all.
Mempool policy changes are easier than consensus changes because just a small minority adopting a more permissive behavior de facto establishes the policy. Similarly a small minority rejecting or lagging behind in the adoption of a more restrictive policy de facto vetoes it. A state in which there is a sufficient financial incentive for some group to adopt a more permissive policy is inherently unstable in the long-term.
The comparison of policy changes with softforks also strikes me as a false dichotomy, because policy changes by their very nature do not require a change to the consensus rules.
As I remember it, tx sponsors didn’t garner much support because being able to bind any transaction to any other transaction would open up an entire new range of pinning, transaction churn, and denial-of-service concerns, and likely would have made the blockspace market drastically more complex.
I must have shilled this here before, but Gloria and I wrote a whole series on mempool policy that might be of interest to a voracious reader such as @Scoresby:
https://bitcoinops.org/en/blog/waiting-for-confirmation/
I really enjoyed Waiting for Confirmation. it's an excellent piece of work!
It's interesting how so many people (myself at times included) get caught in thinking that policy can do more things than it actually can.
Part of the problem may be that since policy can be used for DoS protection (https://bitcoinops.org/en/newsletters/2023/06/14/#waiting-for-confirmation-5-policy-for-protection-of-node-resources), there is an assumed extension that policy can be used to "enforce" preferences on the network.
In my comment quadratic hashing type transactions (#1493225) I was attempting to refer to those maximally computationally intensive transactions referred to in Waiting for Confirmation. I have a memory of Steve Lee at a bitdevs several years ago discussing with some passion the need for such transactions to not be mined. My impression was that policy defaults were also mentioned as a way to assist with this.
If it is the case that policy can discourage such quadratic hashing transactions, it's not hard to see how the BIP 110 filterers think that they can discourage transactions with policy choices.
I remember a very helpful comment you made on here some years ago in response to a question I had about whether one could "enforce" a soft fork with policy. I believe your answer was that it would not work because all it takes is one miner to mine a block violating the fork and the thing falls apart. (your answer was much more eloquent and probably included other helpful details).
So, the question I think Perley needs resolved is this: can policy choices of any given node or nodes impose their will on other nodes?
I appreciated @optimism's response that
Perhaps this is the point that confuses people like Perley and myself (if Perley is confused, and it's not just my own misinterpretation of what he said): we think that because a permissive policy can "impose" their will on other nodes that have more restrictive policies (impose isn't the right word, because they are just following the block validation rules all nodes agreed to), we succumb to the idea that it could work the other way too: a restrictive policy could be imposed on nodes with less restrictive policies.
The caveat is: if there are miners willing to mine it. Some of the pool operators are closely following default policy, and others are much more permissive. I still think that this pluralism is the feature of Bitcoin.
But what this means practically: if only 10% of the hashpower will mine your default-non-standard tx, it'll on average take 10x longer for your transaction to be included. I remember someone experimenting a year or 2 ago (iirc in BitVM context, not 100% sure though) and waiting 2+ weeks for a larger non-standard tx to be mined. So you'll have to be patient, pay premium, actively rebroadcast, do some preferential peering, and so on.
I did this math multiple times but I suck at it, so do correct me if I fuck up here. If you want to fully restrict a peer from propagating across 125 connection slots through a policy, with 99% certainty, you need 0.991251=99.991% of the network enforcing your policy. For 80% certainty, you need 99.821%... for a 50/50 shot, 99.447%...
Which is why it doesn't work the other way around.
Exactly what @optimism says here: policy is capable of discouraging new behavior from taking a first foothold, or as long as almost the entire hashrate does not accept the new behavior. Low-feerate transactions had been propagating on the network for years before the sub-sat-summer, but when one miner started including the low-feerate transactions the behavior was adopted quickly by a larger part of the network.
I don’t have the exact numbers on hand, but I agree with Optimism that a surprisingly low adoption among the node population is sufficient for transactions to propagate somewhat reliably, even more so if they are preferentially peering. Laurent had some interesting simulation results regarding transaction propagation here: https://x.com/LaurentMT/status/1973416866212180089.
https://twiiit.com/LaurentMT/status/1973416866212180089
I suck at the math worse than you but came to the same conclusion.
What I find fascinating is how many people believe wholeheartedly in the efficacy of rule enforcement by policy -- despite it's rather weak abilities.
That’s part of why it works at all! (^_^)/
If only I could change regulations as easily as I could change the Bitcoin Core default config.
Perhaps the analogy holds better if we talk about changing defaults in widely distributed clients
Why?
For instance, if one is a bip110 person, one might feel that the defaults are hugely important to you. And that exerting influence over what those defaults are is difficult.
I don't think it makes sense, but I've heard Steve Lee make a similar argument about defaults around some of the quadratic hashing type transactions. That there need to be defaults that don't accept such transactions so that miners won't build blocks with them.
As I write it out here, it doesn't sound like a very strong argument.
You may be thinking of the new policy Bitcoin Core v30 introduced to restrict the number of signature operations permitted in legacy script. The idea here is to discourage at the policy level in advance of BIP54 introducing a consensus rule that elevates the same limit to a consensus rule.
I think what Murch wrote here is exactly the reason why "the defaults are hugely important" is only relevant if (a) the defaults are enforced (spoiler: they are not) or (b) you are looking to restrict:
Note the direction: the more permissive relay policy always wins (as long as there's a miner with an as permissive inclusion policy.) This means that policy is largely meaningless in the presence of a desire to make it more permissive. It also means that policy doesn't work for introducing restrictions. At most: discourage.
The most important thing is that policy is a feature of software, not protocol. Either it's configurable/adjustable from the default (preferable) or one can just have a patch / alt client. Not to influence what gets mined, but what your own node relays / includes in block templates.
Is there any case nowadays to be made for uniform mempool that does not come from a telling-other-people-what-to-do philosophy? If not, then the only important thing is that you can do whatever the fuck you want.
I see the analogy, but I'm not sure how accurate it is in practice.
The difference between mempool policy and the administrative state is that the administrative state has the power of coercive force.
Whether I'm a user of bitcoin or a miner, if I don't like the mempool policy of some nodes that I'm connected to, I can pretty easily opt for another set of nodes.
Obviously, there are a lot of reasons why switching to another set of nodes isn't easy. Network externalities can reinforce the dominance of one group of policies, and switching can be costly to miners if it increases latency.
Even so, I think the option value to switch enforces some discipline that the administrative state doesn't have. I suppose democratic elections are supposed to be the force that disciplines the administrative state; and in a way, they are. Trump's gutting of the bureaucracy is one such example. But elections seem to rely on another collective process and only come about every couple of years; switching node relays is something that a person can do individually and instantaneously.
You make a good point. I was thinking something like this while reading his piece (less fleshed out, though).
I think that Perley might argue that his analogy is about how decision-making happens and not necessarily as good when it comes to how rules are actually enforced. But they seem pretty closely related to me.
Every node has a mempool policy. What's the problem?
Police y