diff options
| author | Glenn Willen <[email protected]> | 2019-01-29 22:51:56 -0800 |
|---|---|---|
| committer | Glenn Willen <[email protected]> | 2019-02-11 14:08:04 -0800 |
| commit | 78b9893d020e8b1351565f1adbf591cb32f6dc90 (patch) | |
| tree | 599c5a1b8627fb1681b038d3b89aef07f3ea8663 /src/psbt.cpp | |
| parent | Switch away from exceptions in refactored tx code (diff) | |
| download | discoin-78b9893d020e8b1351565f1adbf591cb32f6dc90.tar.xz discoin-78b9893d020e8b1351565f1adbf591cb32f6dc90.zip | |
Remove op== on PSBTs; check compatibility in Merge
Remove the op== on PartiallySignedTransaction, which only checks that the
CTransactions are equal. Instead, check this directly in Merge, and return
false if the CTransactions are not equal (so the PSBTs cannot be merged.)
Diffstat (limited to 'src/psbt.cpp')
| -rw-r--r-- | src/psbt.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/psbt.cpp b/src/psbt.cpp index 97fb39f1c..06032d695 100644 --- a/src/psbt.cpp +++ b/src/psbt.cpp @@ -16,8 +16,13 @@ bool PartiallySignedTransaction::IsNull() const return !tx && inputs.empty() && outputs.empty() && unknown.empty(); } -void PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt) +bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt) { + // Prohibited to merge two PSBTs over different transactions + if (tx->GetHash() != psbt.tx->GetHash()) { + return false; + } + for (unsigned int i = 0; i < inputs.size(); ++i) { inputs[i].Merge(psbt.inputs[i]); } @@ -25,6 +30,8 @@ void PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt) outputs[i].Merge(psbt.outputs[i]); } unknown.insert(psbt.unknown.begin(), psbt.unknown.end()); + + return true; } bool PartiallySignedTransaction::IsSane() const |