hiro99ma blog

Something technical

btc: libwally-core v1.4.0

2025/03/13

C言語で Bitcoin のアプリを作るときによく使っている libwally-core の v1.4.0 がリリースされていた。

いろいろ追加や改善が行われている。 v1.3.1 では Output Descriptors で tr() が使えなかったのだが、今回で対応されていた。

“ELIP-101” の genesis block をサポートしたようだが、肝心のそれがよくわからなかった。
Bitcoin に “BIP” があるので、ElementsProject の “ELIP” なのではないかと想像している。

script path への対応

tr() のサポートは “keyspend-only taproot descriptors” と書いてあるので script の方はまだなのだと思う。

それはそれとして、libwally-core で script path にどのくらい対応しているというか、 script path のアプリを作るときにどの API が使えるのかが気になっている。

まず merkle root だが、少なくともスクリプトから作る方は対応していないようだ。 なぜならコード中に “TapBranch” が出てこなかったからだ。 “TapLeaf” はある。 wally_tx_get_input_signature_hash() までは追えたが、 TapLeaf Hash はスクリプトから merkle tree の leaf を作るのに使われるからこの関数で merkle root だけじゃなくて sighash まで作ってしまうのかもしれない。
けど、script が unsigned char* でスクリプトの merkle tree を作れそうな気がしないし、もし作るなら “TapBranch” もあると思うのだがなあ。

ChatGPT氏に Bitcoin で merkle tree を作るライブラリのことを聞いたら「libwally-core のこれを推奨!」と存在しない関数を伝えてきた。 まあ、そういう日もある。

今のところ私の中では libwally-core では merkle root は計算できないと思っている。


 < Top page


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

GitHub

X/Twitter

Homepage