]> Untitled Git - bdk/commitdiff
Make bdk_esplora wasm compatible again
authorDaniela Brozzoni <danielabrozzoni@protonmail.com>
Fri, 3 Mar 2023 11:07:04 +0000 (12:07 +0100)
committerDaniela Brozzoni <danielabrozzoni@protonmail.com>
Fri, 3 Mar 2023 16:44:10 +0000 (17:44 +0100)
There's a huge todo!() for the AsyncClient

.github/workflows/cont_integration.yml
crates/bdk/Cargo.toml
crates/esplora/Cargo.toml
crates/esplora/src/lib.rs

index 8ce574658f3ea2f67a2ac5de4d65ffd3e3e017d4..f401eb9f6fb2d9df0cc62b15b893d0f76457db4f 100644 (file)
@@ -77,8 +77,12 @@ jobs:
         run: rustup target add wasm32-unknown-unknown
       - name: Update toolchain
         run: rustup update
-      - name: Check
-        run: cargo check --target wasm32-unknown-unknown --features async-interface,use-esplora-async,dev-getrandom-wasm --no-default-features
+      - name: Check bdk
+        working-directory: ./crates/bdk
+        run: cargo check --target wasm32-unknown-unknown --features dev-getrandom-wasm
+      - name: Check esplora
+        working-directory: ./crates/esplora
+        run: cargo check --target wasm32-unknown-unknown --features async --no-default-features
 
   fmt:
     name: Rust fmt
index 332197da4c11ecd620d41414ca7768d26cbcd4f7..bc00b6a76c83ea4004e6048b7033ae246a485bec 100644 (file)
@@ -39,6 +39,12 @@ keys-bip39 = ["bip39"]
 hardware-signer = ["hwi"]
 test-hardware-signer = ["hardware-signer"]
 
+
+# This feature is used to run `cargo check` in our CI targeting wasm. It's not recommended
+# for libraries to explicitly include the "getrandom/js" feature, so we only do it when
+# necessary for running our CI. See: https://docs.rs/getrandom/0.2.8/getrandom/#webassembly-support
+dev-getrandom-wasm = ["getrandom/js"]
+
 [dev-dependencies]
 lazy_static = "1.4"
 env_logger = "0.7"
index 2ab251ea10dd37873b375a7c9ca5289c1830ea3d..1cd0d1c0d9f5e73ae14e4bb3417f29cdbe554862 100644 (file)
@@ -13,4 +13,9 @@ readme = "README.md"
 
 [dependencies]
 bdk_chain = { path = "../chain", version = "0.3.1", features = ["serde", "miniscript"] }
-esplora-client = { version = "0.3" }
+esplora-client = { version = "0.3", default-features = false }
+
+[features]
+default = ["async", "blocking"]
+async = ["esplora-client/async"]
+blocking = ["esplora-client/blocking"]
index 18e568a099deede57d77589e9a47e8351d95a366..18ab22b607b8a29a4ad95c64f431e02a41d38646 100644 (file)
@@ -77,6 +77,7 @@ pub trait EsploraExt {
     }
 }
 
+#[cfg(feature = "blocking")]
 impl EsploraExt for esplora_client::BlockingClient {
     fn scan<K: Ord + Clone>(
         &self,
@@ -302,3 +303,18 @@ fn map_confirmation_time(tx_status: &TxStatus, height_at_start: u32) -> Confirma
         _ => ConfirmationTime::Unconfirmed,
     }
 }
+
+#[cfg(feature = "async")]
+impl EsploraExt for esplora_client::AsyncClient {
+    fn scan<K: Ord + Clone>(
+        &self,
+        _local_chain: &BTreeMap<u32, BlockHash>,
+        _keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, Script)>>,
+        _txids: impl IntoIterator<Item = Txid>,
+        _outpoints: impl IntoIterator<Item = OutPoint>,
+        _stop_gap: usize,
+        _parallel_requests: usize,
+    ) -> Result<KeychainScan<K, ConfirmationTime>, Error> {
+        todo!()
+    }
+}