btc: libwally-core v1.4.0
2025/03/13
C言語で Bitcoin のアプリを作るときによく使っている libwally-core の v1.4.0 がリリースされていた。
- Release Version 1.4.0 · ElementsProject/libwally-core
- libwally-core documentation — libwally-core 1.4.0 documentation
いろいろ追加や改善が行われている。
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 が使えるのかが気になっている。
- btc: libwally-core で script path (1) - hiro99ma blog
- btc: libwally-core で script path (2) - hiro99ma blog
まず 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 は計算できないと思っている。