Skip to content

Full WASM support #902

@ConorOkus

Description

@ConorOkus

Context

We want to finally make LDK Node run in WASM environments, in particular also as a Cloudflare worker.

Todo

  • Refactor ldk-node core to be fully async; blocking APIs wrapped by an API layer that holds the runtime
  • Make the runtime a trait, defaulting to tokio, with a WASM runtime as an alternative implementation
  • Audit all uses of time; route them through a trait rather than std
  • Audit all uses of tokio utilities; write context-agnostic replacements
  • Introduce structured feature gates allowing opt-in to subsets of features; decide how to handle already-shipped features that aren't WASM-compatible (e.g. electrum)
  • Make bitreq fully WASM-compatible, ship it, update downstream dependents (esplora-client, vss-client, etc.); wait for those releases before bumping in ldk-node
  • Regression-test thoroughly — tokio has many idiosyncrasies we've debugged over the years, and the WASM runtime is reported to have its own

Related

#43

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions