bdk_wallet 3.0.0

A modern, lightweight, descriptor-based wallet library
Documentation
set quiet := true
default_wallet := 'test'
default_private := 'false'
default_testdata := 'test_data'

_default:
  just --list --unsorted

# start a regtest bitcoind instance
[group('bitcoind_rpc')]
start:
    mkdir -p {{default_testdata}}/bitcoind
    bitcoind \
        -datadir={{default_testdata}}/bitcoind \
        -regtest -server -fallbackfee=0.0002 \
        -rpcallowip=0.0.0.0/0 \
        -rpcbind=0.0.0.0 \
        -blockfilterindex=1 \
        -peerblockfilters=1 \
        -daemon
    @echo "started regtest bitcoind with PID $(cat {{default_testdata}}/bitcoind/regtest/bitcoind.pid)"

# stop the regtest bitcoind instance
[group('bitcoind_rpc')]
stop:
    bitcoin-cli \
        -datadir={{default_testdata}}/bitcoind \
        -regtest \
        stop

# run the bitcoind_rpc example
[group('bitcoind_rpc')]
run:
    cargo run --example bitcoind_rpc -- \
    "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)" \
    "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)"

# display help text for the bitcoind_rpc example 
[group('bitcoind_rpc')]
help:
    cargo run --example bitcoind_rpc -- --help

# delete regtest bitcoind and wallet data
[group('bitcoind_rpc')]
clean:
    rm -rf {{default_testdata}}


# create a regtest wallet
[group('regtest')]
create wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest createwallet {{wallet}}

# list regtest wallets
[group('regtest')]
list wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest listwallets

# load regtest wallet
[group('regtest')]
load wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest loadwallet {{wallet}}

# unload regtest wallet
[group('regtest')]
unload wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest unloadwallet {{wallet}}

# view debug log for regtest wallet address
[group('regtest')]
debug:
    less +G {{default_testdata}}/bitcoind/regtest/debug.log

# get regtest wallet address
[group('regtest')]
address wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} getnewaddress

# generate n new blocks to given address
[group('regtest')]
generate n address:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest generatetoaddress {{n}} {{address}}

# get regtest wallet balance
[group('regtest')]
balance wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} getbalance

# list wallet descriptors info, private = (true | false)
[group('regtest')]
descriptors private wallet=default_wallet:
    bitcoin-cli -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} listdescriptors {{private}} | jq '[.descriptors[].desc]' | grep \"wpkh

# send n btc to address from wallet
[group('regtest')]
send n address wallet=default_wallet:
    bitcoin-cli -named -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} sendtoaddress address={{address}} amount={{n}}

# manually created bitcoin-cli RPC command, see just rpc help
[group('regtest')]
rpc command wallet=default_wallet:
    bitcoin-cli -named -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} {{command}}

[group('regtest')]
sign psbt wallet=default_wallet:
    bitcoin-cli -named -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} walletprocesspsbt psbt={{psbt}}

[group('regtest')]
finalize psbt wallet=default_wallet:
    bitcoin-cli -named -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} finalizepsbt psbt={{psbt}} extract=true

[group('regtest')]
broadcast tx wallet=default_wallet:
    bitcoin-cli -named -datadir={{default_testdata}}/bitcoind -regtest -rpcwallet={{wallet}} sendrawtransaction {{tx}}