From 23c17ca84174366dd7b60be1e3352bd4e4aab8c8 Mon Sep 17 00:00:00 2001 From: Sudarsan Balaji Date: Thu, 14 Oct 2021 03:53:22 +0530 Subject: [PATCH] Use a thread-safe MemoryDatabase --- Cargo.toml | 5 ++++- .../src/test/kotlin/uniffi/bdk/LibTest.kt | 14 +++++++------- src/lib.rs | 12 +++++------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f5ddd3f..d59366f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,10 +9,13 @@ edition = "2018" crate-type = ["cdylib"] [dependencies] -bdk = { version = "^0.11", features = ["all-keys"] } +bdk = { version = "^0.12.1-dev", features = ["all-keys"] } uniffi_macros = "0.14.0" uniffi = "0.14.0" thiserror = "1.0" [build-dependencies] uniffi_build = "0.14.0" + +[patch.crates-io] +bdk = { git = "https://github.com/artfuldev/bdk.git", branch = "use-send-and-sync-on-memory-database" } diff --git a/bindings/bdk-kotlin/src/test/kotlin/uniffi/bdk/LibTest.kt b/bindings/bdk-kotlin/src/test/kotlin/uniffi/bdk/LibTest.kt index ddedd1d..2c869a6 100644 --- a/bindings/bdk-kotlin/src/test/kotlin/uniffi/bdk/LibTest.kt +++ b/bindings/bdk-kotlin/src/test/kotlin/uniffi/bdk/LibTest.kt @@ -12,13 +12,13 @@ class LibTest { val desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" - // @Test - // fun walletNewAddress() { - // val wallet = OfflineWallet(desc) - // val address = wallet.getNewAddress() - // assertNotNull(address) - // assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") - // } + @Test + fun walletNewAddress() { + val wallet = OfflineWallet(desc) + val address = wallet.getNewAddress() + assertNotNull(address) + assertEquals(address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs") + } @Test(expected=BdkException.Descriptor::class) fun invalidDescriptorExceptionIsThrown() { diff --git a/src/lib.rs b/src/lib.rs index 2b89c53..5d8cd69 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,28 +1,26 @@ use bdk::bitcoin::Network; -use bdk::sled; -use bdk::sled::Tree; +use bdk::database::MemoryDatabase; use bdk::wallet::AddressIndex; use bdk::Error; use bdk::Wallet; + use std::sync::Mutex; type BdkError = Error; uniffi_macros::include_scaffolding!("bdk"); - struct OfflineWallet { - wallet: Mutex>, + wallet: Mutex>, } impl OfflineWallet { fn new(descriptor: String) -> Result { - let database = sled::open("testdb").unwrap(); - let tree = database.open_tree("test").unwrap(); + let database = MemoryDatabase::default(); let wallet = Mutex::new(Wallet::new_offline( &descriptor, None, Network::Regtest, - tree, + database, )?); Ok(OfflineWallet { wallet }) }