Merge bitcoindevkit/bdk#1316: tx_builder: Support setting explicit nSequence for foreign inputs

9bb39a3a3f Avoid a wildcard match in tx construction (Steven Roose)
9e098a5b6d tx_builder: Support setting explicit nSequence for foreign inputs (Steven Roose)

Pull request description:

  Fixes https://github.com/bitcoindevkit/bdk/issues/1315.

ACKs for top commit:
  evanlinjin:
    ACK 9bb39a3a3f
  danielabrozzoni:
    utACK 9bb39a3a3f

Tree-SHA512: 42c96a58a762fa8737402ebd0132ce20ce0359c996cee9feeecb0b84e6fb73305be1aec9429fb97ba932486f0b35ac5caed7b43656456c5fb053e55330a12d47
This commit is contained in:
Daniela Brozzoni
2024-02-05 12:36:02 +01:00
3 changed files with 35 additions and 4 deletions

View File

@@ -1347,7 +1347,7 @@ impl<D> Wallet<D> {
}
Some(tx_builder::Version(x)) => x,
None if requirements.csv.is_some() => 2,
_ => 1,
None => 1,
};
// We use a match here instead of a unwrap_or_else as it's way more readable :)
@@ -1400,6 +1400,7 @@ impl<D> Wallet<D> {
}
};
// The nSequence to be by default for inputs unless an explicit sequence is specified.
let n_sequence = match (params.rbf, requirements.csv) {
// No RBF or CSV but there's an nLockTime, so the nSequence cannot be final
(None, None) if lock_time != absolute::LockTime::ZERO => {
@@ -1558,7 +1559,7 @@ impl<D> Wallet<D> {
.map(|u| bitcoin::TxIn {
previous_output: u.outpoint(),
script_sig: ScriptBuf::default(),
sequence: n_sequence,
sequence: u.sequence().unwrap_or(n_sequence),
witness: Witness::new(),
})
.collect();
@@ -1738,6 +1739,7 @@ impl<D> Wallet<D> {
satisfaction_weight,
utxo: Utxo::Foreign {
outpoint: txin.previous_output,
sequence: Some(txin.sequence),
psbt_input: Box::new(psbt::Input {
witness_utxo: Some(txout.clone()),
non_witness_utxo: Some(prev_tx.clone()),
@@ -2218,8 +2220,9 @@ impl<D> Wallet<D> {
}
}
Utxo::Foreign {
psbt_input: foreign_psbt_input,
outpoint,
psbt_input: foreign_psbt_input,
..
} => {
let is_taproot = foreign_psbt_input
.witness_utxo