Reviving this old thread now that the recently released RC for bitcoind 0.19 includes the above mentioned carve-out rule.
In an attempt to pave the way for more robust CPFP of on-chain contracts (Lightning commitment transactions), the carve-out rule was added in
https://github.com/bitcoin/bitcoin/pull/15681. However, having worked on an implementation of a new commitment format for utilizing the Bring Your Own Fees strategy using CPFP, I’m wondering if the special case rule should have been relaxed a bit, to avoid the need for adding a 1 CSV to all outputs (in case of Lightning this means HTLC scripts would need to be changed to add the CSV delay).
Instead, what about letting the rule be
The last transaction which is added to a package of dependent
transactions in the mempool must:
* Have no more than one unconfirmed parent.
This would of course allow adding a large transaction to each output of the unconfirmed parent, which in effect would allow an attacker to exceed the MAX_PACKAGE_VIRTUAL_SIZE limit in some cases. However, is this a problem with the current mempool acceptance code in bitcoind? I would imagine evicting transactions based on feerate when the max mempool size is met handles this, but I’m asking since it seems like there has been several changes to the acceptance code and eviction policy since the limit was first introduced.
- Johan