2021年の暮れにTaprootがアクティベーションされたとき、期待されていたのはより複雑なスクリプトの実行、プライバシーの細かな改善、そしてシュノア署名を活用したマルチシグなどでした。BIPドラフトが提出された2019年当時の記事でも触れています:

Schnorr署名、Taprootが描くビットコインの未来
5月6日、ビットコイン開発者が参加するメーリングリストにPieter Wuille氏からTaprootとSchnorr(シュノア)署名に関するBIP(ビットコイン改善提案)のドラフトが提出されました。ビットコインの開発プロセスにおいて、BIPの提案→採択→導入、という流れの最初のステップが正式に始動した形です。 --Schnorr署名とは-- ビットコインの根底にある暗号化技術における、暗号を署名するアルゴリズムの一つです。これまでビットコインでは世間で広く使われているECDSAという署名アルゴリズムを使っていますが、2008年まで特許で保護されていたシュノア署名のほうがセキュリティ面や効率面で優れているため、導入する機運が高まっています。※セキュリティ面でのメリットは難解なので割愛します。 --Schnorr署名導入のメリット--

ところが今のところ、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で導入されたアドレスのエンコード方式です。詳しくは原さんの記事をご覧ください。

新しいアドレス形式P2TRについて
Taproot導入というビットコイン史においても大型のアップデートが目前に迫りました。 既にブロック高709,632に達すると有効化されるよう仕込まれており、あと2週間弱で導入されることになります。 Taprootにより、シュノア署名、MASTといった新しい技術が導入されることになり、プライバシー向上であったりより柔軟なスマートコントラクトをビットコインでも実装できるようになったりと、色々と応用し甲斐があると期待されています。 新しいサービスがでてきたりと皆さんの身近なところでも目に見える変化が起きるのが楽しみですね(と期待しています)。 また、シンプルに分かりやすい変化もあります。新たなアドレス形式P2TR (Pay to Taproot)が導入されますので、ブロックチェーンエクスプローラを眺めるだけでも変化に気づけるかと思います(とはいっても既存のbcから始まるアドレスとの区別はぱっと見つかず、詳細を表示するエクスプローラでだけ判別できる)。 さて、今回はこのP2TRアドレス形式についてご紹介します。

さて、なぜウォレットのTaproot対応が大変だったかというと、P2TRアドレスにある資金は「2通りの使い方」ができるため、それを復元可能にするためにOutput Script Descriptorという新しい概念をウォレットに実装する必要があるからです。

Output Script Descriptorについてはこちら↓

ウォレットのTaprootアドレス生成対応に必要な”Output Script Descriptor”とは
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単語のシードフレーズから、バージョンなどいくつかの情報を元に秘密鍵が大量に生成できるものです。 シードから多数の公開鍵(

記事内でも説明していますが、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の仕様策定を推進していく可能性が高そうです。

2024年はTaproot Assetsの年になるのか?草コイン投機需要を虎視眈々と狙うTiramisu Wallet
昨年はOrdinals Inscriptionsの誕生に端を発してビットコイン・ブロックチェーン上での投機熱が盛り上がりました。NFTから始まったブームは草コインへと移行しましたが、Ordinalsに対応していれば同じウォレットで取引できることで一つのエコシステムとしてまとまっている感覚はあります。 ところがNFTの文脈であればある程度理解できた「ビットコイン上にデータを保存している」という特徴は草コインに関してはあまり意味をなしていないように感じます。実際のところ大半のトランザクションはトークンの一次取得(Mint)や送金であり、実際にトークンの性質などをオンチェーンに記録する「発行」のトランザクションを圧倒的に凌駕しているためです。 逆に言えば、ユーザーが増加して手数料が問題視されるほどこれらの取引をわざわざ非効率的な形でビットコイン上で行う必要性が見直され、「ビットコイン上」という建前を保ちつつ、より効率的(低コスト)な手段に人気が出るかもしれません。まさにLightning Labsが開発するトークンプロトコル「Taproot Assets (旧称Taro)」はその未来に期

ちなみにシュノア署名が利用できるTaproot Channelsで将来的に利用できるようになるかもしれないものにHTLCではなくPTLCベースのライトニングネットワークがあります。しかし、こちらはまだ細かい部分の話が全然進んでいないので近いうちに実現するとは考えられません。

HTLCの問題点を一部改善したPTLCとその応用
ライトニングネットワークの基礎となっている、ノード間の送金バケツリレーを実現するHTLC (Hashed Timelock Contract)というスマートコントラクトが存在します。現在のライトニングネットワーク(LN)に欠かせない技術ですが、その構造的な問題がいくつかかなり前より指摘されていました。その代わりとしてにわかに脚光を浴びているのがPTLC (Point Timelock Contract)です。HTLCが「ハッシュ」を使用して送金の中継を実装していたところを、PTLCでは中継ノードごとに秘密鍵を加算していくことで実装します。PTLCを使ったライトニングネットワークが実現した場合の利点と、PTLCの応用可能性を見ていきましょう。 HTLCとは 本コラムの読者のみなさんにはおなじみのライトニングネットワークの仕組みに欠かせないのがHTLCです。LNでの送金は、トランザクションごとに受け手がプリイメージという秘密情報を生成し、そのハッシュ値をインボイスに含めて支払者に送ります。支払者は、支払いを行うと、支払った証明としてプリイメージを受け取り、そのチャネルの最新状態を更新し

Acinqが発表した「Swaproot」はTaprootを含む複数技術の組み合わせ

前置きが長くなりましたが、Acinqが提供するPhoenix WalletはユーザーとAcinqの間のチャネルの残高をチャネル開閉の手間をかけずに追加入金できることに定評があります。そんな彼らがTaprootを活用してオンチェーンからの追加入金コストを16~27%低下させたと発表しました。

Swaproot: cheaper and more private on-chain deposits on Phoenix
A better swap-in protocol with Taproot, MuSig2 and Miniscript descriptors

Phoenixは追加入金にSwap-in Potentiamというコンセプトをベースにしたプロトコルを利用しています。Swap-in Potentiamについては下記の記事から復習していただけますが、要するにユーザーとLSP間のマルチシグアドレスを起点に全ての取引を行えばLSP側は二重支払いリスクを負うことなく0承認取引を扱えるというものです。

Swap-in Potentiamでライトニングとオンチェーンの切り替えを意識させないUXを作る
ライトニングウォレットにとって大きな課題の1つに「ユーザーにオンチェーンとライトニングの違いを意識させないこと」があります。普及が進むライトニングですが、未だ多くの場合ビットコイン支払いはオンチェーンで要求されます。ユーザーを混乱させないUXの開発を各社こぞって試みていますが、特にトラストレスな仕組みにこだわる場合はライトニングチャネルの開閉にオンチェーントランザクションが必要という原理的な垣根は大きいです。 著名な匿名ライトニング開発者であるZmnSCPxj氏が年初にメーリングリストに投稿していたSwap-in Potentiamというコンセプトは、まさにウォレットにとって難題であり続けるオンチェーンとライトニングの融合を推し進めるものです。 [Lightning-dev] Swap-in-Potentiam: Moving Onchain Funds “Instantly” To Lightning モバイル環境でLSP利用が事実上必須なことを活用 モバイル環境のライトニングウォレットは常時起動していることが難しいため、特定のLSPを利用することが事実上必須になっています

これまで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が本来もたらすと想定されていた効率化を実現している