Skip to content

Adding clients as separate libraries #970

@thunderbiscuit

Description

@thunderbiscuit

This is a brainstorm issue outlining how we could go about ensuring this library works with clients not shipped as part of the lib.

The current boundaries between the Wallet and the Esplora and Electrum clients is basically the SyncRequest/FullScanRequest types (with these two probably merging into one in 4.0), and the Update type.

If those were serializable in some way (CBOR, JSON), then they could just be passed back and forth with other libraries.

Upside

"New" clients: This could potentially allow clients to be made and maintained by other teams at low cost for us (only requiring we provide the serialization format).
Current clients: Cutting clients entirely from the library is a bit crazy (see downside below) but would reduce library size and allow users to pick only the clients they need (see #969).

Downside

The really big downside to this is that it forces the clients to ship their own bindings libraries, which we know are a lot of work (CI, tests, releases, etc.). This includes all downstream users of the current bdk-ffi repo, so that's a lot of work for a lot of repos/languages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions