The total transaction count (for progress estimation) is counted as the known count at the last checkpoint, plus an estimated number per day.

The last checkpoint is now 996 days ago, and its estimated 60000 transactions per day leads to a total estimate of 96M transactions, while the real number is around 183M.

Fix this by updating the count, timestamp, and rate of transactions... with or without adding a new checkpoint.
"  \"difficulty\" : x.xxx,  (numeric) The difficulty\n"
            "  \"previousblockhash\" : \"hash\",  (string) The hash of the previous block\n"
            "  \"nextblockhash\" : \"hash\",      (string) The hash of the next block\n"
            "  \"chainwork\" : \"0000...1f3\"     (string) Expected number of hashes required to produce the current chain (in hex)\n"
            "}\n"
            "\nResult (for verbose=false):\n"
            "\"data\"             (string) A string that is serialized, hex-encoded data for block 'hash'.\n"
            "\nExamples:\n"
            + HelpExampleCli("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
            + HelpExampleRpc("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
        );
    LOCK(cs_main);
    std::string strHash = request.params[0].get_str();
    uint256 hash(uint256S(strHash));
    bool fVerbose = true;
    if (request.params.size() > 1)
        fVerbose = request.params[1].get_bool();
    if (mapBlockIndex.count(hash) == 0)
        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found");
    CBlockIndex* pblockindex = mapBlockIndex[hash];
    if (!fVerbose)
    {
        CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION);
        ssBlock << pblockindex->GetBlockHeader();
        std::string strHex = HexStr(ssBlock.begin(), ssBlock.end());
        return strHex;
    }
    return blockheaderToJSON(pblockindex);
}
UniValue getblock(const JSONRPCRequest& request)