Closed6

Rust crate の依存先 crate まで debug したい

かんなかんな

bdk-cli をローカルの regtest で使おうと思ったらエラーが出た
Regtest :: Bitcoin Dev Kit
bdk 自体と rust-electrum-client が関わっている処理みたいなので、処理をおいたいが、どうすればいいのかわからないぞ。
とりあえず print debug しか脳がないから、依存先に println 仕込むんだ〜

かんなかんな

ということで、ローカルに bdk が必要。
それはもともとあるが、bdk はそちらはそちらとして作業するので、最近した git worktree でサブディレクトリきって、そこそ依存先に指定してみた
Git - git-worktree Documentation

git worktree add bdk-cli-debug

dependecies に先程の worktree のパスを指定する
Specifying Dependencies - The Cargo Book

[dependencies]
#bdk = "^0.2"
bdk = { path = "/home/kanna/bdk/bdk-cli-debug" }

無事依存先の bkd-cli-debug 内の bdk 側に仕込んだ println 出力された。

これでいいのか?普通 debug どうやりますか。フィードバックコメント助かります :pray:

かんなかんな

うまく行くコマンド

cargo run -- --descriptor "wpkh(tprv8ZgxMBicQKsPexGYyaFwnAsCXCjmz2FaTm6LtesyyihjbQE3gRMfXqQBXKM43DvC1UgRVv1qom1qFxNMSqVAs88qx9PhgFnfGVUdiiDf6j4/0/*)" sync

エラーの出るコマンド

cargo run -- --descriptor "wpkh(tprv8ZgxMBicQKsPexGYyaFwnAsCXCjmz2FaTm6LtesyyihjbQE3gRMfXqQBXKM43DvC1UgRVv1qom1qFxNMSqVAs88qx9PhgFnfGVUdiiDf6j4/0/*)" -n regtest -s localhost:50001 sync
かんなかんな

やはりここのパースが問題なようで
localhost ではなくて 127.0.0.1 で解決はする
doc が間違っている。
discord で聞いた。

かんなかんな

引き続き調べたところ、localhost をパースできていないわけではなかった。
get_one_socket_addr で、to_socket_addrs が複数のアドレスを返す場合エラーにしている。
ただし、環境によっては ipv4 と ipv6 が返る場合があり、その場合でも複数アドレス指定されたのと同じ扱いになってエラーになっていた。
https://github.com/bitcoindevkit/rust-electrum-client/blob/0.5.0-beta.1/src/raw_client.rs#L177

PR 出したいところだったが、下記 PR で該当コードは削除されロジックは変更された。
Implement timeouts when there are multiple socket addrs by afilini · Pull Request #50 · bitcoindevkit/rust-electrum-client

このスクラップは2021/02/22にクローズされました