Skip to content

Commit c076d02

Browse files
committed
merge bitcoin#17034: PSBT version, proprietary, and xpub fields (BIP 174)
1 parent f1ba319 commit c076d02

File tree

12 files changed

+465
-96
lines changed

12 files changed

+465
-96
lines changed

src/psbt.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
3737
for (unsigned int i = 0; i < outputs.size(); ++i) {
3838
outputs[i].Merge(psbt.outputs[i]);
3939
}
40+
for (auto& xpub_pair : psbt.m_xpubs) {
41+
if (m_xpubs.count(xpub_pair.first) == 0) {
42+
m_xpubs[xpub_pair.first] = xpub_pair.second;
43+
} else {
44+
m_xpubs[xpub_pair.first].insert(xpub_pair.second.begin(), xpub_pair.second.end());
45+
}
46+
}
4047
unknown.insert(psbt.unknown.begin(), psbt.unknown.end());
4148

4249
return true;
@@ -356,3 +363,11 @@ bool DecodeRawPSBT(PartiallySignedTransaction& psbt, const std::string& tx_data,
356363
}
357364
return true;
358365
}
366+
367+
uint32_t PartiallySignedTransaction::GetVersion() const
368+
{
369+
if (m_version != std::nullopt) {
370+
return *m_version;
371+
}
372+
return 0;
373+
}

0 commit comments

Comments
 (0)