Files
palladum-lightning/plugins/bkpr/onchain_fee.h
Rusty Russell c758672ac0 bookkeeper: honor start and ent times when consolidating onchain fees.
Fixes: https://github.com/ElementsProject/lightning/issues/8318

Reported-by: Shahaha
Changelog-Fixed: Plugins: `bkpr_listincome` now honors `start_time` and `end_time` parameters for onchain fees.
2025-10-21 20:21:56 +10:30

89 lines
2.6 KiB
C

#ifndef LIGHTNING_PLUGINS_BKPR_ONCHAIN_FEE_H
#define LIGHTNING_PLUGINS_BKPR_ONCHAIN_FEE_H
#include "config.h"
#include <bitcoin/tx.h>
#include <ccan/short_types/short_types.h>
#include <plugins/bkpr/bookkeeper.h>
struct account;
struct amount_msat;
struct bitcoin_txid;
struct db;
struct onchain_fees;
struct onchain_fee {
/* Name of the account this belongs to */
const char *acct_name;
/* Transaction that we're recording fees for */
struct bitcoin_txid txid;
/* Incremental change in onchain fees */
struct amount_msat credit;
struct amount_msat debit;
/* Timestamp of the event that created this fee update */
u64 timestamp;
/* Count of records we've recorded for this tx */
u32 update_count;
};
void json_add_onchain_fee(struct json_stream *out,
const struct onchain_fee *fee);
/* List all chain fees, for all accounts */
struct onchain_fee **list_chain_fees(const tal_t *ctx, const struct bkpr *bkpr);
/* Get all chain fees, order by timestamp.
*
* @ctx - context to allocate from
* @db - database to query
* @start_time - UNIX timestamp to query after (exclusive)
* @end_time - UNIX timestamp to query until (inclusive)
*/
struct onchain_fee **list_chain_fees_timebox(const tal_t *ctx,
const struct bkpr *bkpr,
u64 start_time, u64 end_time);
/* Get all chain fees for a transaction id, order by timestamp */
struct onchain_fee **get_chain_fees_by_txid(const tal_t *ctx,
const struct bkpr *bkpr,
const struct bitcoin_txid *txid);
/* Get chain fees for account */
struct onchain_fee **account_get_chain_fees(const tal_t *ctx,
const struct bkpr *bkpr,
const char *acct_name);
/* Returns a list of sums of the fees we've recorded for every txid
* for the given account */
struct fee_sum **find_account_onchain_fees(const tal_t *ctx,
const struct bkpr *bkpr,
const struct account *acct);
/* Final all the onchain fees */
struct fee_sum **calculate_onchain_fee_sums(const tal_t *ctx,
const struct bkpr *bkpr,
u64 start_time,
u64 end_time);
/* Update our onchain fees now? */
char *maybe_update_onchain_fees(const tal_t *ctx,
struct command *cmd,
struct bkpr *bkpr,
struct bitcoin_txid *txid);
/* We calculate onchain fees for channel closes a bit different */
char *update_channel_onchain_fees(const tal_t *ctx,
struct command *cmd,
struct bkpr *bkpr,
struct account *acct);
/* Set up the onchain_fees struct */
struct onchain_fees *init_onchain_fees(const tal_t *ctx,
struct command *init_cmd);
#endif /* LIGHTNING_PLUGINS_BKPR_ONCHAIN_FEE_H */