MSTR Cat

ブロックチェーン/レベル IV · プロトコルを深く知る/4.2 アップグレード/レッスン 1

Taprootとシュノア署名

契約を隠す鍵、そしてポケットに収まる署名

用意するもの生のトランザクションの16進数データを閲覧できるブロックエクスプローラーTaprootアドレス(bc1p)に対応するウォレットBIP341およびBIP340の仕様書

問い

  1. なぜ複雑な多者間契約がブロックチェーン上では単純な個人の支払いと全く同じように見えるのでしょうか?
  2. 複数の秘密鍵を、その存在を観察者に一切明かすことなく、どのようにして1つの公開鍵に統合できるのでしょうか?
  3. 10人による署名を、1人による署名と見分けがつかないものにする数学的性質とは何でしょうか?

探究

  1. Taproot以前は、コインを使用するたびに複雑な支出条件がすべて公開されていました(ベアスクリプトの場合は出力そのものに記載されていました)。マルチシグの支出では参加者全員の鍵が、タイムロックではその期間が、ハッシュロックではその構造が明らかになりました。この公開性は高度なユーザーにプライバシー上のリスクをもたらし、冗長なデータでブロックスペースを圧迫しました。ネットワークはすべてのスクリプトをいわば開かれた本として扱い、複雑な取り決めほどその完全なロジックをすべてのノードと観察者に公開せざるを得ませんでした。
  2. Taproot(BIP341)はコミットメントのモデルを変えます。出力は、P + t·Gとして計算される単一の32バイトの公開鍵Qを指すようになります。ここでPは主たる支払者が管理する内部鍵であり、tは任意で設定できる代替スクリプトのツリーのマークルルートへのコミットメントです。オンチェーンでは、この出力は通常の単一鍵による支払いと同じように見え、その背後にある複雑さは隠されます。
  3. この効率性を支えているのがシュノア署名(BIP340)です。平均71~72バイトの可変長DERエンコーディングを使うECDSAとは異なり、シュノア署名は固定長64バイトの署名を生成します(デフォルト以外の署名ハッシュタイプでは65バイト)。固定長であることでパース処理が簡素化され、トランザクションのウェイトも削減されます。また、シュノア方式の線形性は鍵の集約も可能にします。MuSig2のようなプロトコルを使えば、複数の公開鍵を1つの集約鍵にまとめることができ、グループが個々の参加者を明かすことなく、あたかも単一の主体であるかのように署名できます。
  4. 支出は2つの異なる経路で行われます。キーパスでは、すべての当事者が協力して集約鍵で署名し、その結果のトランザクションは通常の単一鍵による支払いと区別がつきません。スクリプトは一切公開されず、追加データも付きません。これにより、Lightningチャネルの協調クローズやマルチシグウォレットにおけるプライバシーが守られ、複雑な金融上の取り決めのメタデータがブロックチェーンの公開台帳に漏れることはありません。
  5. 協力が得られない場合は、スクリプトパスが使われます。支払者はマークルツリーから特定のリーフ1つを、それがツリーに含まれることの証明とともに公開します。使われなかったブランチは隠されたままで、代替条件のプライバシーは保たれます。MAST(Merkelized Abstract Syntax Trees)として知られるこの仕組みにより、引き出しの遅延や緊急用の鍵といった多様な支出ルールを、本当に必要になるまで公開することなく、単一の出力の中に共存させることができます。
  6. その実際的な影響は大きなものです。Taprootアドレスは「bc1p」で始まります。MuSig2(BIP327)は鍵の集約を標準化し、異なるウォレットベンダー間で相互運用可能なマルチシグを実現します。同様の目的で、FROSTのような閾値署名方式の開発も進められています。ネットワークは2021年11月、ブロック709,632でこの仕組みを採用し、複雑なスクリプトを、協調して使う場合にはより小さく、より安価に、そしてデフォルトでプライベートなものにしました。

重要な事実

  • Taproot(BIP341)は2021年11月、ブロック709,632で有効化されました。
  • Taproot出力は単一の鍵Q = P + t·Gにコミットします。ここでtは、Pと(存在する場合は)スクリプトツリーのルートから計算されるタグ付きハッシュです。
  • シュノア署名(BIP340)は64バイトの固定長で、DERエンコーディングによるオーバーヘッドがありません。
  • キーパスによる支出ではスクリプトが一切公開されず、単一鍵による支払いと区別がつきません。
  • スクリプトパスによる支出で公開されるのは使用された特定のスクリプトリーフのみで、他のブランチは隠されたままです。
  • MuSig2(BIP327)は、相互運用可能なマルチシグウォレットのためのn-of-nの鍵集約を実現します。

演習 九・六・三・一

9集めるTaproot以前に存在した、ビットコインの支出条件またはスクリプトの種類を9つ挙げてください。それぞれがオンチェーンで引き起こす具体的なプライバシーの漏洩やサイズ面のペナルティも記してください。
6まとめる9つの条件を、Taproot出力での扱われ方に基づいて6つのカテゴリーに分類してください。例えば、キーパスによって完全に隠されるもの、紛争時にのみ明らかになるもの、MuSig2で集約されるもの、その他の構造的な変化を伴うもの、などです。
3絞り込む6つのクラスターを、スクリプトを単一の鍵の背後に隠すことでネットワークの効率とユーザーのプライバシーが向上する核心的な理由3つに絞り込んでください。
1結晶化するTaprootのマークルツリー構造によって、条件を公開することなく複雑な金融上の取り決めがどのように可能になるのかを、1文で説明してください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS