Spending untrusted unconfirmed outputs should be supported and robust.
Key feature:
- Calculation of the appropriate fee based upon the transaction package.
- When a dependent transaction is modified, (for example RBF increase), the dependent transaction should be updated appropriately. Users can optionally automate this process, and keep the appropriate signing keys online until the transaction package confirms (as this involves decreasing the transaction fee as the dependent transaction has been replaced with a larger fee version).
- When a conflicting unconfirmed-transaction package gets a higher fee, the user should be able to compare the transactions, and provided an option to increase the fee, change the funding inputs, or abandon the transaction all-together.
- When the unconfirmed input goes out-of-scope (a conflicting transaction is confirmed in it’s place), the dependent transactions should become “unfunded” and the user will need to select new inputs to fund the transaction, or abandon it.
New concepts: Unfunded, Partiality, and Fully Funded Transactions, and supporting the lifecycle between these states.
Related Issues: [policy: allow RBF descendant carveout whenever conflicts exist, #16819 ](https://github.com/bitcoin/bitcoin/issues/16819) [Enable CPFP via GUI #242 ](https://github.com/bitcoin-core/gui/issues/242) [Coin Controll for Unconfirmed Outputs #27190](https://github.com/bitcoin/bitcoin/issues/27190)