[package] name = "bdk" version = "0.17.1-dev" edition = "2018" authors = ["Alekos Filini ", "Riccardo Casatta "] homepage = "https://bitcoindevkit.org" repository = "https://github.com/bitcoindevkit/bdk" documentation = "https://docs.rs/bdk" description = "A modern, lightweight, descriptor-based wallet library" keywords = ["bitcoin", "wallet", "descriptor", "psbt"] readme = "README.md" license = "MIT OR Apache-2.0" [dependencies] bdk-macros = "^0.6" log = "^0.4" miniscript = { version = "^6.0", features = ["use-serde"] } bitcoin = { version = "^0.27", features = ["use-serde", "base64"] } serde = { version = "^1.0", features = ["derive"] } serde_json = { version = "^1.0" } rand = "^0.7" # Optional dependencies sled = { version = "0.34", optional = true } electrum-client = { version = "0.8", optional = true } rusqlite = { version = "0.25.3", optional = true } ahash = { version = "=0.7.4", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = ["json"] } ureq = { version = "~2.2.0", features = ["json"], optional = true } futures = { version = "0.3", optional = true } async-trait = { version = "0.1", optional = true } rocksdb = { version = "0.14", default-features = false, features = ["snappy"], optional = true } cc = { version = ">=1.0.64", optional = true } socks = { version = "0.3", optional = true } lazy_static = { version = "1.4", optional = true } bip39 = { version = "1.0.1", optional = true } bitcoinconsensus = { version = "0.19.0-3", optional = true } # Needed by bdk_blockchain_tests macro bitcoincore-rpc = { version = "0.14", optional = true } # Platform-specific dependencies [target.'cfg(not(target_arch = "wasm32"))'.dependencies] tokio = { version = "~1.14", features = ["rt"] } [target.'cfg(target_arch = "wasm32")'.dependencies] async-trait = "0.1" js-sys = "0.3" rand = { version = "^0.7", features = ["wasm-bindgen"] } [features] minimal = [] compiler = ["miniscript/compiler"] verify = ["bitcoinconsensus"] default = ["key-value-db", "electrum"] sqlite = ["rusqlite", "ahash"] compact_filters = ["rocksdb", "socks", "lazy_static", "cc"] key-value-db = ["sled"] all-keys = ["keys-bip39"] keys-bip39 = ["bip39"] rpc = ["bitcoincore-rpc"] # We currently provide mulitple implementations of `Blockchain`, all are # blocking except for the `EsploraBlockchain` which can be either async or # blocking, depending on the HTTP client in use. # # - Users wanting asynchronous HTTP calls should enable `async-interface` to get # access to the asynchronous method implementations. Then, if Esplora is wanted, # enable `esplora` AND `reqwest` (`--features=use-esplora-reqwest`). # - Users wanting blocking HTTP calls can use any of the other blockchain # implementations (`compact_filters`, `electrum`, or `esplora`). Users wanting to # use Esplora should enable `esplora` AND `ureq` (`--features=use-esplora-ureq`). # # WARNING: Please take care with the features below, various combinations will # fail to build. We cannot currently build `bdk` with `--all-features`. async-interface = ["async-trait"] electrum = ["electrum-client"] # MUST ALSO USE `--no-default-features`. use-esplora-reqwest = ["esplora", "reqwest", "reqwest/socks", "futures"] use-esplora-ureq = ["esplora", "ureq", "ureq/socks"] # Typical configurations will not need to use `esplora` feature directly. esplora = [] # Use below feature with `use-esplora-reqwest` to enable reqwest default TLS support reqwest-default-tls = ["reqwest/default-tls"] # Debug/Test features test-blockchains = ["bitcoincore-rpc", "electrum-client"] test-electrum = ["electrum", "electrsd/electrs_0_8_10", "test-blockchains"] test-rpc = ["rpc", "electrsd/electrs_0_8_10", "test-blockchains"] test-esplora = ["electrsd/legacy", "electrsd/esplora_a33e97e1", "test-blockchains"] test-md-docs = ["electrum"] [dev-dependencies] lazy_static = "1.4" env_logger = "0.7" clap = "2.33" electrsd = { version= "0.13", features = ["trigger", "bitcoind_22_0"] } [[example]] name = "address_validator" [[example]] name = "compact_filters_balance" required-features = ["compact_filters"] [[example]] name = "miniscriptc" path = "examples/compiler.rs" required-features = ["compiler"] [workspace] members = ["macros"] [package.metadata.docs.rs] features = ["compiler", "electrum", "esplora", "ureq", "compact_filters", "rpc", "key-value-db", "sqlite", "all-keys", "verify"] # defines the configuration attribute `docsrs` rustdoc-args = ["--cfg", "docsrs"]