mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
bcli: use a more urgent feerate for HTLCs and penalty transactions
A CONSERVATIVE/3 target for them. Some noisy changes to the tests as we had to update the estimatesmartfee mock. Changelog-Changed: We now use a higher feerate for resolving onchain HTLCs and for penalty transactions
This commit is contained in:
@@ -456,7 +456,7 @@ static struct command_result *process_getblockchaininfo(struct bitcoin_cli *bcli
|
||||
|
||||
struct estimatefees_stash {
|
||||
/* FIXME: We use u64 but lightningd will store them as u32. */
|
||||
u64 urgent, normal, slow;
|
||||
u64 very_urgent, urgent, normal, slow;
|
||||
};
|
||||
|
||||
static struct command_result *
|
||||
@@ -532,10 +532,10 @@ static struct command_result *estimatefees_final_step(struct bitcoin_cli *bcli)
|
||||
response = jsonrpc_stream_success(bcli->cmd);
|
||||
json_add_u64(response, "opening", stash->normal);
|
||||
json_add_u64(response, "mutual_close", stash->normal);
|
||||
json_add_u64(response, "unilateral_close", stash->urgent);
|
||||
json_add_u64(response, "unilateral_close", stash->very_urgent);
|
||||
json_add_u64(response, "delayed_to_us", stash->normal);
|
||||
json_add_u64(response, "htlc_resolution", stash->normal);
|
||||
json_add_u64(response, "penalty", stash->normal);
|
||||
json_add_u64(response, "htlc_resolution", stash->urgent);
|
||||
json_add_u64(response, "penalty", stash->urgent);
|
||||
/* We divide the slow feerate for the minimum acceptable, lightningd
|
||||
* will use floor if it's hit, though. */
|
||||
json_add_u64(response, "min_acceptable", stash->slow / 2);
|
||||
@@ -546,13 +546,13 @@ static struct command_result *estimatefees_final_step(struct bitcoin_cli *bcli)
|
||||
* margin (say 5x the expected fee requirement)
|
||||
*/
|
||||
json_add_u64(response, "max_acceptable",
|
||||
stash->urgent * bitcoind->max_fee_multiplier);
|
||||
stash->very_urgent * bitcoind->max_fee_multiplier);
|
||||
|
||||
return command_finished(bcli->cmd, response);
|
||||
}
|
||||
|
||||
/* We got the response for the normal feerate, now treat the slow one. */
|
||||
static struct command_result *estimatefees_third_step(struct bitcoin_cli *bcli)
|
||||
static struct command_result *estimatefees_fourth_step(struct bitcoin_cli *bcli)
|
||||
{
|
||||
struct command_result *err;
|
||||
struct estimatefees_stash *stash = bcli->stash;
|
||||
@@ -575,7 +575,7 @@ static struct command_result *estimatefees_third_step(struct bitcoin_cli *bcli)
|
||||
}
|
||||
|
||||
/* We got the response for the urgent feerate, now treat the normal one. */
|
||||
static struct command_result *estimatefees_second_step(struct bitcoin_cli *bcli)
|
||||
static struct command_result *estimatefees_third_step(struct bitcoin_cli *bcli)
|
||||
{
|
||||
struct command_result *err;
|
||||
struct estimatefees_stash *stash = bcli->stash;
|
||||
@@ -591,6 +591,29 @@ static struct command_result *estimatefees_second_step(struct bitcoin_cli *bcli)
|
||||
|
||||
params[0] = "4";
|
||||
params[1] = "ECONOMICAL";
|
||||
start_bitcoin_cli(NULL, bcli->cmd, estimatefees_fourth_step, true,
|
||||
BITCOIND_LOW_PRIO, "estimatesmartfee", params, stash);
|
||||
|
||||
return command_still_pending(bcli->cmd);
|
||||
}
|
||||
|
||||
/* We got the response for the very urgent feerate, now treat the urgent one. */
|
||||
static struct command_result *estimatefees_second_step(struct bitcoin_cli *bcli)
|
||||
{
|
||||
struct command_result *err;
|
||||
struct estimatefees_stash *stash = bcli->stash;
|
||||
const char **params = tal_arr(bcli->cmd, const char *, 2);
|
||||
|
||||
/* If we cannot estimatefees, no need to continue bothering bitcoind. */
|
||||
if (*bcli->exitstatus != 0)
|
||||
return estimatefees_null_response(bcli);
|
||||
|
||||
err = estimatefees_parse_feerate(bcli, &stash->very_urgent);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
params[0] = "3";
|
||||
params[1] = "CONSERVATIVE";
|
||||
start_bitcoin_cli(NULL, bcli->cmd, estimatefees_third_step, true,
|
||||
BITCOIND_LOW_PRIO, "estimatesmartfee", params, stash);
|
||||
|
||||
@@ -726,8 +749,9 @@ static struct command_result *getchaininfo(struct command *cmd,
|
||||
return command_still_pending(cmd);
|
||||
}
|
||||
|
||||
/* Get the current feerates. We use an urgent feerate for unilateral_close and max,
|
||||
* a slow feerate for min, and a normal for all others.
|
||||
/* Get the current feerates. We us an urgent feerate for unilateral_close and max,
|
||||
* a slightly less urgent feerate for htlc_resolution and penalty transactions,
|
||||
* a slow feerate for min, and a normal one for all others.
|
||||
*
|
||||
* Calls `estimatesmartfee` with targets 2/CONSERVATIVE (urgent),
|
||||
* 4/ECONOMICAL (normal), and 100/ECONOMICAL (slow) then returns the
|
||||
|
||||
Reference in New Issue
Block a user