mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-03 09:43:55 +02:00
Merge #15800: Backport: [rpc] Remove the addresses field from the getaddressinfo return object
b3a04c963d[rpc] Remove the addresses field from the getaddressinfo return object (John Newbery) Pull request description: Backport #15750 ACKs for commit b3a04c: MarcoFalke: ACKb3a04c963d(checked cherry-pick) Tree-SHA512: d6e586fb6e22b9825267d6c45dd3090b7f8dc1a06804ca238103d1c665b178f8c2b3004f67aae67ea51c2c3df97561894f3f2e85d45400c760c3b7f057ff4bb8
This commit is contained in:
@@ -3513,7 +3513,7 @@ class DescribeWalletAddressVisitor : public boost::static_visitor<UniValue>
|
||||
public:
|
||||
CWallet * const pwallet;
|
||||
|
||||
void ProcessSubScript(const CScript& subscript, UniValue& obj, bool include_addresses = false) const
|
||||
void ProcessSubScript(const CScript& subscript, UniValue& obj) const
|
||||
{
|
||||
// Always present: script type and redeemscript
|
||||
std::vector<std::vector<unsigned char>> solutions_data;
|
||||
@@ -3522,7 +3522,6 @@ public:
|
||||
obj.pushKV("hex", HexStr(subscript.begin(), subscript.end()));
|
||||
|
||||
CTxDestination embedded;
|
||||
UniValue a(UniValue::VARR);
|
||||
if (ExtractDestination(subscript, embedded)) {
|
||||
// Only when the script corresponds to an address.
|
||||
UniValue subobj(UniValue::VOBJ);
|
||||
@@ -3535,7 +3534,6 @@ public:
|
||||
// Always report the pubkey at the top level, so that `getnewaddress()['pubkey']` always works.
|
||||
if (subobj.exists("pubkey")) obj.pushKV("pubkey", subobj["pubkey"]);
|
||||
obj.pushKV("embedded", std::move(subobj));
|
||||
if (include_addresses) a.push_back(EncodeDestination(embedded));
|
||||
} else if (which_type == TX_MULTISIG) {
|
||||
// Also report some information on multisig scripts (which do not have a corresponding address).
|
||||
// TODO: abstract out the common functionality between this logic and ExtractDestinations.
|
||||
@@ -3543,17 +3541,10 @@ public:
|
||||
UniValue pubkeys(UniValue::VARR);
|
||||
for (size_t i = 1; i < solutions_data.size() - 1; ++i) {
|
||||
CPubKey key(solutions_data[i].begin(), solutions_data[i].end());
|
||||
if (include_addresses) a.push_back(EncodeDestination(key.GetID()));
|
||||
pubkeys.push_back(HexStr(key.begin(), key.end()));
|
||||
}
|
||||
obj.pushKV("pubkeys", std::move(pubkeys));
|
||||
}
|
||||
|
||||
// The "addresses" field is confusing because it refers to public keys using their P2PKH address.
|
||||
// For that reason, only add the 'addresses' field when needed for backward compatibility. New applications
|
||||
// can use the 'embedded'->'address' field for P2SH or P2WSH wrapped addresses, and 'pubkeys' for
|
||||
// inspecting multisig participants.
|
||||
if (include_addresses) obj.pushKV("addresses", std::move(a));
|
||||
}
|
||||
|
||||
explicit DescribeWalletAddressVisitor(CWallet* _pwallet) : pwallet(_pwallet) {}
|
||||
@@ -3576,7 +3567,7 @@ public:
|
||||
UniValue obj(UniValue::VOBJ);
|
||||
CScript subscript;
|
||||
if (pwallet && pwallet->GetCScript(scriptID, subscript)) {
|
||||
ProcessSubScript(subscript, obj, IsDeprecatedRPCEnabled("validateaddress"));
|
||||
ProcessSubScript(subscript, obj);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user