feat: UTXO splitting for large TXs & Payment Cancel API #7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces two main improvements:
1. Automated UTXO Splitting (Chained Transactions)
MAX_INPUT_COUNT_PER_TX, the system will now split the transaction.2. Payment Cancellation API
New Environment Variables:
MAX_INPUT_COUNT_PER_TX: (Integer) The maximum number of inputs allowed in a single transaction before splitting occurs. Default: 400CONFIRMATION_CHECKER_REQUIRED_CONFIRMATIONS: (Integer) The number of confirmations required. Default: 10Motivation and Context
Previously, if a user submitted a transaction requiring a massive number of UTXOs (making the TX size/weight too large for standard propagation or block limits), the transaction would simply fail.
This PR solves this by detecting heavy transactions and breaking them down:
Step 1: Create a transaction to self to consolidate inputs.
Step 2: immediately spend the output of Step 1 to pay the recipient (chaining the transactions).
Additionally, we needed a way to manually stop payments, hence the new Cancel API.
Breaking Changes