Taprootの正統派な活用でPhoenix Walletの流動性追加がより安価に
2021年の暮れにTaprootがアクティベーションされたとき、期待されていたのはより複雑なスクリプトの実行、プライバシーの細かな改善、そしてシュノア署名を活用したマルチシグなどでした。BIPドラフトが提出された2019年当時の記事でも触れています:
ところが今のところ、TaprootやTapscriptが活用されているユースケースの多くは当時の想定とは少し異なるものです。例えばOrdinal InscriptionsやTaproot AssetsなどはBitcoin Scriptを単なるデータ置き場として使います(なんならTaprootなしでも実現しようと思えばできる代物です)。Taprootで導入されたBitcoin Scriptの木構造Taptreeを使って新しい機能を実現しようとするBitVMやArkといったコンセプトも出てきましたが、これらも2023年の頭には存在しなかったか、発明者が構想を練っていた段階でした。
では正統派な改善はどのようなものがなされているでしょうか?今日はPhoenix Walletに最近実装された改善など、今日のTaprootの「普通な」使われ方を見ていきます。
・なぜ未だにTaproot非対応のウォレットがあるのか
・ライトニングにおけるTaproot Channels
・Acinqが発表した「Swaproot」はTaprootを含む複数技術の組み合わせ
なぜ未だにTaproot非対応のウォレットがあるのか
今でこそ著名なウォレットやハードウェアウォレットのほとんどがP2TR (Pay-to-Taproot)アドレスの生成やBech32mアドレス宛の送金に対応していますが、取引所で出金先として指定できないところは未だに多いです。
Bech32mとはP2TRで導入されたアドレスのエンコード方式です。詳しくは原さんの記事をご覧ください。
さて、なぜウォレットのTaproot対応が大変だったかというと、P2TRアドレスにある資金は「2通りの使い方」ができるため、それを復元可能にするためにOutput Script Descriptorという新しい概念をウォレットに実装する必要があるからです。
Output Script Descriptorについてはこちら↓

記事内でも説明していますが、Bitcoin CoreでさえTaprootのアクティベーションから半年かかってやっとOutput Script Descriptorに対応しました。このあたりはBDK (Bitcoin Dev Kit)など標準化されたソフトウェアライブラリを使うビットコインウォレットが増えたことによって今後はより早く対応できるようになっていくかもしれません。
ちなみに取引所の対応が遅れがちなのは、あまり商売として美味しくないビットコイン関連の(セルフカストディをする人のうちごく一部が求めるニッチな)機能に工数を割きたくないだけな気がします。
なぜウォレットのTaproot対応が増えたほうがいいかというと、通常の送金であるP2TRトランザクションが増えなければ「通常でない送金」がプライバシーを得られないためです。Clarkmoody.comによるとここ90日間で生成されたUTXOのうち31%がP2PKH (1~アドレス)、16%がP2SH (3~アドレス)、52%がSegwit v0アドレス(P2WPKHとP2WSHの合計、bc1q~アドレス)、そしてわずか2%弱がP2TR(bc1p~アドレス)となっています。
P2TRの普及に向けた課題として、P2WPKH(Segwit)アドレスからP2TRアドレスに乗り換えるユーザーにとってコスト面でのメリットがあまりないことが挙げられます。(Segwit導入時はコスト面で大きなメリットがありました)
ライトニングにおけるTaproot Channels
通常の支払いとは異なるが正統派な使い道として、ライトニングのTaproot Channelsがやっと使える目処が出てきたところです。Lndではv0.17.0から実験的にサポートされており、ライトニングチャネルの開閉が協調的なものであれば通常の支払いと見た目が変わらなくなるため、プライバシー面でのメリットにつながります。
ただしライトニング自体のプロトコルレベルの仕様として、Unannounced Channel(いわゆるプライベートチャネル)でなければネットワーク全体に対してFunding UTXOを開示しないといけないため、公開のチャネルだとプライバシー面でのメリットは一切ありません。なお、ライトニングのプロトコルにTaproot Channelsの扱いが未定義なため、公開チャネルとして使うこと自体がまだできません。
Lndの開発元であるLightning Labsが同じく自社開発のプロトコルであるTaproot Assetsを普及させたいため、LndがTaproot Channelsの仕様策定を推進していく可能性が高そうです。
ちなみにシュノア署名が利用できるTaproot Channelsで将来的に利用できるようになるかもしれないものにHTLCではなくPTLCベースのライトニングネットワークがあります。しかし、こちらはまだ細かい部分の話が全然進んでいないので近いうちに実現するとは考えられません。
Acinqが発表した「Swaproot」はTaprootを含む複数技術の組み合わせ
前置きが長くなりましたが、Acinqが提供するPhoenix WalletはユーザーとAcinqの間のチャネルの残高をチャネル開閉の手間をかけずに追加入金できることに定評があります。そんな彼らがTaprootを活用してオンチェーンからの追加入金コストを16~27%低下させたと発表しました。

Phoenixは追加入金にSwap-in Potentiamというコンセプトをベースにしたプロトコルを利用しています。Swap-in Potentiamについては下記の記事から復習していただけますが、要するにユーザーとLSP間のマルチシグアドレスを起点に全ての取引を行えばLSP側は二重支払いリスクを負うことなく0承認取引を扱えるというものです。
これまでPhoenixではこのマルチシグアドレスにPay-to-scriptを利用していました。これによってAcinqが消滅した場合でもユーザーが一定時間経過後に資金を引き出せる形を実現していましたが、その代わり送金時にスクリプトを公開するためコストがかかる、プライバシーに欠ける、バックアップが難しい、といった課題がありました。
また、スクリプトの内容は「ユーザーの鍵+サーバーの鍵」(協調的送金)または「ユーザーの鍵+タイムロック」(期限到達)という2つの条件で、そのままではTaproot特有の「key-path spend」(スクリプトの内容を公開しない、通常の送金に見える送金)はどちらの内容にも適用できません。
そこでAcinqは「ユーザーが必ずAcinqが提供するウォレットを使っている」という強みを活かしてマルチシグの署名集約を行うアルゴリズムであるMuSig2を実装することによって、「ユーザーの鍵+サーバーの鍵」(協調的送金)の条件を1つの署名で表現できるようにしました。これによってこの条件をkey-path spendとし、期限到達の場合のみスクリプトを公開することになります。つまり、大半の場合は通常のP2TRトランザクションと見た目が変わらなくなり、コストも安くなるのです。
これ以外にもMiniscriptを使ってバックアップに使うDescriptorを定義するなど、全体的にプロセスを改善した模様です。
まとめ
・Taproot対応はウォレットレベルでは充実してきたが、取引所レベルではまだまだ。実際の利用率(新規UTXOに占めるP2TR)も2%に満たない
・ライトニングにおけるTaproot Channelsもまだ公開チャネルに適用するまでの道のりはしばらくかかると考えられる。チャネルアナウンスメントの仕様が変わらないとプライバシー面でのメリットはない。しかし、Taproot Assetsの実用化に向けて話が進んでいく可能性が高い
・Acinqはユーザーを独自ウォレットに囲い込んでいるためMuSig2の実装などによってTaprootが本来もたらすと想定されていた効率化を実現している
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション