mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-02 20:05:45 +02:00
Merge bitcoin/bitcoin#25858: psbt: Only include PSBT_OUT_TAP_TREE when the output has a script path
9e386afb67tests: Test that PSBT_OUT_TAP_TREE is included correctly (Andrew Chow)30ff25cf37psbt: Only include m_tap_tree if it has scripts (Andrew Chow)0577d423adpsbt: Change m_tap_tree to store just the tuples (Andrew Chow)22c051ca70tests: Test that PSBT_OUT_TAP_TREE is combined correctly (Andrew Chow)7df6e1bb77psbt: Fix merging of m_tap_tree (Andrew Chow)0652dc53b2[BugFix]: Do not allow deserializing PSBT with empty PSBT_OUT_TAP_TREE (Jeremy Rubin) Pull request description: PSBT_OUT_TAP_TREE should not be included for outputs that do not have such a tree. This should be disallowed during parsing, as well as prior to serialization when the field is populated during updating. Also added some test cases. Alternative to #25856 ACKs for top commit: instagibbs: ACK9e386afb67darosior: ACK9e386afb67Tree-SHA512: ce5c02a69752d176dbd967c1e8d30129b1905c8f186aeeef034576c1de82059271a1ee846bd040f5be4e66bb77ba711dcf14ac1e597c5707d7e7e2293f6cfefb
This commit is contained in:
@@ -1241,13 +1241,9 @@ static RPCHelpMan decodepsbt()
|
||||
}
|
||||
|
||||
// Taproot tree
|
||||
if (output.m_tap_tree.has_value()) {
|
||||
if (!output.m_tap_tree.empty()) {
|
||||
UniValue tree(UniValue::VARR);
|
||||
const auto& tuples = output.m_tap_tree->GetTreeTuples();
|
||||
for (const auto& tuple : tuples) {
|
||||
uint8_t depth = std::get<0>(tuple);
|
||||
uint8_t leaf_ver = std::get<1>(tuple);
|
||||
CScript script = std::get<2>(tuple);
|
||||
for (const auto& [depth, leaf_ver, script] : output.m_tap_tree) {
|
||||
UniValue elem(UniValue::VOBJ);
|
||||
elem.pushKV("depth", (int)depth);
|
||||
elem.pushKV("leaf_ver", (int)leaf_ver);
|
||||
|
||||
Reference in New Issue
Block a user