2週間前の記事でTaprootアドレスの使用が全体の0.5%程度と伸び悩んでいることを紹介しました。1つの大きな障壁はウォレットの対応で、P2TRアドレスを生成できるウォレットが未だ少ない理由の1つにOutput Script Descriptorというものを持つことが必要(強く推奨)なことが挙げられます。
4月にリリースされたBitcoin Core 23.0において、新しいウォレットを作るとP2TRアドレス(bech32m)生成用のDescriptorが実装されました。まだ新規アドレス生成方式の既定はP2WSHアドレス(bech32)のままですが、P2TRを既定に設定することもできます。
今日は比較的新しいウォレット内の概念であるOutput Script Descriptorとは何なのかについて解説します。
HDウォレットの仕組みと欠点
従来から皆さんが使っているウォレットはBIP32に定義されたHDウォレットの可能性が高いです。そう、あの12/24単語のシードフレーズから、バージョンなどいくつかの情報を元に秘密鍵が大量に生成できるものです。
シードから多数の公開鍵(アドレスの元)が一定のルールに則って階層的に導出されるHDウォレットは通常のシングルシグのアドレスの生成や他のウォレットソフトへの乗り換えには便利ですが、大きな欠点がいくつかあります。
まず、アドレスの生成メカニズムを指定しないため、各公開鍵ごとに数パターンあるすべてのアドレスをチェックする必要があります。例えば同じ公開鍵でも、P2PK、P2PKH、P2SH-P2WPKH、P2WPKHと、アドレスの種類によって異なるアドレスが生まれます(当たり前ですね)。したがって、例えばシードフレーズからリカバリーした後にウォレットはこれをすべて想定してスキャンする必要があり、効率が良くありません。