この記事では、Taprootを拡張したGraftrootというコンセプトについて、Graftrootのコアアイデアの概要、TaprootやMASTと比較したメリットや課題について解説します。
MASTやTaprootのような、複雑な条件を含むコントラクトを効率よく記述するためのアイデアに興味のある方、より深くビットコインのスクリプトについて理解したい方に向けた内容となっています。
第1章 Taprootの課題
Taprootの課題として、「マルチシグ+例外処理」というテンプレートから外れた処理はできない、という点が挙げられました。
テンプレート化されたコントラクトのうち2者択一しか条件を選べないため、TaprootではMASTほどの柔軟な表現はできません。
解決手段として、Taprootを数珠つなぎにしたり、入れ子構造にして複雑な条件を表現することも考えられますが、効率性や秘匿性が低下するため、Taprootの長所を削いでしまうことになります。
このTaprootの課題を解決し、効率性と秘匿性を保ちながら柔軟な表現を可能とする技術がGraftrootです。
第2章 Graftrootのアイデア
Graftrootは、Taprootの提案者であるGregory Maxwellによって、2018年2月に提案されました。Graftrootのアイデアの概要を図1に示します。
図1. Graftrootのアイデア
Graftrootでは、Taprootでも用いられていた集約鍵のみをオンチェーンに記述します。
図1では、アリスとボブによる 2-of-2 マルチシグを表現する集約鍵Cを例として挙げています。この集約鍵Cを生成するには、第2回で紹介したシュノア署名ベースのMuSigを用います。
このGraftrootに預けられたコインは、アリスとボブの秘密鍵を用いた署名を用いて、通常のマルチシグと同様に取り出すことができます。
では、アリスまたはボブが何らかの事情によりコインを取り出せなくなってしまった場合、どうすればよいでしょうか?
署名済み例外処理スクリプト
Taprootの場合、マルチシグの条件が成立しなかった場合の例外処理スクリプトのハッシュをオンチェーンに含めていました。
一方、Graftrootでは、例外処理スクリプトに関する情報は一切オンチェーン上に書き込むことはせず、集約鍵Cに対応する署名がされたスクリプトであれば、どのようなスクリプトでもコインを取り出すことができるよう、プロトコルを拡張します。
例えば、アリスとボブが、自分たちが不慮の事態で死んでしまった場合に、キャロルにコインを取り出す権利を委譲したいと思う場面を考えてみましょう。
このとき、例えば、
・1年後にキャロルの署名によってコインを取り出すためのスクリプトを作成
・アリスとボブの集約鍵Cに対応する署名を施す
・キャロルにオフチェーンで権利を委譲する
という条件を書いておくと、キャロルは、署名されたスクリプトと自分の秘密鍵を用いれば、1年後にはアリスとボブのコインを取り出すことができます。
このとき、署名スクリプトの情報は一切オンチェーン上には記載されていないため、Graftrootのアドレスに対してコインが送金されたあとでも、アリスとボブは任意のスクリプトをいくつでも作成して、デイブやエレンなど任意の相手に委譲することが可能です。
第3章 Graftrootの考察
では、Graftrootのメリットや課題を、TaprootやMASTと比較しながら再度考察してみましょう。
Graftrootのメリットは主に次の3点に集約されます。
・自由度が高く、拡張性に優れている
・データサイズの肥大化を防ぐことができる
・MAST, Taprootに比べて高い秘匿性を実現
これらのメリットが具体的にどういうことなのか、それぞれ例をあげて見ていくことにしましょう。
これ以降の記事はオンラインサロン「即戦力!ブロックチェーン技術者養成道場」で公開中です。
続きを見るには、即戦力!ブロックチェーン技術者養成道場(DMMのページに移動します)をご覧ください!