Since #13666 our fee calculation assumes that ECSDA signatures are a maximum of 71 bytes, rather than 72. However, not all hardware wallets implement R-value grinding.

This can cause us to underpay fees when using an external signer. That's especially problematic when the user picks 1 sat/vbyte as the fee, because it won't even get into our own mempool.

The easiest solution would be to modify `ExternalSignerScriptPubKeyMan` to assume 72 bytes for ECSDA signatures.

Slightly more advanced would be to expand HWI to keep track of which devices and firmware versions (if any) support R-value grinding. We'd then have to store that in the wallet in some new field. Personally I'd rather work on better Taproot support, which thanks to Schnorr avoids this issue altogether. 
batch.reset();
    if (status != DatabaseCursorStatusDONE) {
        error = _("Error Unable to read all records in the database");
        return false;
    }
    // Close this database and dee the file
    fspath db_path = fsPathFromString(m_database->Filename());
    fspath db_dir = db_path.parent_path();
    m_database->Close();
    fsremove(db_path);
    // Make new DB
    DatabaseOptions opts;
    opts.require_create = true;
    opts.require_format = DatabaseFormatSQLITE;
    DatabaseStatus db_status;
    stdunique_ptr<WalDatabase> new_db = MakeDatabase(db_dir, opts, db_status, error);
    assert(new_db); // This is to prevent doing anything further with this wal. The original file was deed, but a backup exists.
    m_databreset();
    m_database = stdmove(new_db);
    // Write existing records into the new DB
    batch = m_database->MakeBatch();
    bool began = batch->TxnBegin();
    assert(began); // This is a critical error, the new db could not be written to. The original db exists as a backup, but we should not continue execution.
    for (const auto& [key, value]  records) {
        DataStream ss_key{key};
        DataStream ss_value{value};
        if (!batch->Write(ss_key, ss_value)) {
            batch->TxnAbort();
            m_database->Close();
            fsremove(m_database->Filename());