Skip to content

Commit f7ad50d

Browse files
Merge pull request #1160 from getlipa/feature/bump-breez-sdk-to-0.5.2
Bump Breez SDK to 0.5.2
2 parents 401d842 + 629df78 commit f7ad50d

File tree

4 files changed

+51
-36
lines changed

4 files changed

+51
-36
lines changed

Cargo.lock

Lines changed: 6 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ perro = { git = "https://github.com/getlipa/perro", tag = "v1.2.0" }
2626
pigeon = { git = "https://github.com/getlipa/wild", tag = "v1.26.0" }
2727
squirrel = { git = "https://github.com/getlipa/wild", tag = "v1.26.0" }
2828

29-
breez-sdk-core = { git = "https://github.com/breez/breez-sdk", tag = "0.5.1-rc6" }
29+
breez-sdk-core = { git = "https://github.com/breez/breez-sdk", tag = "0.5.2" }
3030

3131
aes-gcm = "0.10.3"
3232
bip39 = "2.0.0"

src/lib.rs

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ pub use pocketclient::FiatTopupInfo;
9797
use pocketclient::PocketClient;
9898

9999
pub use breez_sdk_core::error::ReceiveOnchainError as SwapError;
100-
use breez_sdk_core::error::{ReceiveOnchainError, SendPaymentError};
100+
pub use breez_sdk_core::error::RedeemOnchainError as SweepError;
101+
use breez_sdk_core::error::{ReceiveOnchainError, RedeemOnchainError, SendPaymentError};
101102
pub use breez_sdk_core::HealthCheckStatus as BreezHealthCheckStatus;
102103
pub use breez_sdk_core::ReverseSwapStatus;
103104
use breez_sdk_core::{
@@ -1954,29 +1955,27 @@ impl LightningNode {
19541955
/// the sweep transaction.
19551956
///
19561957
/// Requires network: **yes**
1957-
pub fn prepare_sweep(&self, address: String, onchain_fee_rate: u32) -> Result<SweepInfo> {
1958-
let res = self
1959-
.rt
1960-
.handle()
1961-
.block_on(
1962-
self.sdk
1963-
.prepare_redeem_onchain_funds(PrepareRedeemOnchainFundsRequest {
1958+
pub fn prepare_sweep(
1959+
&self,
1960+
address: String,
1961+
onchain_fee_rate: u32,
1962+
) -> std::result::Result<SweepInfo, RedeemOnchainError> {
1963+
let res =
1964+
self.rt
1965+
.handle()
1966+
.block_on(self.sdk.prepare_redeem_onchain_funds(
1967+
PrepareRedeemOnchainFundsRequest {
19641968
to_address: address.clone(),
19651969
sat_per_vbyte: onchain_fee_rate,
1966-
}),
1967-
)
1968-
.map_to_runtime_error(
1969-
RuntimeErrorCode::NodeUnavailable,
1970-
"Failed to prepare sweep transaction",
1971-
)?;
1970+
},
1971+
))?;
19721972

19731973
let onchain_balance_sat = self
19741974
.sdk
19751975
.node_info()
1976-
.map_to_runtime_error(
1977-
RuntimeErrorCode::NodeUnavailable,
1978-
"Failed to fetch on-chain balance",
1979-
)?
1976+
.map_err(|e| RedeemOnchainError::ServiceConnectivity {
1977+
err: format!("Failed to fetch on-chain balance: {e}"),
1978+
})?
19801979
.onchain_balance_msat
19811980
.as_msats()
19821981
.to_amount_down(&None)
@@ -1987,7 +1986,9 @@ impl LightningNode {
19871986
// Add the amount that won't be possible to be swept due to CLN's min-emergency limit (546 sats)
19881987
// TODO: remove CLN_DUST_LIMIT_SAT addition if/when
19891988
// https://github.com/ElementsProject/lightning/issues/7131 is addressed
1990-
let utxos = self.get_node_utxos()?;
1989+
let utxos = self
1990+
.get_node_utxos()
1991+
.map_err(|e| RedeemOnchainError::Generic { err: e.to_string() })?;
19911992
let onchain_fee_sat = if utxos
19921993
.iter()
19931994
.any(|u| u.amount_millisatoshi == CLN_DUST_LIMIT_SAT * 1_000)
@@ -2215,9 +2216,11 @@ impl LightningNode {
22152216
sat_per_vbyte,
22162217
) {
22172218
Ok(s) => s,
2218-
// TODO: Stop parsing error string when https://github.com/breez/breez-sdk/issues/1059 is addressed
2219-
Err(e) if e.to_string().contains("Insufficient funds to pay fees") => return Ok(None),
2220-
Err(e) => return Err(e),
2219+
Err(RedeemOnchainError::InsufficientFunds { .. }) => return Ok(None),
2220+
Err(e) => runtime_error!(
2221+
RuntimeErrorCode::NodeUnavailable,
2222+
"Failed to prepare sweep: {e}"
2223+
),
22212224
};
22222225

22232226
// Require onchain fees to be less than half of the onchain balance to leave some leeway
@@ -2280,10 +2283,14 @@ impl LightningNode {
22802283
&self,
22812284
sat_per_vbyte: u32,
22822285
lsp_fee_params: Option<OpeningFeeParams>,
2283-
) -> std::result::Result<String, ReceiveOnchainError> {
2286+
) -> std::result::Result<String, RedeemOnchainError> {
22842287
let onchain_balance = self.sdk.node_info()?.onchain_balance_msat.as_msats();
22852288

2286-
let swap_address_info = self.generate_swap_address(lsp_fee_params.clone())?;
2289+
let swap_address_info =
2290+
self.generate_swap_address(lsp_fee_params.clone())
2291+
.map_err(|e| RedeemOnchainError::Generic {
2292+
err: format!("Couldn't generate swap address: {}", e),
2293+
})?;
22872294

22882295
let prepare_response =
22892296
self.rt
@@ -2301,7 +2308,7 @@ impl LightningNode {
23012308
- prepare_response.tx_fee_sat;
23022309

23032310
if swap_address_info.min_deposit.sats > send_amount_sats {
2304-
return Err(ReceiveOnchainError::Generic {
2311+
return Err(RedeemOnchainError::InsufficientFunds {
23052312
err: format!(
23062313
"Not enough funds ({} sats after onchain fees) available for min swap amount({} sats)",
23072314
send_amount_sats,
@@ -2311,7 +2318,7 @@ impl LightningNode {
23112318
}
23122319

23132320
if swap_address_info.max_deposit.sats < send_amount_sats {
2314-
return Err(ReceiveOnchainError::Generic {
2321+
return Err(RedeemOnchainError::Generic {
23152322
err: format!(
23162323
"Available funds ({} sats after onchain fees) exceed limit for swap ({} sats)",
23172324
send_amount_sats, swap_address_info.max_deposit.sats,
@@ -2321,13 +2328,13 @@ impl LightningNode {
23212328

23222329
let lsp_fees = self
23232330
.calculate_lsp_fee(send_amount_sats)
2324-
.map_err(|_| ReceiveOnchainError::ServiceConnectivity {
2331+
.map_err(|_| RedeemOnchainError::ServiceConnectivity {
23252332
err: "Could not get lsp fees".to_string(),
23262333
})?
23272334
.lsp_fee
23282335
.sats;
23292336
if lsp_fees >= send_amount_sats {
2330-
return Err(ReceiveOnchainError::Generic {
2337+
return Err(RedeemOnchainError::InsufficientFunds {
23312338
err: format!(
23322339
"Available funds ({} sats after onchain fees) are not enough for lsp fees ({} sats)",
23332340
send_amount_sats, lsp_fees,

src/lipalightninglib.udl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ interface LightningNode {
113113
[Throws=LnError]
114114
u32 query_onchain_fee_rate();
115115

116-
[Throws=LnError]
116+
[Throws=SweepError]
117117
SweepInfo prepare_sweep(string address, u32 onchain_fee_rate);
118118

119119
[Throws=LnError]
@@ -134,7 +134,7 @@ interface LightningNode {
134134
[Throws=LnError]
135135
ChannelCloseResolvingFees? get_channel_close_resolving_fees();
136136

137-
[Throws=SwapError]
137+
[Throws=SweepError]
138138
string swap_onchain_to_lightning(u32 sats_per_vbyte, OpeningFeeParams? lsp_fee_params);
139139

140140
[Throws=LnError]
@@ -838,6 +838,13 @@ interface SwapError {
838838
SwapInProgress(string err);
839839
};
840840

841+
[Error]
842+
interface SweepError {
843+
Generic(string err);
844+
ServiceConnectivity(string err);
845+
InsufficientFunds(string err);
846+
};
847+
841848
[Error]
842849
interface NotificationHandlingError {
843850
InvalidInput(string msg);

0 commit comments

Comments
 (0)