Skip to content

Commit

Permalink
Make bdk_esplora wasm compatible again
Browse files Browse the repository at this point in the history
There's a huge todo!() for the AsyncClient
  • Loading branch information
danielabrozzoni committed Mar 3, 2023
1 parent a38f633 commit 0ba41c5
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 3 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/cont_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions crates/bdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
7 changes: 6 additions & 1 deletion crates/esplora/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
16 changes: 16 additions & 0 deletions crates/esplora/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ pub trait EsploraExt {
}
}

#[cfg(feature = "blocking")]
impl EsploraExt for esplora_client::BlockingClient {
fn scan<K: Ord + Clone>(
&self,
Expand Down Expand Up @@ -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!()
}
}

0 comments on commit 0ba41c5

Please sign in to comment.