The new `getrpcinfo` shows a list of the active commands and the duration each command has been running. This sounds like a good place to report a completion percentage for any command doing a blockchain rescan, to solve [this problem](https://bitcoin.stackexchange.com/q/83236/90721).
{
    
    CKey seed;                     
    CExtKey masterKey;             
    CExtKey accountKey;            
    CExtKey chainChildKey;         
    CExtKey childKey;              
    
    if (!GetKey(hdChain.seed_id, seed))
        throw std::runtime_error(std::string(__func__) + ": seed not found");
    masterKey.SetSeed(seed.begin(), seed.size());
    
    
    masterKey.Derive(accountKey, BIP32_HARDENED_KEY_LIMIT);
    
    assert(internal ? CanSupportFeature(FEATURE_HD_SPLIT) : true);
    accountKey.Derive(chainChildKey, BIP32_HARDENED_KEY_LIMIT+(internal ? 1 : 0));
    
    do {