hiro99ma blog

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 aaacargo 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 のサンプルと同じことをやってみよう。

writer: hiro99ma

 < Top page

コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage

About me