Thanks for your thoughtful reply Antoine. > In a distributed system such as the Bitcoin p2p network, you might > have transaction A and transaction B broadcast at the same time and > your peer topology might fluctuate between original send and > broadcast of the diff, you don't know who's seen what... You might > inefficiently announce diff A on top of B and diff B on top A. We > might leverage set reconciliation there a la Erlay, though likely > with increased round-trips. In the context of fee bumping, I don't see how this is a criticism unique to transaction sponsors, since it also applies to CPFP: if you tried to bump fees for transaction A with child txn B, if some mempool hasn't seen parent A, it will reject B. > Have you heard about SIGHASH_GROUP [0] ? I haven't - I'll spend some time reviewing this. Thanks. > > [me complaining CPFP requires lock-in to keys] > > It's true it requires to pre-specify the fee-bumping key. Though note > the fee-bumping key can be fully separated from the > "vaults"/"channels" set of main keys and hosted on replicated > infrastructure such as watchtowers. This still doesn't address the issue I'm talking about, which is if you pre-commit to some "fee-bumping" key in your CPFP outputs and that key ends up being compromised. This isn't a matter of data availability or redundancy. Note that this failure may be unique to vault use cases, when you're pre-generating potentially large numbers of transactions or covenants that cannot be altered after the fact. If you generate vault txns that assume the use of some key for CPFP-based fee bumping and that key winds up being compromised, that puts you in a an uncomfortable situation: you can no longer bump fees on unvaulting transactions, rendering the vaults possibly unretrievable depending on the fee market. > As a L2 transaction issuer you can't be sure the transaction you wish > to point to is already in the mempool, or have not been replaced by > your counterparty spending the same shared-utxo, either competitively > or maliciously. So as a measure of caution, you should broadcast > sponsor + target transactions in the same package, thus cancelling > the bandwidth saving (I think). As I mentioned in the reply to Matt's message, I'm not quite understanding this idea of wanting to bump the fee for something without knowing what it is; that doesn't make much sense to me. The "bump fee" operation seems contingent on knowing what you want to bump. And if you're, say, trying to broadcast a lightning channel close and you know you need to bump the fee right away, before even broadcasting it, either you're going to - reformulate the txn to bring up the fee rate (e.g. add inputs with some yet-undeployed sighash) as you would have done with RBF, or - you'd have the same "package relay" problem with CPFP that you would with transaction sponsors. So I don't understand the objection here. Also, I didn't mean to discourage existing work on package relay or fixing RBF, which seem clearly important. Maybe I should have noted that explicitly in the original message > I don't think a sponsor is a silver-bullet to solve all the > L2-related mempool issues. It won't solve the most concerning pinning > attacks, as I think the bottleneck is replace-by-fee. Neither solve > the issues encumbered by the L2s by the dust limit. I'm not familiar with the L2 dust-limit issues, and I do think that "fixing" RBF behavior is *probably* worthwhile. Those issues aside, I think the transaction sponsors idea may be closer to a silver bullet than you're giving it credit for, because designing specifically for the fee-management use case has some big benefits. For one, it makes migration easier. That is to say: there is none, whereas there is existing RBF policy that needs consideration. But maybe more importantly, transaction sponsors' limited use case also allows for specifying much more targeted "replacement" policy since sponsors are special-purpose transactions that only exist to dynamically bump feerate. E.g. my SIGHASH_{NONE,SINGLE}|ANYONECANPAY proposal might make complete sense for the sponsors/fee-management use case, and clarify the replacement problem, but obviously wouldn't work for more general transaction replacement. In other words, RBF's general nature might make it a much harder problem to solve well.