| 61 | } |
| 62 | |
| 63 | pub fn merge_transactions( |
| 64 | destination_transaction: &mut Transaction, |
| 65 | source_transaction: &Transaction, |
| 66 | ) { |
| 67 | for i in destination_transaction.input.len()..source_transaction.input.len() { |
| 68 | destination_transaction |
| 69 | .input |
| 70 | .push(source_transaction.input[i].clone()); |
| 71 | } |
| 72 | |
| 73 | for i in 0..cmp::min( |
| 74 | destination_transaction.input.len(), |
| 75 | source_transaction.input.len(), |
| 76 | ) { |
| 77 | // TODO: takes longer witness data but should combine both |
| 78 | // TODO: merge signatures after Musig2 feature is ready |
| 79 | if destination_transaction.input[i].witness.len() |
| 80 | < source_transaction.input[i].witness.len() |
| 81 | { |
| 82 | destination_transaction.input[i].witness = source_transaction.input[i].witness.clone(); |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | for i in destination_transaction.output.len()..source_transaction.output.len() { |
| 87 | destination_transaction |
| 88 | .output |
| 89 | .push(source_transaction.output[i].clone()); |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | // assumes source_transaction is the latest |
| 94 | pub fn merge_musig2_nonces_and_signatures( |