How do these proposals compare?
I’m developing things on top of Lightning so I’m not a low level guy.
How do these proposals compare?
I’m developing things on top of Lightning so I’m not a low level guy.
At a high level, each approach is attempting to answer the question:
How do we make sure incentive compatible transactions can be mined without introducing transaction relay that isn’t “paid for”? This also known as the “free relay problem”.
The “free relay problem” becomes a problem if people are able to make transactions that enter into everyone’s mempools, causing validation and bandwidth costs to everyone on the network. but then are ejected from the mempool later, resulting in no fees being paid for the privilege.
To mitigate this problem, the current Bitcoin Core software makes attempts to minimize it:
V3 is one attempt to get around pinning issues in an opt-in manner. If a transaction can commit to opting into a new policy, we can be more restrictive in a way that perhaps wouldn’t be generally acceptable to users.
In essence, it restricts topology to avoid free relay, while mitigating pinning by restricting total size of portions of transactions. It’s a mitigation, not a complete fix, but also doesn’t allow new free relay avenues. Future mempool updates could likely allow this policy to evolve into something more incentive compatible and more pin resistant.
In contrast, some have suggested that the free relay problem isn’t much of a problem at all, or that it’s an unsolved problem, and that since it cannot be stopped, we should just not worry about offering services that would use it.
This is what Peter’s argument essentially boils down to: He claims miners can already induce some free relay by leaving fees on the table with transaction filters, so we should just bite the bullet and allow more, and let anyone do it.
I’ll let people dive into the precise arguments themselves, but it’s important to note a few things:
First of all, there is an “alternatives” section of the v3 BIP. It describes common suggestions and why they do not work, are good ideas but can only be applied to limited topologies (which is what v3 is for), are only feasible to implement generally after cluster mempool (which is a step after v3), or are not conflicting with this proposal.
I’d also encourage people to read the discussions linked in the BIP and PR. There is a lot of context and history, but there’s tons of publicly-viewable text to build background on it.
“Get rid of Rule 3+4 and use feerate instead” is a good place to start brainstorming, but it’s free relay / DoSy. Not much new to say here.
There has also been lots of exploration of the idea “in certain special situations, use a different set of rules based on {feerate, miner score}.” One-Shot Replace by Feerate is one. There’s also “[PROPOSAL] Emergency RBF (BIP 125)” and “Fees in Next Block and Feerate for the Rest of the Mempool”, among others.
For me, a key takeaway from those discussions was:
Some major problems with this include:
One advantage of cluster mempool is being able to calculate things like miner score and incentive compatibility across the mempool. Similarly, one advantage of v3 is being able to do this before cluster mempool because of restricted topology. Before people took on the challenge of designing and implementing cluster mempool, I had been framing v3 as “cluster limits” without having to implement cluster limits, as it’s one of the only ways to codify a cluster limit (count=2) using existing package limits (anc=2, desc=2. Once you go up to 3, you can have infinite clusters again). Another advantage of v3 is that it helps unblock cluster mempool, which is imo a no-brainer.
In summary, I don’t think the One-Shot Replace by Feerate proposal works (i.e. doesn’t have a free relay problem) and is feasible to implement accurately. The path of upgrades proposed (v3 package RBF, v3 sibling eviction, 1p1c package relay, cluster mempool) is the most complete solution by far. V3 is simple (and perhaps that leads people to think it is not well thought out?) and useful both as a building block and for solving specific problems in general.
What do you think of Peter’s fix that he published to bitcoin-dev?
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2024-January/022326.html
I don’t do deep protocol design so maybe I’m missing something. But the fee-rate/depth argument looks pretty solid to me and I guess it must be actually deployed in Libre Relay nodes.
In your writeup, I don’t understand how step #3 is following one-shot rbfr rules. Isn’t that just a normal replacement with a tx of a higher fee? 16,500 > 5000
Not sure I understand your argument there.
Is it correct to say the fee-rate replacement is “free” relay though if the infinite cycle is fixed? If I understand Peter’s argument right he argued that low fee-rate txs are less valuable because the revenue they might generate is less certain and far in the future. So high fee-rate is more valuable and the relay isn’t free because it increased value to the miner.