用語集 / プロトコルとアップグレード
Taproot
別名はBIP341です。
- Taprootとは?
- Taprootは、ビットコインにSchnorr署名と、協調的な支出経路が通常の単一鍵による支払いと同一に見える新しいアウトプットタイプをもたらした2021年のソフトフォークです。
BIP-341で規定されています。
3つの仕様が同時に導入されました。Schnorr署名のためのBIP-340、アウトプットタイプのためのBIP-341、そして調整されたスクリプト言語のためのBIP-342です。アクティベーションは2021年11月14日のブロック709,632で行われ、これは前回のアップグレードから4年後のことでした。実用的な効果として、複雑な取り決め、マルチシグのボールト、エスクロー、チャネルクローズが、他の誰の支払いと見分けがつかない形で決済できるようになります。
仕組み
この設計は、契約が実際にどのように終わるかについての観察から始まります。ほとんどすべての契約は合意によって終わるのです。
Taprootのアウトプットは、1つの32バイトの値の中に同時に2つのものをコミットします。1つは公開鍵で、協力する当事者が誰であれ、その者が保有します。もう1つはマークルツリーで、その葉は代替スクリプト、すなわち協力が失敗したときに適用されるフォールバックです。公開される鍵は、それ自体とそのツリーのルートのハッシュによって調整された協力鍵であり、つまり出力はフォールバックが存在することを明かすことなく、すべてのフォールバックにコミットします。
支出時には2つの経路のどちらかをたどります。鍵経路は単一の署名を生成し、ツリーについて何も公開しないため、そのトランザクションは1人による支払いと区別できません。スクリプト経路は、ちょうど1つの葉と、それがコミットされたルートに属することを証明するために必要な兄弟ハッシュを明かし、他のすべてのブランチは永久に秘密のままになります。2-of-3の定足数、タイムロック付きの復旧鍵、緊急条項を備えたボールトは、使用された条項だけを明かします。
BIP-342はそれらの葉のためのスクリプト言語を調整しました。OP_CHECKMULTISIGはTaprootの葉の中では使用できず、OP_CHECKSIGADDがそれに代わり、バッチを一度に消費するのではなくスタック上の成功した署名を数えるため、しきい値チェックを従来の面倒さなしに書けるようになります。10,000バイトのスクリプトサイズ上限と201のオペコード制限はなくなり、代わりにウィットネスのサイズに応じて増える署名演算の予算が使われます。未知の公開鍵タイプと未知の葉のバージョンは有効であると定義され、別のアドレス形式を必要とせずに次のアップグレードの余地を残しています。
Taprootはウィットネスバージョン1を占めるため、そのアドレスは元のbech32のチェックサムではなく、BIP-350のbech32mのチェックサムを使用します。そのためソフトウェアはbc1qを受け付けても、bc1pを拒否することがあります。
ビットコインを購入するときにこれが重要な理由
プライバシーの論点は、スクリプトを書くことのない人を含め、ほとんどすべての人に当てはまる論点です。
ビットコインを保護する従来のあらゆる方法は、それ自体を周囲に知らせていました。2-of-3のマルチシグ入金はオンチェーンで2-of-3のマルチシグ入金として判読でき、そのことはチェーン分析企業、そしてそこからデータを購入した誰にでも、そのアドレスが手間をかけるだけの額を保有する誰かのものだと伝えていました。同じ設定からの協調的なTaprootの支出は、1つの鍵に対して1つの署名を公開するだけです。セキュリティは変わらず、シグナルは消えます。
コストも同じ方向に動きます。Taprootの鍵経路のインプットはビットコインで最も安いインプットタイプであり、取り決めが複雑になるほど差は広がります。使わないフォールバックのブランチにはコストがかからないからです。当サイトのハードウェアウォレットのレビューで説明しているような相続やマルチシグの設定を構築する人にとって、これは何個の鍵を持つ価値があるかという計算を変えます。
摩擦は現実にあり、計画に織り込む価値があります。一部の取引所は今も出金先としてbc1pを拒否しており、古いハードウェアウォレットのファームウェアはTaprootアドレスをまったく導出できないことがあります。回避策は地味です。同じシードフレーズからbc1qアドレスで受け取り、あなたの一式が対応したときにTaprootへ移行してください。どちらのアドレスタイプも1つのバックアップから得られるため、待つことで失われるものはありません。
副作用についての正直な注記です。Taprootの安価なウィットネスデータがインスクリプションを低コストにした原因であり、その結果生じた需要が手数料率を、通常の支払いがここ数年見なかった水準まで押し上げました。それは割引の結果であって設計の目的ではなく、それを欠点として挙げるのは妥当なことです。
Speedy Trial、Taprootをアクティベートした妥協案
コードは2021年初頭までに議論の的ではなくなっていましたが、それでもアクティベーション方法が危うくそれを頓挫させるところでした。
議論はBIP-8とそのlockinontimeoutフラグをめぐるものでした。一方の陣営は、マイナーがシグナルを出すかどうかにかかわらずタイムアウト時にアクティベーションを強制することになるLOTをtrueに設定することを望み、その根拠として2017年にマイナーが無期限に停滞させうることが示されたと主張しました。もう一方はfalseを望み、その根拠として、弱い支持での強制的なアクティベーションは、それが避けようとしている分裂のリスクを招くとする立場でした。どちらの側も何か月も動きませんでした。
Speedy Trialは問いを小さくすることで行き詰まりを終わらせました。BIP-9のバージョンビットによるカウントを維持し、しきい値を2,016ブロック中1,815に下げ、およそ3か月のウィンドウを開き、固定の最小アクティベーション高を709,632に設定したため、ロックインと施行の間には長く予測可能な隔たりが置かれました。マイナーがシグナルを出せば、フォークは既知の日に起こりました。出さなければ、試みは早く失効し、より厳しい議論を何も失わずに再開できました。
コードは2021年5月1日にBitcoin Core 0.21.1でリリースされました。マイナーは2021年6月12日に終わる難易度調整期間でしきい値を通過し、ネットワークにはルールが変わる前に5か月の事前通知が与えられました。これはビットコインがこれまでに使ったアクティベーション方法のうち、主として安価に失敗するように設計された唯一の方法であり続けています。
Taproot vs Schnorr署名
Taprootはパッケージであり、Schnorr署名はその一部です。BIP-340は1980年代から暗号理論に存在し、原理的にはどこでも使える署名スキームを定義し、BIP-341はビットコインの出力がどのようなものかを定義し、BIP-342はその内部で何が動くかを定義します。ビットコインではBIP-340の署名はウィットネスバージョン1の支出でのみ有効であるため、実際にはこの3つは切り離せませんが、それらは別々の問題を解決する別々の文書であり、人々が最も興味を持つ鍵集約は、Taproot自体の性質ではなく署名スキームの性質です。