When using `listsinceblock` to fetch transactions since the last record observed, there is a relevant detail missed that I would like to record in the ledger: `blockheight`.

It is unreasonable for my wallet interface to do an RPC lookup for every new blockhash just to get the height number. There could be hundreds of transactions or even thousands and they could all be processed with a simple call to `listsinceblock` if it wasn't for the lack of `blockheight`.

Currently it looks like:

> "blockhash": "0000000000000000000549800794b27ab10d5e16ac6ad16a7c4a13dae756f80d",
> "blockindex": 1120,
> "blocktime": 1572073467,

I would like it to look like:

> "blockhash": "0000000000000000000549800794b27ab10d5e16ac6ad16a7c4a13dae756f80d",
> "blockindex": 1120,
> "blocktime": 1572073467,
> "blockheight": 601091,

I have the same request regarding the output of `gettransaction` also.

Thanks in advance.


{
    std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
    CWallet* const pwallet = wallet.get();
    if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
        return NullUniValue;
    }
            RPCHelpMan{"rescanblockchain",
                "\nRescan the local blockchain for wallet related transactions.\n"
                "Note: Use \"getwalletinfo\" to query the scanning progress.\n",
                {
                    {"start_height", RPCArg::Type::NUM,  "0", "block height where the rescan should start"},
                    {"stop_height", RPCArg::Type::NUM, RPCArg::Optional::OMITTED_NAMED_ARG, "the last block height that should be scanned. If none is provided it will rescan up to the tip at return time of this call."},
                },
                RPCResult{
            "{\n"
            "  \"start_height\"     (numeric) The block height where the rescan started (the requested height or 0)\n"
            "  \"stop_height\"      (numeric) The height of the last rescanned block. May be null in rare cases if there was a reorg and the call didn't scan any blocks because they were already scanned in the background.\n"
            "}\n"
                },
                RPCExamples{
                    HelpExampleCli("rescanblockchain", "100000 120000")
            + HelpExampleRpc("rescanblockchain", "100000, 120000")
                },
            }.Check(request);
    WalletRescanReserver reserver(pwallet);
    if (!reserver.reserve()) {
        throw JSONRPCError(RPC_WALLET_ERROR, "Wallet is currently rescanning. Abort existing rescan or wait.");
    }
    int start_height = 0;
    uint256 start_block, stop_block;