ビットコイン技術 上級

タップルート (Taproot) - シュノア署名でプライバシーと効率を高める

タップルートは2021年に有効化されたビットコインアップグレードで、複雑な支出条件を持つトランザクションを通常の単一署名送金と同じに見せ、シュノア署名・MAST・タップスクリプトによってプライバシーと効率を高めた技術です。

· 6分

**タップルート(Taproot)**は2021年11月14日、ブロック高709,632で有効化されたビットコインプロトコルアップグレードです。セグウィット以来4年ぶりの主要アップグレードで、複雑な支出条件を持つトランザクションを通常の単一署名送金と同じに見せ、プライバシーと効率を同時に高めました。タップルートは3つのビットコイン改善提案(BIP)で構成されます。BIP340(シュノア署名)、BIP341(タップルート)、BIP342(タップスクリプト)です。

graph TD
  P["内部鍵
(Internal Key)"] --> Q["タップルート出力鍵
(トゥイークで結合)"] T["スクリプトツリー
(MAST マークルルート)"] --> Q Q --> K["鍵パス支出
シュノア署名1つ"] Q --> S["スクリプトパス支出
使った枝だけ公開"] K --> R["通常の送金と
区別不可"] style Q fill:#58a6ff,stroke:#58a6ff,color:#000 style K fill:#3fb950,stroke:#3fb950,color:#000 style R fill:#3fb950,stroke:#3fb950,color:#000 style S fill:#f0883e,stroke:#f0883e,color:#000

タップルートが解決した問題

ビットコインの支出条件はスクリプトで表現されます。単一署名、マルチシグ、タイムロックのように条件が複雑になるほどトランザクションは大きくなり、その条件がブロックチェーンにそのまま露出します。つまり、ある出力が2-of-3マルチシグウォレットなのか、ライトニングチャネルなのか、単純なウォレットなのかが外部に分かってしまいました。これはプライバシーを損ない、ブロック領域を浪費しました。タップルートは、協力して支出する一般的なケースを単一署名のように見せることでこの問題を解決しました。

3つのBIP

  • BIP340 シュノア署名: ECDSAに代わる署名方式です。64バイト固定で、線形性により複数の署名を1つにまとめられます(鍵集約)。詳しくは下のシュノア署名の項目を参照してください。
  • BIP341 タップルート: 1つの出力鍵の中に鍵パスとスクリプトパスを一緒に収める構造を定義します。
  • BIP342 タップスクリプト: タップルート環境に合わせてビットコインスクリプトを更新し、将来のアップグレードを追加しやすくするバージョン体系を導入しました。

鍵パスとスクリプトパス

タップルート出力は2つの方法で支出できます。

  • 鍵パス(Key Path): 関係するすべての参加者が協力すれば、シュノア署名1つで支出します。この場合、外部からは通常の単一署名送金と区別できません。
  • スクリプトパス(Script Path): 協力が崩れた場合に備えた代替条件です。これらの条件はMASTというマークルツリーに収められ、実際に使った枝1つだけが公開されます。残りの条件は決して明らかになりません。

内部鍵とスクリプトツリーのマークルルートは、トゥイーク(tweak)という演算で1つの出力鍵に結合されます。そのため外見上は通常の公開鍵1つだけが見えます。

MAST: 条件を隠すマークルツリー

MAST(Merkelized Abstract Syntax Tree)は、複数の支出条件をマークルツリーの葉(leaf)として配置する方式です。従来は支出時に可能なすべての条件を公開する必要がありましたが、MASTでは実際に実行した条件とそのマークル証明だけを提示すれば済みます。条件が100個でも1000個でも、使った1つだけが露出するため、トランザクションが小さくなりプライバシーが向上します。マークルツリーの概念がそのまま適用されます。

何が良くなったか

  • プライバシー: 鍵パスで支出すると、マルチシグ、ライトニング、複雑なコントラクトがすべて単一署名送金と同じに見えます。すべてのタップルート出力が互いに区別できません。
  • 効率と手数料: シュノア署名は64バイトと小さく、スクリプトパスは使った枝だけを公開するため、データが減り手数料が節約されます。
  • 拡張性: 鍵集約(MuSig)とタップスクリプトのバージョン体系により、ライトニングやDLCなどの上位プロトコルがより効率的かつプライベートに動作する基盤が整いました。
  • 新しいアドレス形式: タップルートはbech32m形式のアドレス(bc1pで始まる)を使用します。

静かだったソフトフォーク

タップルートは既存のルールをより厳格にするソフトフォークで、旧型ノードと互換性があります。セグウィットの有効化がブロックサイズ戦争という激しい対立を経たのとは異なり、タップルートはSpeedy Trialという手続きでマイナーのシグナリングを経て、大きな論争なく有効化されました。技術的改善についてはコミュニティの幅広い合意があったためです。

関連する概念

関連記事