bookkeeper: save last timestamp to avoid another query in find_consolidated_fees.
If the fees are not *all* of the fees (as we do in next patch), the query would be wrong. Plus, as the FIXME suggests, we should just save it as we're getting the fee_sums, not do a whole new query! Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -290,11 +290,7 @@ static struct onchain_fee **find_consolidated_fees(const tal_t *ctx,
|
||||
fee->debit = AMOUNT_MSAT(0);
|
||||
fee->acct_name = tal_steal(fee, sums[i]->acct_name);
|
||||
fee->txid = *sums[i]->txid;
|
||||
|
||||
fee->timestamp =
|
||||
onchain_fee_last_timestamp(bkpr, sums[i]->acct_name,
|
||||
sums[i]->txid);
|
||||
|
||||
fee->timestamp = sums[i]->last_timestamp;
|
||||
tal_arr_expand(&fee_sums, fee);
|
||||
}
|
||||
|
||||
|
||||
@@ -366,10 +366,13 @@ static struct fee_sum **fee_sums_by_txid_and_account(const tal_t *ctx,
|
||||
sum->txid = tal_dup(sum, struct bitcoin_txid,
|
||||
&ofs[i]->txid);
|
||||
credit = debit = AMOUNT_MSAT(0);
|
||||
sum->last_timestamp = 0;
|
||||
}
|
||||
ok = amount_msat_accumulate(&credit, ofs[i]->credit);
|
||||
assert(ok);
|
||||
ok = amount_msat_accumulate(&debit, ofs[i]->debit);
|
||||
if (ofs[i]->timestamp > sum->last_timestamp)
|
||||
sum->last_timestamp = ofs[i]->timestamp;
|
||||
}
|
||||
|
||||
/* Final, if any */
|
||||
@@ -679,24 +682,6 @@ struct fee_sum **find_account_onchain_fees(const tal_t *ctx,
|
||||
return fee_sums_by_txid_and_account(ctx, ofs);
|
||||
}
|
||||
|
||||
/* FIXME: Put this value into fee_sums! */
|
||||
u64 onchain_fee_last_timestamp(const struct bkpr *bkpr,
|
||||
const char *acct_name,
|
||||
const struct bitcoin_txid *txid)
|
||||
{
|
||||
struct onchain_fee **ofs;
|
||||
u64 timestamp = 0;
|
||||
|
||||
ofs = account_get_chain_fees(tmpctx, bkpr, acct_name);
|
||||
for (size_t i = 0; i < tal_count(ofs); i++) {
|
||||
if (!bitcoin_txid_eq(&ofs[i]->txid, txid))
|
||||
continue;
|
||||
if (ofs[i]->timestamp > timestamp)
|
||||
timestamp = ofs[i]->timestamp;
|
||||
}
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
/* If we're freeing the entire hash table, remove destructors from
|
||||
* individual entries! */
|
||||
static void ofees_hash_destroy(struct ofees_hash *ofees_hash)
|
||||
|
||||
@@ -67,11 +67,6 @@ struct fee_sum **find_account_onchain_fees(const tal_t *ctx,
|
||||
struct fee_sum **calculate_onchain_fee_sums(const tal_t *ctx,
|
||||
const struct bkpr *bkpr);
|
||||
|
||||
/* Find the last timestamp for the onchain fees for this txid + account */
|
||||
u64 onchain_fee_last_timestamp(const struct bkpr *bkpr,
|
||||
const char *acct_name,
|
||||
const struct bitcoin_txid *txid);
|
||||
|
||||
/* Update our onchain fees now? */
|
||||
char *maybe_update_onchain_fees(const tal_t *ctx,
|
||||
struct command *cmd,
|
||||
|
||||
@@ -18,6 +18,7 @@ struct fee_sum {
|
||||
const char *acct_name;
|
||||
struct bitcoin_txid *txid;
|
||||
struct amount_msat fees_paid;
|
||||
u64 last_timestamp;
|
||||
};
|
||||
|
||||
struct txo_pair {
|
||||
|
||||
Reference in New Issue
Block a user