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;
|
fGood = false;
|
||||||
continue;
|
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();
|
file.close();
|
||||||
|
@ -653,6 +658,7 @@ UniValue dumpwallet(const JSONRPCRequest& request)
|
||||||
pwallet->GetKeyBirthTimes(mapKeyBirth);
|
pwallet->GetKeyBirthTimes(mapKeyBirth);
|
||||||
|
|
||||||
std::set<CScriptID> scripts = pwallet->GetCScripts();
|
std::set<CScriptID> scripts = pwallet->GetCScripts();
|
||||||
|
// TODO: include scripts in GetKeyBirthTimes() output instead of separate
|
||||||
|
|
||||||
// sort time/key pairs
|
// sort time/key pairs
|
||||||
std::vector<std::pair<int64_t, CKeyID> > vKeyBirth;
|
std::vector<std::pair<int64_t, CKeyID> > vKeyBirth;
|
||||||
|
@ -710,9 +716,15 @@ UniValue dumpwallet(const JSONRPCRequest& request)
|
||||||
file << "\n";
|
file << "\n";
|
||||||
for (const CScriptID &scriptid : scripts) {
|
for (const CScriptID &scriptid : scripts) {
|
||||||
CScript script;
|
CScript script;
|
||||||
|
std::string create_time = "0";
|
||||||
std::string address = EncodeDestination(scriptid);
|
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)) {
|
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);
|
file << strprintf(" # addr=%s\n", address);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue