🧙♂️
BDK CLI を regtest でつかう
BDK CLI とは
BDK CLI は Bitcoin Dev Kit(BDK) をベースにした CLI。
esplora や electrum をバックエンドにして Wallet の機能を提供している。
環境
bdk-cli - v0.1.0
Bitcoin Core - v0.21.0
electrs - v0.8.7
Regtest で使いたい
基本的にはドキュメントに従う。
一部ドキュメント通りではうまく行かない部分があったのでここに残す。
Regtest :: Bitcoin Dev Kit
BDK CLI
cargo でとってくるなら
$ cargo install bdk-cli
必要なセットアップ
今回は Bitcoin Core と electrs の組み合わせで行う。
Bitcoin Core
ビルドしておく。
Linux の場合 - build-unix.md
electrs は txindex オプションなしでも機能する。
electrs
こちらもビルドしておく。
usage.md
バックエンドを起動
Bitcoin Core
Bitcoin Core を regtest で起動
$ bitcoind --regtest
electrs
electrs を起動する。
ドキュメントのコマンドに追加して、--txid-limit 0
を指定する。
electrs が確認する tx には上限があるようで、regtest で bitcoin を発行するために、まとめてマイニングした場合エラーになるようなので、上限を外すオプションを指定している。
electrs -vv --timestamp --db-dir /tmp/electrs-db --electrum-rpc-addr="127.0.0.1:50001" --network=regtest --cookie-file=$HOME/.bitcoin/regtest/.cookie --txid-limit 0
Wallet に bitcoin を送金
bdk-cli の wallet にマイニング報酬としての bitcoin を送金する
$ bdk-cli --descriptor "wpkh(tprv8ZgxMBicQKsPexGYyaFwnAsCXCjmz2FaTm6LtesyyihjbQE3gRMfXqQBXKM43DvC1UgRVv1qom1qFxNMSqVAs88qx9PhgFnfGVUdiiDf6j4/0/*)" get_newaddress
>>
{
"address": "tb1q33mxseh9w52m7upqnmpmqz0cghf5u00a79qvu5"
}
$ bitcoin-cli generatetoaddress 101 tb1q33mxseh9w52m7upqnmpmqz0cghf5u00a79qvu5
残高を確認
electrs を通じて Core regtest へ残高を参照する。
ドキュメントと違うところは、server オプションに localhost
ではなく 127.0.0.1
を指定する。
localhost ではパースに失敗してエラーがでる。
エラー
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Electrum(WrongAddrsNumberWithTimeout)', src/bdk_cli.rs:117:45
残高を取得
$ bdk-cli --descriptor "wpkh(tprv8ZgxMBicQKsPexGYyaFwnAsCXCjmz2FaTm6LtesyyihjbQE3gRMfXqQBXKM43DvC1UgRVv1qom1qFxNMSqVAs88qx9PhgFnfGVUdiiDf6j4/0/*)" --network regtest --server 127.0.0.1:50001 sync
$ bdk-cli --descriptor "wpkh(tprv8ZgxMBicQKsPexGYyaFwnAsCXCjmz2FaTm6LtesyyihjbQE3gRMfXqQBXKM43DvC1UgRVv1qom1qFxNMSqVAs88qx9PhgFnfGVUdiiDf6j4/0/*)" --network regtest --server 127.0.0.1:50001 get_balance
Discussion