rust: rust-bitcoin と BDK (5)
2025/09/23
rust-bitcoin のサンプルは動いたので、次は BDK を見てみよう。
ライブラリの数が多い。
bdk リポジトリに複数のライブラリがあるのだが、それでも多い。
必要に応じて使えばよいものだと思うので、何かサンプルを見てみる。
手始めに見るにはよさそうなところだったが、書いている時点(2025/09/23)で bdk_wallet@1.0.0
を add しているものの、
今の最新 bdk_wallet は v2.1.0 だ。
book のリポジトリ を見たが、こちらも v1.0.0 なのでサイトが更新されていないだけというわけではないようだ。
メジャーバージョンが変わった v2.0.0 を見るとそこまで数は多くなさそうだし、”breaking change” のような言葉も出てきていない。
案外、Starter Example - The Book of BDK は動くのかもしれない。
まあ、仕事じゃないので当たって砕けても問題ないからやっておこう。
Starter Example
cargo init
でやってるけど、cargo new
との違いは何だ?
同じように src/main.rs
ができたことからすると、存在しないディレクトリ名を指定すると新規作成して cargo init
すると cargo new
と同じ挙動になるのかも。
(何も無いディレクトリでそれぞれ cargo new aaa
と cargo init aaa
を実行して WinMerge で比較したが同一だった。)
cargo init bdk-starter-example
cd bdk-starter-example
Cargo.toml はバージョンだけ新しくした。
[dependencies]
bdk_wallet = { version = "2.1.0", features = ["rusqlite"] }
bdk_esplora = { version = "0.22.1", features = ["blocking"] }
動いた。
use
や const 値は書いていなかったので vscode(の Extensions) に解決してもらった。
困ったのは STOP_GAP
などを「数値だから u32
でよかろう」としていたので full_scan()
がエラーになったところくらいだ。
Syncing wallet...
Wallet balance: 150608 sat
ほとんど記憶になかったが、同じようなことを半年前くらいにやっていたようだ。 BDK Cookbook の Quick Start Example というページをやっていたようだが、ページの構成が変わったのかリンク先がよくわからなかった。 ウォレットの descriptor 文字列が同じだから、だいたい同じようなものだろう。
balance 表示に続けてアドレス情報などを出力させたのが違うくらいか。
日記の最後に「Rust の勉強にはならなかった」と書いているので、自分の力不足を感じたとかなんとかで途中で止めたのだろう。
Transaction Builder でトランザクションを作ることができそうなので、次は rust-bitcoin のサンプルと同じことをやってみよう。