Skip to content

Commit 33a363e

Browse files
committed
Merge bitcoin#36168: PSBT: Make input/output Merge() methods return void
82deb69 PSBT: Make input/output `Merge()` methods return void (nebula-21) Pull request description: PSBT input/output `Merge()` methods always return `true` unconditionally and have no failure paths. As a result, the return value checks in `PartiallySignedTransaction::Merge()` can never fail and are dead code. This makes the `bool` return type and `[[nodiscard]]` misleading. This PR changes both methods to return `void` and remove the return value checks. If at some point in the future the failure logic is needed, it can be introduced again. For now using `void` makes the current behavior easier to understand. ACKs for top commit: achow101: ACK 82deb69 polespinasa: ACK 82deb69 sedited: ACK 82deb69 Tree-SHA512: 694fdf19292d2f3627c90c5f111d7ecf5ad4f933d69eebf7c9ef37adee19be7de44002030ed4539aa5a28910acb751822b443f7ee22c80614296ef40d21c60da
2 parents 013b0b2 + 82deb69 commit 33a363e

2 files changed

Lines changed: 6 additions & 14 deletions

File tree

src/psbt.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,10 @@ bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
4747
}
4848

4949
for (unsigned int i = 0; i < inputs.size(); ++i) {
50-
if (!inputs[i].Merge(psbt.inputs[i])) {
51-
return false;
52-
}
50+
inputs[i].Merge(psbt.inputs[i]);
5351
}
5452
for (unsigned int i = 0; i < outputs.size(); ++i) {
55-
if (!outputs[i].Merge(psbt.outputs[i])) {
56-
return false;
57-
}
53+
outputs[i].Merge(psbt.outputs[i]);
5854
}
5955
MergeGlobalXPubs(psbt);
6056
if (fallback_locktime == std::nullopt && psbt.fallback_locktime != std::nullopt) fallback_locktime = psbt.fallback_locktime;
@@ -421,7 +417,7 @@ void PSBTInput::FromSignatureData(const SignatureData& sigdata)
421417
}
422418
}
423419

424-
bool PSBTInput::Merge(const PSBTInput& input)
420+
void PSBTInput::Merge(const PSBTInput& input)
425421
{
426422
if (!non_witness_utxo && input.non_witness_utxo) non_witness_utxo = input.non_witness_utxo;
427423
if (witness_utxo.IsNull() && !input.witness_utxo.IsNull()) {
@@ -467,8 +463,6 @@ bool PSBTInput::Merge(const PSBTInput& input)
467463
if (sequence == std::nullopt && input.sequence != std::nullopt) sequence = input.sequence;
468464
if (time_locktime == std::nullopt && input.time_locktime != std::nullopt) time_locktime = input.time_locktime;
469465
if (height_locktime == std::nullopt && input.height_locktime != std::nullopt) height_locktime = input.height_locktime;
470-
471-
return true;
472466
}
473467

474468
bool PSBTInput::HasSignatures() const
@@ -535,7 +529,7 @@ void PSBTOutput::FromSignatureData(const SignatureData& sigdata)
535529
m_musig2_participants.insert(sigdata.musig2_pubkeys.begin(), sigdata.musig2_pubkeys.end());
536530
}
537531

538-
bool PSBTOutput::Merge(const PSBTOutput& output)
532+
void PSBTOutput::Merge(const PSBTOutput& output)
539533
{
540534
hd_keypaths.insert(output.hd_keypaths.begin(), output.hd_keypaths.end());
541535
m_proprietary.insert(output.m_proprietary.begin(), output.m_proprietary.end());
@@ -547,8 +541,6 @@ bool PSBTOutput::Merge(const PSBTOutput& output)
547541
if (m_tap_internal_key.IsNull() && !output.m_tap_internal_key.IsNull()) m_tap_internal_key = output.m_tap_internal_key;
548542
if (m_tap_tree.empty() && !output.m_tap_tree.empty()) m_tap_tree = output.m_tap_tree;
549543
m_musig2_participants.insert(output.m_musig2_participants.begin(), output.m_musig2_participants.end());
550-
551-
return true;
552544
}
553545

554546
bool PSBTInputSigned(const PSBTInput& input)

src/psbt.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ class PSBTInput
324324

325325
void FillSignatureData(SignatureData& sigdata) const;
326326
void FromSignatureData(const SignatureData& sigdata);
327-
[[nodiscard]] bool Merge(const PSBTInput& input);
327+
void Merge(const PSBTInput& input);
328328
uint32_t GetVersion() const { return m_psbt_version; }
329329
COutPoint GetOutPoint() const;
330330
/**
@@ -958,7 +958,7 @@ class PSBTOutput
958958

959959
void FillSignatureData(SignatureData& sigdata) const;
960960
void FromSignatureData(const SignatureData& sigdata);
961-
[[nodiscard]] bool Merge(const PSBTOutput& output);
961+
void Merge(const PSBTOutput& output);
962962
uint32_t GetVersion() const { return m_psbt_version; }
963963

964964
explicit PSBTOutput(uint32_t psbt_version, CAmount amount, const CScript& script)

0 commit comments

Comments
 (0)