mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-19 05:44:12 +01:00
channeld: get htlc_maximum_msat from lightningd.
We used to calculate it ourselves. Unfortunately this needs to be done in several places, since new_channel() isn't used to fully create a channel in the case of dual funding :( Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
6fdcc86f9d
commit
3217dbe17f
@ -119,8 +119,12 @@ struct peer {
|
||||
|
||||
/* CLTV delta to announce to peers */
|
||||
u16 cltv_delta;
|
||||
|
||||
/* We only really know these because we're the ones who create
|
||||
* the channel_updates. */
|
||||
u32 fee_base;
|
||||
u32 fee_per_satoshi;
|
||||
struct amount_msat htlc_maximum_msat;
|
||||
|
||||
/* The scriptpubkey to use for shutting down. */
|
||||
u32 *final_index;
|
||||
@ -212,42 +216,6 @@ const u8 *hsm_req(const tal_t *ctx, const u8 *req TAKES)
|
||||
return msg;
|
||||
}
|
||||
|
||||
/*
|
||||
* The maximum msat that this node will accept for an htlc.
|
||||
* It's flagged as an optional field in `channel_update`.
|
||||
*
|
||||
* We advertize the maximum value possible, defined as the smaller
|
||||
* of the remote's maximum in-flight HTLC or the total channel
|
||||
* capacity the reserve we have to keep.
|
||||
* FIXME: does this need fuzz?
|
||||
*/
|
||||
static struct amount_msat advertized_htlc_max(const struct channel *channel)
|
||||
{
|
||||
struct amount_sat lower_bound;
|
||||
struct amount_msat lower_bound_msat;
|
||||
|
||||
/* This shouldn't fail */
|
||||
if (!amount_sat_sub(&lower_bound, channel->funding_sats,
|
||||
channel->config[REMOTE].channel_reserve)) {
|
||||
status_failed(STATUS_FAIL_INTERNAL_ERROR,
|
||||
"funding %s - remote reserve %s?",
|
||||
type_to_string(tmpctx, struct amount_sat,
|
||||
&channel->funding_sats),
|
||||
type_to_string(tmpctx, struct amount_sat,
|
||||
&channel->config[REMOTE]
|
||||
.channel_reserve));
|
||||
}
|
||||
|
||||
if (!amount_sat_to_msat(&lower_bound_msat, lower_bound)) {
|
||||
status_failed(STATUS_FAIL_INTERNAL_ERROR,
|
||||
"lower_bound %s invalid?",
|
||||
type_to_string(tmpctx, struct amount_sat,
|
||||
&lower_bound));
|
||||
}
|
||||
|
||||
return lower_bound_msat;
|
||||
}
|
||||
|
||||
#if EXPERIMENTAL_FEATURES
|
||||
static void maybe_send_stfu(struct peer *peer)
|
||||
{
|
||||
@ -396,7 +364,7 @@ static void send_channel_update(struct peer *peer, int disable_flag)
|
||||
peer->channel->config[REMOTE].htlc_minimum,
|
||||
peer->fee_base,
|
||||
peer->fee_per_satoshi,
|
||||
advertized_htlc_max(peer->channel));
|
||||
peer->htlc_maximum_msat);
|
||||
wire_sync_write(MASTER_FD, take(msg));
|
||||
}
|
||||
|
||||
@ -3774,6 +3742,7 @@ static void init_channel(struct peer *peer)
|
||||
&opener,
|
||||
&peer->fee_base,
|
||||
&peer->fee_per_satoshi,
|
||||
&peer->htlc_maximum_msat,
|
||||
&local_msat,
|
||||
&points[LOCAL],
|
||||
&funding_pubkey[LOCAL],
|
||||
|
@ -35,6 +35,7 @@ msgdata,channeld_init,old_remote_per_commit,pubkey,
|
||||
msgdata,channeld_init,opener,enum side,
|
||||
msgdata,channeld_init,fee_base,u32,
|
||||
msgdata,channeld_init,fee_proportional,u32,
|
||||
msgdata,channeld_init,htlc_maximum_msat,amount_msat,
|
||||
msgdata,channeld_init,local_msatoshi,amount_msat,
|
||||
msgdata,channeld_init,our_basepoints,basepoints,
|
||||
msgdata,channeld_init,our_funding_pubkey,pubkey,
|
||||
|
Can't render this file because it has a wrong number of fields in line 14.
|
@ -317,7 +317,7 @@ struct channel *new_unsaved_channel(struct peer *peer,
|
||||
* capacity the reserve we have to keep.
|
||||
* FIXME: does this need fuzz?
|
||||
*/
|
||||
static struct amount_msat htlc_max_possible_send(const struct channel *channel)
|
||||
struct amount_msat htlc_max_possible_send(const struct channel *channel)
|
||||
{
|
||||
struct amount_sat lower_bound;
|
||||
struct amount_msat lower_bound_msat;
|
||||
|
@ -481,4 +481,5 @@ struct htlc_out *channel_has_htlc_out(struct channel *channel);
|
||||
|
||||
const u8 *get_channel_update(struct channel *channel);
|
||||
|
||||
struct amount_msat htlc_max_possible_send(const struct channel *channel);
|
||||
#endif /* LIGHTNING_LIGHTNINGD_CHANNEL_H */
|
||||
|
@ -702,6 +702,7 @@ void peer_start_channeld(struct channel *channel,
|
||||
channel->opener,
|
||||
channel->feerate_base,
|
||||
channel->feerate_ppm,
|
||||
channel->htlc_maximum_msat,
|
||||
channel->our_msat,
|
||||
&channel->local_basepoints,
|
||||
&channel->local_funding_pubkey,
|
||||
|
@ -1110,6 +1110,7 @@ wallet_update_channel(struct lightningd *ld,
|
||||
channel->msat_to_us_min = our_msat;
|
||||
channel->msat_to_us_max = our_msat;
|
||||
channel->lease_expiry = lease_expiry;
|
||||
channel->htlc_maximum_msat = htlc_max_possible_send(channel);
|
||||
|
||||
tal_free(channel->lease_commit_sig);
|
||||
channel->lease_commit_sig = tal_steal(channel, lease_commit_sig);
|
||||
@ -1252,6 +1253,7 @@ wallet_commit_channel(struct lightningd *ld,
|
||||
|
||||
channel->lease_chan_max_msat = lease_chan_max_msat;
|
||||
channel->lease_chan_max_ppt = lease_chan_max_ppt;
|
||||
channel->htlc_maximum_msat = htlc_max_possible_send(channel);
|
||||
|
||||
/* Now we finally put it in the database. */
|
||||
wallet_channel_insert(ld->wallet, channel);
|
||||
|
Loading…
Reference in New Issue
Block a user