Add script birthtime metadata to dump and import wallet
This commit is contained in:
parent
1bab9b23af
commit
656fde53a3
1 changed files with 13 additions and 1 deletions
|
@ -545,6 +545,11 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|||
fGood = false;
|
||||
continue;
|
||||
}
|
||||
int64_t birth_time = DecodeDumpTime(vstr[1]);
|
||||
if (birth_time > 0) {
|
||||
pwallet->m_script_metadata[CScriptID(script)].nCreateTime = birth_time;
|
||||
nTimeBegin = std::min(nTimeBegin, birth_time);
|
||||
}
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
|
@ -653,6 +658,7 @@ UniValue dumpwallet(const JSONRPCRequest& request)
|
|||
pwallet->GetKeyBirthTimes(mapKeyBirth);
|
||||
|
||||
std::set<CScriptID> scripts = pwallet->GetCScripts();
|
||||
// TODO: include scripts in GetKeyBirthTimes() output instead of separate
|
||||
|
||||
// sort time/key pairs
|
||||
std::vector<std::pair<int64_t, CKeyID> > vKeyBirth;
|
||||
|
@ -710,9 +716,15 @@ UniValue dumpwallet(const JSONRPCRequest& request)
|
|||
file << "\n";
|
||||
for (const CScriptID &scriptid : scripts) {
|
||||
CScript script;
|
||||
std::string create_time = "0";
|
||||
std::string address = EncodeDestination(scriptid);
|
||||
// get birth times for scripts with metadata
|
||||
auto it = pwallet->m_script_metadata.find(scriptid);
|
||||
if (it != pwallet->m_script_metadata.end()) {
|
||||
create_time = EncodeDumpTime(it->second.nCreateTime);
|
||||
}
|
||||
if(pwallet->GetCScript(scriptid, script)) {
|
||||
file << strprintf("%s 0 script=1", HexStr(script.begin(), script.end()));
|
||||
file << strprintf("%s %s script=1", HexStr(script.begin(), script.end()), create_time);
|
||||
file << strprintf(" # addr=%s\n", address);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue