Skip to content

Commit 00cf9d9

Browse files
committed
Upgrade to BDK 2.0
1 parent 7977b04 commit 00cf9d9

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

Cargo.toml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,23 +61,28 @@ lightning-liquidity = { version = "0.1.0", features = ["std"] }
6161
#lightning-transaction-sync = { path = "../rust-lightning/lightning-transaction-sync", features = ["esplora-async-https", "electrum", "time"] }
6262
#lightning-liquidity = { path = "../rust-lightning/lightning-liquidity", features = ["std"] }
6363

64-
bdk_chain = { version = "0.21.1", default-features = false, features = ["std"] }
65-
bdk_esplora = { version = "0.20.1", default-features = false, features = ["async-https-rustls", "tokio"]}
66-
bdk_electrum = { version = "0.20.1", default-features = false, features = ["use-rustls"]}
67-
bdk_wallet = { version = "1.0.0", default-features = false, features = ["std", "keys-bip39"]}
64+
bdk_chain = { version = "0.23.0", default-features = false, features = ["std"] }
65+
bdk_esplora = { version = "0.22.0", default-features = false, features = ["async-https-rustls", "tokio"]}
66+
bdk_electrum = { version = "0.23.0", default-features = false, features = ["use-rustls"]}
67+
bdk_wallet = { version = "2.0.0", default-features = false, features = ["std", "keys-bip39"]}
6868

69-
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] }
69+
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
7070
rusqlite = { version = "0.31.0", features = ["bundled"] }
71-
bitcoin = "0.32.2"
71+
bitcoin = "0.32.4"
7272
bip39 = "2.0.0"
7373
bip21 = { version = "0.5", features = ["std"], default-features = false }
7474

7575
base64 = { version = "0.22.1", default-features = false, features = ["std"] }
7676
rand = "0.8.5"
7777
chrono = { version = "0.4", default-features = false, features = ["clock"] }
7878
tokio = { version = "1.37", default-features = false, features = [ "rt-multi-thread", "time", "sync", "macros" ] }
79-
esplora-client = { version = "0.11", default-features = false, features = ["tokio", "async-https-rustls"] }
80-
electrum-client = { version = "0.22.0", default-features = true }
79+
esplora-client = { version = "0.12", default-features = false, features = ["tokio", "async-https-rustls"] }
80+
81+
# FIXME: This was introduced to decouple the `bdk_esplora` and
82+
# `lightning-transaction-sync` APIs. We should drop it as part of the upgrade
83+
# to LDK 0.2.
84+
esplora-client_0_11 = { package = "esplora-client", version = "0.11", default-features = false, features = ["tokio", "async-https-rustls"] }
85+
electrum-client = { version = "0.23.1", default-features = true }
8186
libc = "0.2"
8287
uniffi = { version = "0.27.3", features = ["build"], optional = true }
8388
serde = { version = "1.0.210", default-features = false, features = ["std", "derive"] }
@@ -98,10 +103,10 @@ proptest = "1.0.0"
98103
regex = "1.5.6"
99104

100105
[target.'cfg(not(no_download))'.dev-dependencies]
101-
electrsd = { version = "0.33.0", default-features = false, features = ["legacy", "esplora_a33e97e1", "corepc-node_27_2"] }
106+
electrsd = { version = "0.34.0", default-features = false, features = ["legacy", "esplora_a33e97e1", "corepc-node_27_2"] }
102107

103108
[target.'cfg(no_download)'.dev-dependencies]
104-
electrsd = { version = "0.33.0", default-features = false, features = ["legacy"] }
109+
electrsd = { version = "0.34.0", default-features = false, features = ["legacy"] }
105110
corepc-node = { version = "0.7.0", default-features = false, features = ["27_2"] }
106111

107112
[target.'cfg(cln_test)'.dev-dependencies]

