mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-06 11:13:02 +02:00
Merge #11854: Split up key and script metadata for better type safety
9c8eca7 Split up key and script metadata for better type safety (Russell Yanofsky)
Pull request description:
Suggested by @TheBlueMatt
https://github.com/bitcoin/bitcoin/pull/11403#discussion_r155599383
Combining the maps was probably never a good arrangement but is more
problematic now in presence of WitnessV0ScriptHash and WitnessV0KeyHash types.
Tree-SHA512: 9263e9c01090fb49221e91d88a88241a9691dda3e92d86041c8e284306a64d3af5e2438249f9dcc3e6e4a5c11c1a89f975a86d55690adf95bf2636f15f99f92a
This commit is contained in:
@@ -187,17 +187,24 @@ UniValue validateaddress(const JSONRPCRequest& request)
|
||||
ret.push_back(Pair("account", pwallet->mapAddressBook[dest].name));
|
||||
}
|
||||
if (pwallet) {
|
||||
const auto& meta = pwallet->mapKeyMetadata;
|
||||
const CKeyID *keyID = boost::get<CKeyID>(&dest);
|
||||
auto it = keyID ? meta.find(*keyID) : meta.end();
|
||||
if (it == meta.end()) {
|
||||
it = meta.find(CScriptID(scriptPubKey));
|
||||
const CKeyMetadata* meta = nullptr;
|
||||
if (const CKeyID* key_id = boost::get<CKeyID>(&dest)) {
|
||||
auto it = pwallet->mapKeyMetadata.find(*key_id);
|
||||
if (it != pwallet->mapKeyMetadata.end()) {
|
||||
meta = &it->second;
|
||||
}
|
||||
}
|
||||
if (it != meta.end()) {
|
||||
ret.push_back(Pair("timestamp", it->second.nCreateTime));
|
||||
if (!it->second.hdKeypath.empty()) {
|
||||
ret.push_back(Pair("hdkeypath", it->second.hdKeypath));
|
||||
ret.push_back(Pair("hdmasterkeyid", it->second.hdMasterKeyID.GetHex()));
|
||||
if (!meta) {
|
||||
auto it = pwallet->m_script_metadata.find(CScriptID(scriptPubKey));
|
||||
if (it != pwallet->m_script_metadata.end()) {
|
||||
meta = &it->second;
|
||||
}
|
||||
}
|
||||
if (meta) {
|
||||
ret.push_back(Pair("timestamp", meta->nCreateTime));
|
||||
if (!meta->hdKeypath.empty()) {
|
||||
ret.push_back(Pair("hdkeypath", meta->hdKeypath));
|
||||
ret.push_back(Pair("hdmasterkeyid", meta->hdMasterKeyID.GetHex()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user