@@ -545,6 +545,11 @@ UniValue importwallet(const JSONRPCRequest& request)
545
545
fGood = false ;
546
546
continue ;
547
547
}
548
+ int64_t birth_time = DecodeDumpTime (vstr[1 ]);
549
+ if (birth_time > 0 ) {
550
+ pwallet->m_script_metadata [CScriptID (script)].nCreateTime = birth_time;
551
+ nTimeBegin = std::min (nTimeBegin, birth_time);
552
+ }
548
553
}
549
554
}
550
555
file.close ();
@@ -653,6 +658,7 @@ UniValue dumpwallet(const JSONRPCRequest& request)
653
658
pwallet->GetKeyBirthTimes (mapKeyBirth);
654
659
655
660
std::set<CScriptID> scripts = pwallet->GetCScripts ();
661
+ // TODO: include scripts in GetKeyBirthTimes() output instead of separate
656
662
657
663
// sort time/key pairs
658
664
std::vector<std::pair<int64_t , CKeyID> > vKeyBirth;
@@ -710,9 +716,15 @@ UniValue dumpwallet(const JSONRPCRequest& request)
710
716
file << " \n " ;
711
717
for (const CScriptID &scriptid : scripts) {
712
718
CScript script;
719
+ std::string create_time = " 0" ;
713
720
std::string address = EncodeDestination (scriptid);
721
+ // get birth times for scripts with metadata
722
+ auto it = pwallet->m_script_metadata .find (scriptid);
723
+ if (it != pwallet->m_script_metadata .end ()) {
724
+ create_time = EncodeDumpTime (it->second .nCreateTime );
725
+ }
714
726
if (pwallet->GetCScript (scriptid, script)) {
715
- file << strprintf (" %s 0 script=1" , HexStr (script.begin (), script.end ()));
727
+ file << strprintf (" %s %s script=1" , HexStr (script.begin (), script.end ()), create_time );
716
728
file << strprintf (" # addr=%s\n " , address);
717
729
}
718
730
}
0 commit comments