This PR Implements the following:
- If creating a v3 transaction,
AvailableCoins
doesn’t return unconfirmed v2 utxos (and vice versa) AvailableCoins
doesn’t return an unconfirmed v3 utxo if its transaction already has a child- If a v3 transaction is kicked out of the mempool by a sibling, mark the sibling as a mempool conflict
- Throw an error if pre-selected inputs are of the wrong transaction version
- Allow setting version to 3 manually in
createrawtransaction
(uses commits from #31936) - Limits a v3 transaction weight in coin selection
Closes #31348
To-Do:
- Test a v3 sibling conflict kicking out one of our transactions from the mempool
- Implement separate size limit for TRUC children
- Test that we can’t fund a v2 transaction when everything is v3 unconfirmed
- Test a v3 sibling conflict being removed from the mempool
- Test limiting v3 transaction weight in coin selection
- Simplify tests
- Add documentation