Skip to content

Commit 9599801

Browse files
authored
fix: remove mandatory API key checks (#639)
1 parent 4abcebc commit 9599801

28 files changed

+119
-111
lines changed

cli/src/main.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,8 @@ async fn main() -> Result<()> {
8080
let mut config = LiquidSdk::default_config(network, breez_api_key)?;
8181
config.working_dir = data_dir_str;
8282
config.cache_dir = args.cache_dir;
83-
if let Some(sync_service_url) = std::env::var_os("SYNC_SERVICE_URL") {
84-
config.sync_service_url = sync_service_url
85-
.into_string()
86-
.expect("Expected valid sync service url");
87-
}
83+
config.sync_service_url = std::env::var_os("SYNC_SERVICE_URL")
84+
.map(|var| var.into_string().expect("Expected valid sync service url"));
8885
let sdk = LiquidSdk::connect(ConnectRequest {
8986
mnemonic: mnemonic.to_string(),
9087
config,

lib/bindings/src/breez_sdk_liquid.udl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ dictionary Config {
332332
LiquidNetwork network;
333333
u64 payment_timeout_sec;
334334
u32 zero_conf_min_fee_rate_msat;
335-
string sync_service_url;
335+
string? sync_service_url;
336336
string? breez_api_key;
337337
string? cache_dir;
338338
u64? zero_conf_max_amount_sat;

lib/bindings/tests/bindings/csharp/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
try
55
{
66
var mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
7-
var config = BreezSdkLiquidMethods.DefaultConfig(LiquidNetwork.Testnet, null);
7+
var config = BreezSdkLiquidMethods.DefaultConfig(LiquidNetwork.Testnet, null) with { syncServiceUrl = null };
88

99
var connectReq = new ConnectRequest(config, mnemonic);
1010
BindingLiquidSdk sdk = BreezSdkLiquidMethods.Connect(connectReq);

lib/bindings/tests/bindings/golang/test_breez_sdk_liquid.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
func main() {
1010
mnemonic := "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
1111
config, err := breez_sdk_liquid.DefaultConfig(breez_sdk_liquid.LiquidNetworkTestnet, nil)
12+
config.SyncServiceUrl = nil
1213

1314
if err != nil {
1415
log.Fatalf("Config creation failed: %#v", err)

lib/bindings/tests/bindings/test_breez_liquid_sdk.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
try
55
{
66
var mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
7-
var config = BreezSdkLiquidMethods.DefaultConfig(LiquidNetwork.Testnet, null);
7+
var config = BreezSdkLiquidMethods.DefaultConfig(LiquidNetwork.Testnet, null) with { syncServiceUrl = null };
88

99
var connectReq = new ConnectRequest(config, mnemonic);
1010
BindingLiquidSdk sdk = BreezSdkLiquidMethods.Connect(connectReq);

lib/bindings/tests/bindings/test_breez_sdk_liquid.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class SDKListener: breez_sdk_liquid.EventListener {
88
try {
99
var mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
1010
var config = breez_sdk_liquid.defaultConfig(breez_sdk_liquid.LiquidNetwork.TESTNET, null)
11+
config.syncServiceUrl = null
1112
var connectRequest = breez_sdk_liquid.ConnectRequest(config, mnemonic)
1213
var sdk = breez_sdk_liquid.connect(connectRequest)
1314

lib/bindings/tests/bindings/test_breez_sdk_liquid.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ def on_event(self, event):
99
def test():
1010
mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
1111
config = breez_sdk_liquid.default_config(breez_sdk_liquid.LiquidNetwork.TESTNET, None)
12+
config.sync_service_url = None
1213
connect_request = breez_sdk_liquid.ConnectRequest(config=config, mnemonic=mnemonic)
1314
sdk = breez_sdk_liquid.connect(connect_request)
1415

lib/bindings/tests/bindings/test_breez_sdk_liquid.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ class SDKListener: EventListener {
77
}
88

99
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
10-
let config = try breez_sdk_liquid.defaultConfig(network: .testnet, breezApiKey: nil);
10+
var config = try breez_sdk_liquid.defaultConfig(network: .testnet, breezApiKey: nil);
11+
config.syncServiceUrl = nil
1112
let connectRequest = breez_sdk_liquid.ConnectRequest(config: config, mnemonic: mnemonic);
1213
let sdk = try breez_sdk_liquid.connect(req: connectRequest);
1314

lib/core/src/frb_generated.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2496,7 +2496,7 @@ impl SseDecode for crate::model::Config {
24962496
let mut var_network = <crate::model::LiquidNetwork>::sse_decode(deserializer);
24972497
let mut var_paymentTimeoutSec = <u64>::sse_decode(deserializer);
24982498
let mut var_zeroConfMinFeeRateMsat = <u32>::sse_decode(deserializer);
2499-
let mut var_syncServiceUrl = <String>::sse_decode(deserializer);
2499+
let mut var_syncServiceUrl = <Option<String>>::sse_decode(deserializer);
25002500
let mut var_zeroConfMaxAmountSat = <Option<u64>>::sse_decode(deserializer);
25012501
let mut var_breezApiKey = <Option<String>>::sse_decode(deserializer);
25022502
let mut var_externalInputParsers =
@@ -7082,7 +7082,7 @@ impl SseEncode for crate::model::Config {
70827082
<crate::model::LiquidNetwork>::sse_encode(self.network, serializer);
70837083
<u64>::sse_encode(self.payment_timeout_sec, serializer);
70847084
<u32>::sse_encode(self.zero_conf_min_fee_rate_msat, serializer);
7085-
<String>::sse_encode(self.sync_service_url, serializer);
7085+
<Option<String>>::sse_encode(self.sync_service_url, serializer);
70867086
<Option<u64>>::sse_encode(self.zero_conf_max_amount_sat, serializer);
70877087
<Option<String>>::sse_encode(self.breez_api_key, serializer);
70887088
<Option<Vec<crate::bindings::ExternalInputParser>>>::sse_encode(

lib/core/src/model.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::utils;
2929
// Uses f64 for the maximum precision when converting between units
3030
pub const LIQUID_FEE_RATE_SAT_PER_VBYTE: f64 = 0.1;
3131
pub const LIQUID_FEE_RATE_MSAT_PER_VBYTE: f32 = (LIQUID_FEE_RATE_SAT_PER_VBYTE * 1000.0) as f32;
32-
const BREEZ_SYNC_SERVICE_URL: &str = "https://datasync.breez.technology";
32+
pub const BREEZ_SYNC_SERVICE_URL: &str = "https://datasync.breez.technology";
3333

3434
/// Configuration for the Liquid SDK
3535
#[derive(Clone, Debug, Serialize)]
@@ -49,8 +49,9 @@ pub struct Config {
4949
pub payment_timeout_sec: u64,
5050
/// Zero-conf minimum accepted fee-rate in millisatoshis per vbyte
5151
pub zero_conf_min_fee_rate_msat: u32,
52-
/// The url of the real-time sync service
53-
pub sync_service_url: String,
52+
/// The url of the real-time sync service. Defaults to [BREEZ_SYNC_SERVICE_URL]
53+
/// Setting this field to `None` will disable the service
54+
pub sync_service_url: Option<String>,
5455
/// Maximum amount in satoshi to accept zero-conf payments with
5556
/// Defaults to [DEFAULT_ZERO_CONF_MAX_SAT]
5657
pub zero_conf_max_amount_sat: Option<u64>,
@@ -74,7 +75,7 @@ pub struct Config {
7475
}
7576

7677
impl Config {
77-
pub fn mainnet(breez_api_key: String) -> Self {
78+
pub fn mainnet(breez_api_key: Option<String>) -> Self {
7879
Config {
7980
liquid_electrum_url: "elements-mainnet.breez.technology:50002".to_string(),
8081
bitcoin_electrum_url: "bitcoin-mainnet.blockstream.info:50002".to_string(),
@@ -84,9 +85,9 @@ impl Config {
8485
network: LiquidNetwork::Mainnet,
8586
payment_timeout_sec: 15,
8687
zero_conf_min_fee_rate_msat: DEFAULT_ZERO_CONF_MIN_FEE_RATE,
87-
sync_service_url: BREEZ_SYNC_SERVICE_URL.to_string(),
88+
sync_service_url: Some(BREEZ_SYNC_SERVICE_URL.to_string()),
8889
zero_conf_max_amount_sat: None,
89-
breez_api_key: Some(breez_api_key),
90+
breez_api_key,
9091
external_input_parsers: None,
9192
use_default_external_input_parsers: true,
9293
onchain_fee_rate_leeway_sat_per_vbyte: None,
@@ -103,7 +104,7 @@ impl Config {
103104
network: LiquidNetwork::Testnet,
104105
payment_timeout_sec: 15,
105106
zero_conf_min_fee_rate_msat: DEFAULT_ZERO_CONF_MIN_FEE_RATE,
106-
sync_service_url: BREEZ_SYNC_SERVICE_URL.to_string(),
107+
sync_service_url: Some(BREEZ_SYNC_SERVICE_URL.to_string()),
107108
zero_conf_max_amount_sat: None,
108109
breez_api_key,
109110
external_input_parsers: None,

lib/core/src/persist/cache.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ impl Persister {
159159
let tx = con.transaction_with_behavior(TransactionBehavior::Immediate)?;
160160
self.set_last_derivation_index_inner(&tx, index)?;
161161
tx.commit()?;
162-
self.sync_trigger.try_send(())?;
162+
self.trigger_sync()?;
163163
Ok(())
164164
}
165165

@@ -183,8 +183,7 @@ impl Persister {
183183
None => None,
184184
};
185185
tx.commit()?;
186-
self.sync_trigger.try_send(())?;
187-
186+
self.trigger_sync()?;
188187
Ok(res)
189188
}
190189
}

lib/core/src/persist/chain.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl Persister {
117117
true => {
118118
self.commit_outgoing(&tx, &chain_swap.id, RecordType::Chain, updated_fields)?;
119119
tx.commit()?;
120-
self.sync_trigger.try_send(())?;
120+
self.trigger_sync()?;
121121
}
122122
false => {
123123
tx.commit()?;
@@ -305,11 +305,9 @@ impl Persister {
305305
Some(vec!["accept_zero_conf".to_string()]),
306306
)?;
307307
tx.commit()?;
308-
self.sync_trigger
309-
.try_send(())
310-
.map_err(|err| PaymentError::Generic {
311-
err: format!("Could not trigger manual sync: {err:?}"),
312-
})?;
308+
self.trigger_sync().map_err(|err| PaymentError::Generic {
309+
err: format!("Could not trigger manual sync: {err:?}"),
310+
})?;
313311

314312
Ok(())
315313
}
@@ -367,11 +365,9 @@ impl Persister {
367365
Some(vec!["accepted_receiver_amount_sat".to_string()]),
368366
)?;
369367
tx.commit()?;
370-
self.sync_trigger
371-
.try_send(())
372-
.map_err(|err| PaymentError::Generic {
373-
err: format!("Could not trigger manual sync: {err:?}"),
374-
})?;
368+
self.trigger_sync().map_err(|err| PaymentError::Generic {
369+
err: format!("Could not trigger manual sync: {err:?}"),
370+
})?;
375371

376372
Ok(())
377373
}

lib/core/src/persist/mod.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub(crate) mod sync;
1010

1111
use std::collections::{HashMap, HashSet};
1212
use std::ops::Not;
13+
use std::sync::RwLock;
1314
use std::{fs::create_dir_all, path::PathBuf, str::FromStr};
1415

1516
use crate::lightning_invoice::{Bolt11Invoice, Bolt11InvoiceDescription};
@@ -33,7 +34,7 @@ const DEFAULT_DB_FILENAME: &str = "storage.sql";
3334
pub(crate) struct Persister {
3435
main_db_dir: PathBuf,
3536
network: LiquidNetwork,
36-
sync_trigger: Sender<()>,
37+
pub(crate) sync_trigger: RwLock<Option<Sender<()>>>,
3738
}
3839

3940
/// Builds a WHERE clause that checks if `state` is any of the given arguments
@@ -52,7 +53,7 @@ impl Persister {
5253
pub fn new(
5354
working_dir: &str,
5455
network: LiquidNetwork,
55-
sync_trigger: Sender<()>,
56+
sync_trigger: Option<Sender<()>>,
5657
) -> Result<Self> {
5758
let main_db_dir = PathBuf::from_str(working_dir)?;
5859
if !main_db_dir.exists() {
@@ -61,7 +62,7 @@ impl Persister {
6162
Ok(Persister {
6263
main_db_dir,
6364
network,
64-
sync_trigger,
65+
sync_trigger: RwLock::new(sync_trigger),
6566
})
6667
}
6768

@@ -238,9 +239,8 @@ impl Persister {
238239
}
239240

240241
tx.commit()?;
241-
242242
if trigger_sync {
243-
self.sync_trigger.try_send(())?;
243+
self.trigger_sync()?;
244244
}
245245

246246
Ok(())
@@ -299,8 +299,7 @@ impl Persister {
299299
None,
300300
)?;
301301
tx.commit()?;
302-
303-
self.sync_trigger.try_send(())?;
302+
self.trigger_sync()?;
304303

305304
Ok(())
306305
}

lib/core/src/persist/receive.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl Persister {
117117
true => {
118118
self.commit_outgoing(&tx, &receive_swap.id, RecordType::Receive, updated_fields)?;
119119
tx.commit()?;
120-
self.sync_trigger.try_send(())?;
120+
self.trigger_sync()?;
121121
}
122122
false => {
123123
tx.commit()?;

lib/core/src/persist/send.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ impl Persister {
102102
true => {
103103
self.commit_outgoing(&tx, &send_swap.id, RecordType::Send, updated_fields)?;
104104
tx.commit()?;
105-
self.sync_trigger.try_send(())?;
105+
self.trigger_sync()?;
106106
}
107107
false => {
108108
tx.commit()?;
@@ -298,11 +298,10 @@ impl Persister {
298298
let updated_fields = get_updated_fields!(preimage);
299299
self.commit_outgoing(&tx, swap_id, RecordType::Send, updated_fields)?;
300300
tx.commit()?;
301-
self.sync_trigger
302-
.try_send(())
303-
.map_err(|err| PaymentError::Generic {
304-
err: format!("Could not trigger manual sync: {err:?}"),
305-
})?;
301+
302+
self.trigger_sync().map_err(|err| PaymentError::Generic {
303+
err: format!("Could not trigger manual sync: {err:?}"),
304+
})?;
306305

307306
Ok(())
308307
}

lib/core/src/persist/sync.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ impl Persister {
249249
record_type: RecordType,
250250
updated_fields: Option<Vec<String>>,
251251
) -> Result<()> {
252+
if self.sync_trigger.try_read().is_ok_and(|t| t.is_none()) {
253+
return Ok(());
254+
}
255+
252256
let record_id = Record::get_id_from_record_type(record_type, data_id);
253257
let updated_fields = updated_fields
254258
.map(|fields| {
@@ -493,4 +497,13 @@ impl Persister {
493497

494498
Ok(())
495499
}
500+
501+
pub(crate) fn trigger_sync(&self) -> Result<()> {
502+
if let Ok(lock) = self.sync_trigger.try_read() {
503+
if let Some(trigger) = lock.clone() {
504+
trigger.try_send(())?;
505+
}
506+
}
507+
Ok(())
508+
}
496509
}

0 commit comments

Comments
 (0)