mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-20 02:27:51 +01:00
dc113d0a3f
clightning doesn't give us any info about onchain fees (how could it? it only knows about utxo object levels, and doesn't keep track of how/when those are all related) Instead, we keep running totals of the onchain fees for utxos. This implements the master method for accounting for them, plus includes tests to account for channel opens (across two accounts) as well as a htlc-tx channel close. Missing: we don't currently emit an event from cln for `withdraw` initiated removal of funds, so the accounting for wallet -> external funds is a bit janky. We don't account for the fees on these transactions since we don't have the resulting 'external' event to register them against!
66 lines
1.8 KiB
C
66 lines
1.8 KiB
C
#ifndef LIGHTNING_PLUGINS_BKPR_RECORDER_H
|
|
#define LIGHTNING_PLUGINS_BKPR_RECORDER_H
|
|
|
|
#include "config.h"
|
|
#include <ccan/tal/tal.h>
|
|
|
|
struct account;
|
|
struct bitcoin_txid;
|
|
struct chain_event;
|
|
struct channel_event;
|
|
struct db;
|
|
enum mvt_tag;
|
|
struct onchain_fee;
|
|
|
|
/* Get all accounts */
|
|
struct account **list_accounts(const tal_t *ctx, struct db *db);
|
|
|
|
/* Get all onchain fee records for this account */
|
|
struct onchain_fee **account_onchain_fees(const tal_t *ctx,
|
|
struct db *db,
|
|
struct account *acct);
|
|
|
|
/* Get all channel events for this account */
|
|
struct channel_event **account_get_channel_events(const tal_t *ctx,
|
|
struct db *db,
|
|
struct account *acct);
|
|
|
|
/* Get all chain events for this account */
|
|
struct chain_event **account_get_chain_events(const tal_t *ctx,
|
|
struct db *db,
|
|
struct account *acct);
|
|
|
|
/* List all chain fees, for all accounts */
|
|
struct onchain_fee **list_chain_fees(const tal_t *ctx, struct db *db);
|
|
|
|
/* Add the given account to the database */
|
|
void account_add(struct db *db, struct account *acct);
|
|
|
|
/* Given an account name, find that account record */
|
|
struct account *find_account(const tal_t *ctx,
|
|
struct db *db,
|
|
const char *name);
|
|
|
|
/* Some events update account information */
|
|
void maybe_update_account(struct db *db,
|
|
struct account *acct,
|
|
struct chain_event *e,
|
|
const enum mvt_tag *tags);
|
|
|
|
/* Update our onchain fees now? */
|
|
char *maybe_update_onchain_fees(const tal_t *ctx,
|
|
struct db *db,
|
|
struct bitcoin_txid *txid);
|
|
|
|
/* Log a channel event */
|
|
void log_channel_event(struct db *db,
|
|
const struct account *acct,
|
|
struct channel_event *e);
|
|
|
|
/* Log a chain event. */
|
|
void log_chain_event(struct db *db,
|
|
const struct account *acct,
|
|
struct chain_event *e);
|
|
|
|
#endif /* LIGHTNING_PLUGINS_BKPR_RECORDER_H */
|