src/chain/mod.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,18 @@ impl ChainSource {
237237
kv_store: Arc<DynStore>, config: Arc<Config>, logger: Arc<Logger>,
238238
node_metrics: Arc<RwLock<NodeMetrics>>,
239239
) -> Self {
240+
// FIXME / TODO: We introduced this to make `bdk_esplora` work separately without updating
241+
// `lightning-transaction-sync`. We should revert this as part of of the upgrade to LDK 0.2.
242+
let mut client_builder_0_11 = esplora_client_0_11::Builder::new(&server_url);
243+
client_builder_0_11 = client_builder_0_11.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS);
244+
let esplora_client_0_11 = client_builder_0_11.build_async().unwrap();
245+
let tx_sync =
246+
Arc::new(EsploraSyncClient::from_client(esplora_client_0_11, Arc::clone(&logger)));
247+
240248
let mut client_builder = esplora_client::Builder::new(&server_url);
241249
client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS);
242250
let esplora_client = client_builder.build_async().unwrap();
243-
let tx_sync =
244-
Arc::new(EsploraSyncClient::from_client(esplora_client.clone(), Arc::clone(&logger)));
251+
245252
let onchain_wallet_sync_status = Mutex::new(WalletSyncStatus::Completed);
246253
let lightning_wallet_sync_status = Mutex::new(WalletSyncStatus::Completed);
247254
Self::Esplora {

src/wallet/ser.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ impl<'a> Writeable for ChangeSetSerWrapper<'a, BdkTxGraphChangeSet<ConfirmationB
107107

108108
encode_tlv_stream!(writer, {
109109
(0, ChangeSetSerWrapper(&self.0.txs), required),
110+
(1, Some(&self.0.first_seen), option),
110111
(2, self.0.txouts, required),
112+
(3, Some(&self.0.last_evicted), option),
111113
(4, ChangeSetSerWrapper(&self.0.anchors), required),
112114
(6, self.0.last_seen, required),
113115
});
@@ -129,10 +131,14 @@ impl Readable for ChangeSetDeserWrapper<BdkTxGraphChangeSet<ConfirmationBlockTim
129131
ChangeSetDeserWrapper<BTreeSet<(ConfirmationBlockTime, Txid)>>,
130132
> = RequiredWrapper(None);
131133
let mut last_seen: RequiredWrapper<BTreeMap<Txid, u64>> = RequiredWrapper(None);
134+
let mut first_seen = None;
135+
let mut last_evicted = None;
132136

133137
decode_tlv_stream!(reader, {
134138
(0, txs, required),
139+
(1, first_seen, option),
135140
(2, txouts, required),
141+
(3, last_evicted, option),
136142
(4, anchors, required),
137143
(6, last_seen, required),
138144
});
@@ -142,6 +148,8 @@ impl Readable for ChangeSetDeserWrapper<BdkTxGraphChangeSet<ConfirmationBlockTim
142148
txouts: txouts.0.unwrap(),
143149
anchors: anchors.0.unwrap().0,
144150
last_seen: last_seen.0.unwrap(),
151+
first_seen: first_seen.unwrap_or_default(),
152+
last_evicted: last_evicted.unwrap_or_default(),
145153
}))
146154
}
147155
}
@@ -260,6 +268,7 @@ impl<'a> Writeable for ChangeSetSerWrapper<'a, BdkIndexerChangeSet> {
260268
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), lightning::io::Error> {
261269
CHANGESET_SERIALIZATION_VERSION.write(writer)?;
262270

271+
// Note we don't persist/use the optional spk_cache currently.
263272
encode_tlv_stream!(writer, { (0, ChangeSetSerWrapper(&self.0.last_revealed), required) });
264273
Ok(())
265274
}
@@ -275,9 +284,13 @@ impl Readable for ChangeSetDeserWrapper<BdkIndexerChangeSet> {
275284
let mut last_revealed: RequiredWrapper<ChangeSetDeserWrapper<BTreeMap<DescriptorId, u32>>> =
276285
RequiredWrapper(None);
277286

287+
// Note we don't persist/use the optional spk_cache currently.
278288
decode_tlv_stream!(reader, { (0, last_revealed, required) });
279289

280-
Ok(Self(BdkIndexerChangeSet { last_revealed: last_revealed.0.unwrap().0 }))
290+
Ok(Self(BdkIndexerChangeSet {
291+
last_revealed: last_revealed.0.unwrap().0,
292+
spk_cache: Default::default(),
293+
}))
281294
}
282295
}
283296

0 commit comments

Comments
 (0)