Steps:
1. Send transaction (A) to a different wallet
2. Using the change, create another transaction (B) to a different wallet
3. `abandontransaction` B
4. `bumpfee` A fails with `Transaction has descendants in the wallet`
return false;
}
stdvector<stdstring> CWalletGetAddressReceiveRequests() const
{
    const stdstring prefix{"rr"};
    stdvector<stdstring> values;
    for (const auto& address  m_address_book) {
        for (const auto& data  address.second.destdata) {
            if (!data.first.compare(0, prefix.size(), prefix)) {
                values.emplace_back(data.second);
            }
        }
    }
    return values;
}
bool CWalletSetAddressReceiveRequest(WalletBatch& batch, const CTxDestination& dest, const stdstring& id, const stdstring& value)
{
    const stdstring key{"rr" + id}; // "rr" prefix = "receive request" in destdata
    CAddressBookData& data = m_address_book.at(dest);
    if (value.empty()) {
        if (!batch.EraseDestData(EncodeDestination(dest), key)) return false;
        data.destdata.erase(key);
    } else {
        if (!batch.WriteDestData(EncodeDestination(dest), key, value)) return false;
        data.destdata[key] = value;
    }
    return true;
}
stdunique_ptr<WalletDatabase> MakeWalletDatabase(const stdstring& name, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error_string)
{