lnchannel.available_to_spend: minor refactor
This commit is contained in:
@@ -1056,7 +1056,7 @@ class Channel(AbstractChannel):
|
|||||||
receiver = subject.inverted()
|
receiver = subject.inverted()
|
||||||
initiator = LOCAL if self.constraints.is_initiator else REMOTE # the initiator/funder pays on-chain fees
|
initiator = LOCAL if self.constraints.is_initiator else REMOTE # the initiator/funder pays on-chain fees
|
||||||
|
|
||||||
def consider_ctx(*, ctx_owner: HTLCOwner) -> int:
|
def consider_ctx(*, ctx_owner: HTLCOwner, is_htlc_dust: bool) -> int:
|
||||||
ctn = self.get_next_ctn(ctx_owner)
|
ctn = self.get_next_ctn(ctx_owner)
|
||||||
sender_balance_msat = self.balance_minus_outgoing_htlcs(whose=sender, ctx_owner=ctx_owner, ctn=ctn)
|
sender_balance_msat = self.balance_minus_outgoing_htlcs(whose=sender, ctx_owner=ctx_owner, ctn=ctn)
|
||||||
receiver_balance_msat = self.balance_minus_outgoing_htlcs(whose=receiver, ctx_owner=ctx_owner, ctn=ctn)
|
receiver_balance_msat = self.balance_minus_outgoing_htlcs(whose=receiver, ctx_owner=ctx_owner, ctn=ctn)
|
||||||
@@ -1074,21 +1074,27 @@ class Channel(AbstractChannel):
|
|||||||
htlc_trim_func = received_htlc_trim_threshold_sat if ctx_owner == receiver else offered_htlc_trim_threshold_sat
|
htlc_trim_func = received_htlc_trim_threshold_sat if ctx_owner == receiver else offered_htlc_trim_threshold_sat
|
||||||
htlc_trim_threshold_msat = htlc_trim_func(dust_limit_sat=self.config[ctx_owner].dust_limit_sat, feerate=feerate) * 1000
|
htlc_trim_threshold_msat = htlc_trim_func(dust_limit_sat=self.config[ctx_owner].dust_limit_sat, feerate=feerate) * 1000
|
||||||
max_send_msat = sender_balance_msat - sender_reserve_msat - ctx_fees_msat[sender]
|
max_send_msat = sender_balance_msat - sender_reserve_msat - ctx_fees_msat[sender]
|
||||||
if max_send_msat < htlc_trim_threshold_msat:
|
if is_htlc_dust:
|
||||||
# there will be no corresponding HTLC output
|
return min(max_send_msat, htlc_trim_threshold_msat - 1)
|
||||||
return max_send_msat
|
|
||||||
if sender == initiator:
|
|
||||||
max_send_after_htlc_fee_msat = max_send_msat - htlc_fee_msat
|
|
||||||
max_send_msat = max(htlc_trim_threshold_msat - 1, max_send_after_htlc_fee_msat)
|
|
||||||
return max_send_msat
|
|
||||||
else:
|
else:
|
||||||
# the receiver is the initiator, so they need to be able to pay tx fees
|
if sender == initiator:
|
||||||
if receiver_balance_msat - receiver_reserve_msat - ctx_fees_msat[receiver] - htlc_fee_msat < 0:
|
return max_send_msat - htlc_fee_msat
|
||||||
max_send_msat = htlc_trim_threshold_msat - 1
|
else:
|
||||||
return max_send_msat
|
# the receiver is the initiator, so they need to be able to pay tx fees
|
||||||
|
if receiver_balance_msat - receiver_reserve_msat - ctx_fees_msat[receiver] - htlc_fee_msat < 0:
|
||||||
|
return 0
|
||||||
|
return max_send_msat
|
||||||
|
|
||||||
max_send_msat = min(consider_ctx(ctx_owner=receiver),
|
max_send_msat = min(
|
||||||
consider_ctx(ctx_owner=sender))
|
max(
|
||||||
|
consider_ctx(ctx_owner=receiver, is_htlc_dust=True),
|
||||||
|
consider_ctx(ctx_owner=receiver, is_htlc_dust=False),
|
||||||
|
),
|
||||||
|
max(
|
||||||
|
consider_ctx(ctx_owner=sender, is_htlc_dust=True),
|
||||||
|
consider_ctx(ctx_owner=sender, is_htlc_dust=False),
|
||||||
|
),
|
||||||
|
)
|
||||||
max_send_msat = max(max_send_msat, 0)
|
max_send_msat = max(max_send_msat, 0)
|
||||||
return max_send_msat
|
return max_send_msat
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user