Skip to content

bdk_electrum v0.23.1 release bumped to API-incompatible dependencies on a patch release. #2010

@tnull

Description

@tnull

Describe the bug
The v0.23.1 release of bdk_electrum bumped the underlying minor version of rust-electrum-client on a patch release. This has the builds of previous releases of LDK Node fail due to the mismatching API types. E.g.:

error[E0599]: the method `populate_tx_cache` exists for struct `Arc<BdkElectrumClient<Client>>`, but its trait bounds were not satisfied
   --> src/chain/electrum.rs:487:23
    |
487 |         bdk_electrum_client.populate_tx_cache(cached_txs);
    |                             ^^^^^^^^^^^^^^^^^ method cannot be called on `Arc<BdkElectrumClient<Client>>` due to unsatisfied trait bounds
    |
   ::: /home/tnull/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/electrum-client-0.23.1/src/client.rs:32:1
    |
32  | pub struct Client {
    | ----------------- doesn't satisfy `_: ElectrumApi` or `electrum_client::Client: Deref`
    |
    = note: the following trait bounds were not satisfied:
            `electrum_client::Client: Deref`
            which is required by `electrum_client::Client: bdk_electrum::electrum_client::ElectrumApi`

error[E0599]: the method `full_scan` exists for struct `Arc<BdkElectrumClient<Client>>`, but its trait bounds were not satisfied
   --> src/chain/electrum.rs:490:24
    |
490 |             bdk_electrum_client.full_scan(
    |             --------------------^^^^^^^^^ method cannot be called on `Arc<BdkElectrumClient<Client>>` due to unsatisfied trait bounds
    |
   ::: /home/tnull/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/electrum-client-0.23.1/src/client.rs:32:1
    |
32  | pub struct Client {
    | ----------------- doesn't satisfy `_: ElectrumApi` or `electrum_client::Client: Deref`
    |
    = note: the following trait bounds were not satisfied:
            `electrum_client::Client: Deref`
            which is required by `electrum_client::Client: bdk_electrum::electrum_client::ElectrumApi`

error[E0599]: the method `populate_tx_cache` exists for struct `Arc<BdkElectrumClient<Client>>`, but its trait bounds were not satisfied
   --> src/chain/electrum.rs:521:23
    |
521 |         bdk_electrum_client.populate_tx_cache(cached_txs);
    |                             ^^^^^^^^^^^^^^^^^ method cannot be called on `Arc<BdkElectrumClient<Client>>` due to unsatisfied trait bounds
    |
   ::: /home/tnull/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/electrum-client-0.23.1/src/client.rs:32:1
    |
32  | pub struct Client {
    | ----------------- doesn't satisfy `_: ElectrumApi` or `electrum_client::Client: Deref`
    |
    = note: the following trait bounds were not satisfied:
            `electrum_client::Client: Deref`
            which is required by `electrum_client::Client: bdk_electrum::electrum_client::ElectrumApi`

error[E0599]: the method `sync` exists for struct `Arc<BdkElectrumClient<Client>>`, but its trait bounds were not satisfied
   --> src/chain/electrum.rs:524:24
    |
524 |             bdk_electrum_client.sync(request, BDK_ELECTRUM_CLIENT_BATCH_SIZE, true)
    |                                 ^^^^ method cannot be called on `Arc<BdkElectrumClient<Client>>` due to unsatisfied trait bounds
    |
   ::: /home/tnull/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/electrum-client-0.23.1/src/client.rs:32:1
    |
32  | pub struct Client {
    | ----------------- doesn't satisfy `_: ElectrumApi` or `electrum_client::Client: Deref`
    |
    = note: the following trait bounds were not satisfied:
            `electrum_client::Client: Deref`
            which is required by `electrum_client::Client: bdk_electrum::electrum_client::ElectrumApi`

To Reproduce
Try to build LDK Node.

Expected behavior
Should build.

Please don't arbitrarily bump dependencies as part of patch releases. To fix this, we'll now first have to upgrade electrsd, and then have to push out a new LDK Node release that work around the API breakage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions