Cargo Features

bdk-cli = { version = "0.27.1", default-features = false, features = ["repl", "key-value-db", "sqlite-db", "rpc", "electrum", "esplora", "esplora-ureq", "async-interface", "esplora-reqwest", "verify", "hardware-signer", "compiler", "reserves", "regtest-node", "regtest-bitcoin", "regtest-electrum", "dev-getrandom-wasm"] }
default = repl, sqlite-db

These default features are set whenever bdk-cli is added without default-features = false somewhere in the dependency tree.

repl default = fd-lock, regex, rustyline

To use the app in a REPL mode

Affects commands::ReplSubCommand


Available database options

Enables key-value-db of bdk ^0.27.1

sqlite-db default

Enables sqlite of bdk ^0.27.1

rpc regtest-bitcoin?

Available blockchain client options

Enables rpc of bdk ^0.27.1

Affects commands::WalletOpts.rpc_opts, commands::RpcOpts, commands::OnlineWalletSubCommand

electrum regtest-electrum?

Enables electrum of bdk ^0.27.1

Affects commands::WalletOpts.electrum_opts, commands::ElectrumOpts, utils::get_outpoints_for_address, commands::WalletOpts.proxy_opts, commands::ProxyOpts, commands::OnlineWalletSubCommand

esplora esplora-reqwest? esplora-ureq?

Affects commands::WalletOpts.esplora_opts, commands::EsploraOpts, commands::WalletOpts.proxy_opts, commands::ProxyOpts, commands::OnlineWalletSubCommand

esplora-ureq = esplora

Enables use-esplora-ureq of bdk ^0.27.1

async-interface esplora-reqwest?

Enables async-interface of bdk ^0.27.1

esplora-reqwest = async-interface, esplora

Enables reqwest-default-tls and use-esplora-reqwest of bdk ^0.27.1


Use this to consensus verify transactions at sync time

Enables verify of bdk ^0.27.1


Use hardware wallets to sign transactions

Enables hardware-signer of bdk ^0.27.1


Extra utility tools
Compile policies

Enables compiler of bdk ^0.27.1

Affects wasm::compile

reserves = bdk-reserves

Create/Verify proof of reserves as per BIP322

Affects utils::get_outpoints_for_address

regtest-node regtest-bitcoin? regtest-electrum? = electrsd, zip

Following features auto deploys a regtest node in the background. Connects the bdk wallet with that node. And allows a new bdk-cli node <command> to operate the background node.

This is most useful for integrations testing as well as quick demo testing by devs using bdk and various types of background nodes.

Affects commands::NodeSubCommand

regtest-bitcoin = regtest-node, rpc
regtest-electrum = electrum, regtest-node

Enables electrs_0_8_10 of electrsd ^0.22


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:

Enables js of getrandom

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

rustyline repl

Enables rustyline ~9.0

Optional dependencies

fd-lock repl

Enables fd-lock =3.0.2

regex repl
bdk-reserves reserves?

Enables bdk-reserves ^0.27.1

electrsd regtest-electrum? regtest-node?

Enables electrsd ^0.22

zip wasm32 regtest-node?

Enables zip =0.6.3