@@ -11087,25 +11087,29 @@ where
1108711087 }
1108811088
1108911089 /// Check that post-splicing balance meets reserve requirements, but only if it met it pre-splice as well
11090+ /// Check that post-splicing balance meets reserve requirements, but only if it met it pre-splice as well.
11091+ /// Returns the minimum channel reserve (sats)
1109011092 #[cfg(splicing)]
1109111093 pub fn check_splice_balance_meets_v2_reserve_requirement_noerr(
1109211094 &self, pre_balance: u64, post_balance: u64, pre_channel_value: u64,
1109311095 post_channel_value: u64, dust_limit: u64,
1109411096 ) -> Result<(), u64> {
11095- let post_channel_reserve = get_v2_channel_reserve_satoshis(post_channel_value, dust_limit);
11096- if post_balance >= post_channel_reserve {
11097+ let post_channel_reserve_sats =
11098+ get_v2_channel_reserve_satoshis(post_channel_value, dust_limit);
11099+ if post_balance >= post_channel_reserve_sats * 1000 {
1109711100 return Ok(());
1109811101 }
11099- let pre_channel_reserve = get_v2_channel_reserve_satoshis(pre_channel_value, dust_limit);
11100- if pre_balance >= pre_channel_reserve {
11102+ let pre_channel_reserve_sats =
11103+ get_v2_channel_reserve_satoshis(pre_channel_value, dust_limit);
11104+ if pre_balance >= pre_channel_reserve_sats * 1000 {
1110111105 // We're not allowed to dip below the reserve once we've been above.
11102- return Err(post_channel_reserve );
11106+ return Err(post_channel_reserve_sats );
1110311107 }
1110411108 // Make sure we either remain with the same balance or move towards the reserve.
1110511109 if post_balance >= pre_balance {
1110611110 Ok(())
1110711111 } else {
11108- Err(post_channel_reserve )
11112+ Err(post_channel_reserve_sats )
1110911113 }
1111011114 }
1111111115
@@ -11114,33 +11118,34 @@ where
1111411118 /// to check with new channel value (before being committed to it).
1111511119 #[cfg(splicing)]
1111611120 pub fn check_splice_balances_meet_v2_reserve_requirements(
11117- &self, self_balance_pre: u64, self_balance_post: u64, counterparty_balance_pre: u64,
11118- counterparty_balance_post: u64, channel_value_pre: u64, channel_value_post: u64,
11121+ &self, self_balance_pre_msat: u64, self_balance_post_msat: u64,
11122+ counterparty_balance_pre_msat: u64, counterparty_balance_post_msat: u64,
11123+ channel_value_pre: u64, channel_value_post: u64,
1111911124 ) -> Result<(), ChannelError> {
1112011125 let is_ok_self = self.check_splice_balance_meets_v2_reserve_requirement_noerr(
11121- self_balance_pre ,
11122- self_balance_post ,
11126+ self_balance_pre_msat ,
11127+ self_balance_post_msat ,
1112311128 channel_value_pre,
1112411129 channel_value_post,
1112511130 self.context.holder_dust_limit_satoshis,
1112611131 );
1112711132 if let Err(channel_reserve_self) = is_ok_self {
1112811133 return Err(ChannelError::Warn(format!(
1112911134 "Balance below reserve, mandated by holder, {} vs {}",
11130- self_balance_post , channel_reserve_self,
11135+ self_balance_post_msat , channel_reserve_self,
1113111136 )));
1113211137 }
1113311138 let is_ok_cp = self.check_splice_balance_meets_v2_reserve_requirement_noerr(
11134- counterparty_balance_pre ,
11135- counterparty_balance_post ,
11139+ counterparty_balance_pre_msat ,
11140+ counterparty_balance_post_msat ,
1113611141 channel_value_pre,
1113711142 channel_value_post,
1113811143 self.context.counterparty_dust_limit_satoshis,
1113911144 );
1114011145 if let Err(channel_reserve_cp) = is_ok_cp {
1114111146 return Err(ChannelError::Warn(format!(
1114211147 "Balance below reserve mandated by counterparty, {} vs {}",
11143- counterparty_balance_post , channel_reserve_cp,
11148+ counterparty_balance_post_msat , channel_reserve_cp,
1114411149 )));
1114511150 }
1114611151 Ok(())
0 commit comments