Skip to content

Commit 1e13cdf

Browse files
committed
f Switch BDK to Sqlite
1 parent 2b81e48 commit 1e13cdf

File tree

5 files changed

+25
-25
lines changed

5 files changed

+25
-25
lines changed

Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ lightning-transaction-sync = { git = "https://github.com/tnull/rust-lightning",
4141
#lightning-rapid-gossip-sync = { path = "../rust-lightning/lightning-rapid-gossip-sync" }
4242
#lightning-transaction-sync = { path = "../rust-lightning/lightning-transaction-sync", features = ["esplora-async"] }
4343

44-
bdk = { version = "0.27.1", default-features = false, features = ["async-interface", "use-esplora-async", "key-value-db"]}
44+
bdk = { version = "0.27.1", default-features = false, features = ["async-interface", "use-esplora-async", "sqlite-bundled"]}
4545
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] }
46+
rusqlite = { version = "0.28.0", features = ["bundled"] }
4647
bitcoin = "0.29.2"
4748

4849
rand = "0.8.5"

src/event.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ where
186186
K::Target: KVStorePersister,
187187
L::Target: Logger,
188188
{
189-
wallet: Arc<Wallet<bdk::sled::Tree>>,
189+
wallet: Arc<Wallet<bdk::database::SqliteDatabase>>,
190190
event_queue: Arc<EventQueue<K>>,
191191
channel_manager: Arc<ChannelManager>,
192192
network_graph: Arc<NetworkGraph>,
@@ -204,7 +204,7 @@ where
204204
L::Target: Logger,
205205
{
206206
pub fn new(
207-
wallet: Arc<Wallet<bdk::sled::Tree>>, event_queue: Arc<EventQueue<K>>,
207+
wallet: Arc<Wallet<bdk::database::SqliteDatabase>>, event_queue: Arc<EventQueue<K>>,
208208
channel_manager: Arc<ChannelManager>, network_graph: Arc<NetworkGraph>,
209209
keys_manager: Arc<KeysManager>, inbound_payments: Arc<PaymentInfoStorage>,
210210
outbound_payments: Arc<PaymentInfoStorage>, tokio_runtime: Arc<tokio::runtime::Runtime>,

src/lib.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ use lightning_invoice::{payment, Currency, Invoice};
7777

7878
use bdk::bitcoin::secp256k1::Secp256k1;
7979
use bdk::blockchain::esplora::EsploraBlockchain;
80-
use bdk::sled;
80+
use bdk::database::SqliteDatabase;
8181
use bdk::template::Bip84;
8282

8383
use bitcoin::hashes::sha256::Hash as Sha256;
@@ -221,8 +221,9 @@ impl Builder {
221221
&Secp256k1::new(),
222222
)
223223
.expect("Failed to derive on-chain wallet name");
224-
let database = sled::open(bdk_data_dir).expect("Failed to open BDK database");
225-
let database = database.open_tree(wallet_name).expect("Failed to open BDK database");
224+
225+
let database_path = format!("{}/{}.sqlite", bdk_data_dir, wallet_name);
226+
let database = SqliteDatabase::new(database_path);
226227

227228
let bdk_wallet = bdk::Wallet::new(
228229
Bip84(xprv, bdk::KeychainKind::External),
@@ -445,7 +446,7 @@ struct Runtime {
445446
pub struct Node {
446447
running: RwLock<Option<Runtime>>,
447448
config: Arc<Config>,
448-
wallet: Arc<Wallet<bdk::sled::Tree>>,
449+
wallet: Arc<Wallet<bdk::database::SqliteDatabase>>,
449450
tx_sync: Arc<EsploraSyncClient<Arc<FilesystemLogger>>>,
450451
event_queue: Arc<EventQueue<Arc<FilesystemPersister>>>,
451452
channel_manager: Arc<ChannelManager>,
@@ -682,8 +683,8 @@ impl Node {
682683
}
683684

684685
/// Returns our own node id
685-
pub fn node_id(&self) -> Result<PublicKey, Error> {
686-
Ok(self.channel_manager.get_our_node_id())
686+
pub fn node_id(&self) -> PublicKey {
687+
self.channel_manager.get_our_node_id()
687688
}
688689

689690
/// Returns our own listening address and port.

src/tests/functional_tests.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ fn channel_full_cycle() {
158158
assert_eq!(node_b.on_chain_balance().unwrap().get_spendable(), 100000);
159159

160160
println!("\nA -- connect_open_channel -> B");
161-
let node_b_addr =
162-
format!("{}@{}", node_b.node_id().unwrap(), node_b.listening_address().unwrap());
161+
let node_b_addr = format!("{}@{}", node_b.node_id(), node_b.listening_address().unwrap());
163162
node_a.connect_open_channel(&node_b_addr, 50000, true).unwrap();
164163

165164
let funding_txo = loop {
@@ -206,7 +205,7 @@ fn channel_full_cycle() {
206205
expect_event!(node_a, PaymentSuccessful);
207206
expect_event!(node_b, PaymentReceived);
208207

209-
node_b.close_channel(&channel_id, &node_a.node_id().unwrap()).unwrap();
208+
node_b.close_channel(&channel_id, &node_a.node_id()).unwrap();
210209
expect_event!(node_a, ChannelClosed);
211210
expect_event!(node_b, ChannelClosed);
212211

@@ -247,8 +246,7 @@ fn channel_open_fails_when_funds_insufficient() {
247246
assert_eq!(node_b.on_chain_balance().unwrap().get_spendable(), 100000);
248247

249248
println!("\nA -- connect_open_channel -> B");
250-
let node_b_addr =
251-
format!("{}@{}", node_b.node_id().unwrap(), node_b.listening_address().unwrap());
249+
let node_b_addr = format!("{}@{}", node_b.node_id(), node_b.listening_address().unwrap());
252250
assert_eq!(
253251
Err(Error::InsufficientFunds),
254252
node_a.connect_open_channel(&node_b_addr, 120000, true)

src/types.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ pub enum PaymentStatus {
4747
pub(crate) type ChainMonitor = chainmonitor::ChainMonitor<
4848
InMemorySigner,
4949
Arc<EsploraSyncClient<Arc<FilesystemLogger>>>,
50-
Arc<Wallet<bdk::sled::Tree>>,
51-
Arc<Wallet<bdk::sled::Tree>>,
50+
Arc<Wallet<bdk::database::SqliteDatabase>>,
51+
Arc<Wallet<bdk::database::SqliteDatabase>>,
5252
Arc<FilesystemLogger>,
5353
Arc<FilesystemPersister>,
5454
>;
@@ -60,21 +60,21 @@ pub(crate) type PeerManager = lightning::ln::peer_handler::PeerManager<
6060
Arc<OnionMessenger>,
6161
Arc<FilesystemLogger>,
6262
IgnoringMessageHandler,
63-
Arc<WalletKeysManager<bdk::sled::Tree>>,
63+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
6464
>;
6565

6666
pub(crate) type ChannelManager = lightning::ln::channelmanager::ChannelManager<
6767
Arc<ChainMonitor>,
68-
Arc<Wallet<bdk::sled::Tree>>,
69-
Arc<WalletKeysManager<bdk::sled::Tree>>,
70-
Arc<WalletKeysManager<bdk::sled::Tree>>,
71-
Arc<WalletKeysManager<bdk::sled::Tree>>,
72-
Arc<Wallet<bdk::sled::Tree>>,
68+
Arc<Wallet<bdk::database::SqliteDatabase>>,
69+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
70+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
71+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
72+
Arc<Wallet<bdk::database::SqliteDatabase>>,
7373
Arc<Router>,
7474
Arc<FilesystemLogger>,
7575
>;
7676

77-
pub(crate) type KeysManager = WalletKeysManager<bdk::sled::Tree>;
77+
pub(crate) type KeysManager = WalletKeysManager<bdk::database::SqliteDatabase>;
7878

7979
pub(crate) type Router =
8080
DefaultRouter<Arc<NetworkGraph>, Arc<FilesystemLogger>, Arc<Mutex<Scorer>>>;
@@ -88,8 +88,8 @@ pub(crate) type NetworkGraph = gossip::NetworkGraph<Arc<FilesystemLogger>>;
8888
pub(crate) type PaymentInfoStorage = Mutex<HashMap<PaymentHash, PaymentInfo>>;
8989

9090
pub(crate) type OnionMessenger = lightning::onion_message::OnionMessenger<
91-
Arc<WalletKeysManager<bdk::sled::Tree>>,
92-
Arc<WalletKeysManager<bdk::sled::Tree>>,
91+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
92+
Arc<WalletKeysManager<bdk::database::SqliteDatabase>>,
9393
Arc<FilesystemLogger>,
9494
IgnoringMessageHandler,
9595
>;

0 commit comments

Comments
 (0)