原題:「The True Potential of RGB」原著者:A Jian

この記事は、ビットコインの資産発行プロトコルである RGB (オフチェーン スマート コントラクト システムとしても理解できます) について簡潔に説明することを試み、同じことを達成することを目的とした他のプロトコルとは大きく異なることを指摘します。これらの違いにより、RGB プロトコルはそれらよりもはるかに拡張性が高く、より広いプログラミング空間が確保されます。 RGB の完成したデザインを紹介することに加えて、これらのプログラミングの可能性についても探っていきます1。

RGBプロトコルとは何ですか?

ビットコイン上で資産を発行するという考えは古くからあります。しかし、ビットコインプロトコルには独自の特性があります:その状態は、ビットコインUTXO(「未使用の取引出力」)によってのみ表現されます;1つのUTXOは、自己の額面(ビットコインの価値)と「スクリプト公開鍵」(「ロックスクリプト」とも呼ばれます)という資金の消費条件をプログラムするためのもので、例えば、特定の公開鍵の署名を提供することが必要です;ロックスクリプトをプログラムするための操作コードは、ビットコインのコンセンサスルールによって提供されており、任意の安全ルールを実現するためには使用できません。したがって、UTXO内部で他の資産を創造することは不可能です——ビットコインスクリプトはこれらの資産の安全性チェックをプログラムすることができません。これは、ビットコイン上で資産を発行するという考えは本質的にビットコインブロックスペースの創造的な使用であることを意味します。つまり、契約の状態を変更するステップをアップロードするオフチェーンのスマート契約システムを設計し、これらの情報を収集することで、このスマート契約システムの最新状態を得ることができるということです。

粗い設計思想の一つは、契約状態を変更するステップの情報をそのままビットコインブロックチェーンにアップロードすることです。これは確かに機能しますが、いくつかの問題に直面することになります:(1)完全な情報をアップロードするため、ブロックスペースを多く消費する可能性があり、ユーザーが契約の状態を変更する必要があるとき(例:送金)には、より多くのオンチェーン手数料を支払う必要があります。特に、私たちがこのようなオフチェーン契約システムにビットコインよりも優れたプログラマビリティを望む場合、プログラマビリティの向上はより多くのブロックスペースを消費する代償を伴う可能性があります;(2)ブロック内のほぼすべての情報がオフチェーンのスマート契約を変更する可能性があるため、ユーザーはこのオフチェーン契約システムの最新状態を導き出すためにすべてのビットコインブロックデータを取得する必要があり、つまり検証コストが高くなります;(3)オフチェーンスマート契約システムの設計によっては、ビットコインに匹敵するプライバシーしか得られないか、さらにはより悪いプライバシーしか得られないかもしれません;また、より多くのプライバシーを提供できる場合でも、より多くのブロックスペースを消費する必要があるかもしれません。

過去に広く使用されたプロトコルの一つは「Omni」で、これはオフチェーン契約取引の完全な情報をアップロードせず、取引のハッシュ値のみをアップロードします。この方法は、前述の問題1を解決し、オフチェーン契約取引の複雑さとその経済的コストを切り離しますが、ユーザーは依然としてOmniプロトコルの最新状態を導き出すために完全なビットコインブロックデータを取得する必要があります。また、プライバシーを特に強化することもありませんでした。

RGBは「一次性封印(single-use seals)」という新しいパラダイムを使用しています。その使用法は非常にシンプルです:RGBは、各契約の各状態が必ずあるビットコインUTXOに付属することを要求します。そして、この状態を変更するには、このUTXOを消費し、その消費取引がブロックチェーンで確認される必要があります。さらに、消費取引は、状態変化内容のハッシュ値を提供する必要があります。これにより、変更後の状態に付属するUTXOが示されます。

RGBの開発者にとって、この設計は番号付きのプラスチックシールに似た部分があります:それが破られたかどうかを簡単に判断でき、破られた場合は再使用できません。しかし、別の角度から見ると、付属したUTXOをこの状態の容器または陶器の貯金箱と見なすことができます——貯金箱の中のお金を取り出すには、この貯金箱を壊し、中のお金を新しい貯金箱に移さなければなりません。

この設計は、以前の全体のブロックを大きな書き込み板と見なすプロトコルとは対照的です:UTXOをコンテナとして使用することで、そのUTXOを消費しない取引はコンテナ内の契約状態に影響を与えません。したがって、特定の契約の特定の状態を検証するためには、すべてのブロックデータを取得する必要はなく、必要なのは一連のビットコイン取引、これらのビットコイン取引が特定のブロック内に存在する証拠、これらのビットコイン取引が約束するRGB状態変化(関連するビットコイン取引と一対一で対応)だけで十分です。これらはデータのチェーンを形成し、契約の初期状態に遡ることを可能にし、この状態の本質を認識できるようにします。

オンチェーンスマート契約システム(例えばイーサリアム)に精通している読者にとって、このプロセスが理解しにくい理由の一つは、ブロックチェーンのコンセンサスに依存しない場合(それは契約の初期状態と各状態変化がすべてのノードによって検証されることを意味します)、このようなスマート契約システムの安全性がどのように保証されるかです。自分が受け取った資産が自分が望んでいるものであることをどのように保証し、資産が不正に増発されていないことをどうやって確認するかです。

答えは非常に簡単で、「クライアント検証(client-side validation)」と呼ばれています——自分で検証することです。オンチェーン契約システムでは、ノードは公開されている状態変化ルールに従って、各状態変化操作を検証し、無効な操作を拒否することで、初期状態から最新の状態を計算します。しかし、状態変化ルールと初期状態が知られている限り、オンチェーンコンセンサスによって検証することが唯一の方法ではなく、ユーザーは支払い側が提供する資料に基づいて、状態変化の各ステップが最初に定義された状態変化ルールに従っているかどうかを自分で検証できます。この方法により、検証側(資産の受取人と仮定)は、不正な状態変化をチェックし、受け入れを拒否することができます。

最後に、RGBプロトコルの特性を示す例を挙げます:

現在、アリスはUTXO A』を所有しており、RGBプロトコルに基づいて発行されたX単位の資産Yを保存しています。彼女はZ単位のYをボブに転送したいと考えています。この資産は、アリスの手元に届くまでに5人の前所有者(資産発行者を含む)を経ています。したがって、アリスはボブにこの4回の状態変化の証拠を提供する必要があります(この中には前の3回の証拠がアリスに提供されたものもあります)、それに契約の初期状態と状態変化ルール、各転送に使用されたビットコイン取引、各ビットコイン取引が約束するRGB取引、これらのビットコイン取引が特定のブロックで確認された証拠をすべてボブに送信します。ボブは契約の状態変化ルールに基づいてこれら4回の転送がルールに違反していないことを検証し、受け入れるかどうかを決定します。アリスがRGB取引を構築する際、ZがX未満であるため、彼女は残りの部分を受け取るためのUTXOも設定する必要があります。最終的に、アリスはこのRGB取引のハッシュ値を消費UTXO A』のビットコイン取引に埋め込み、この支払いを完了します。

最終的に、UTXOコンテナを使用することで、RGB契約の最新状態は、まだ子孫を持たない有向非巡回グラフ上の点として表現できます(各点はUTXOコンテナ内に格納されている状態を示します)。そして、下の図の所有者Pにとって、彼は契約の初期状態Gから到達したプロセス、つまり赤い円で注釈されたプロセスだけを知り、灰色の点については何も知りません:

RGBの利点

軽量な検証可能な状態

前述のように、ビットコイン上で発生した資産発行プロトコル(オフチェーン契約システム)と比較して、RGBは(特定の契約の特定の状態の)検証コストを大幅に削減しています。取引の際、受取人は契約状態が変更された情報を集めるためにすべてのブロックを遍歴する必要がなくなり、ビットコイン取引の一連の流れ、これらの取引が約束するRGB取引、これらのビットコイン取引が含む証拠(ブロックヘッダーのメルクル証拠に基づく)を得るだけで、支払い側が確かに特定の資産を一定数持っていることを確信できます。

この検証コストの低下は、ユーザーの大規模なインフラストラクチャプロバイダーへの依存(信頼)を大幅に減少させます。従来のプロトコルでは、検証コストが高いため、ユーザーは契約の最新状態を自分で計算することが難しく、したがってユーザーは一部のプロバイダー(例えば、自分のウォレットが使用する契約状態プロバイダー)を信頼しなければなりません。さらに、そのような計算コストを負担できるプロバイダーが少ないため、プロバイダーの集中化も意味します。しかし、RGBでは、ユーザーはビットコイン軽量クライアントを使用してビットコイン取引の一部を確認し、RGBプロトコルを使用してRGB取引の一部を確認するだけで、自己負担が可能です。

いくつかのオンチェーン契約システムと比較して、RGBは同様に軽量であると見なされます。これは、RGBが特定の契約の特定の状態をターゲットに検証できることに現れています。そして、UTXOに基づいていないシステムでは、UTXOのようにアクセスを制御するメカニズムが不足しているため、任意の取引が任意の状態を変更する可能性があるため、特定の状態をターゲットに検証することはほぼ不可能であり、すべての最新状態を計算しながら特定の状態を特定することになります——この意味で、「グローバル状態」と表現される特性は、実際には「均一状態」と呼ばれるべきであり、契約間の交差アクセスの特性を提供していますが、これにより検証コストが高くなり、信頼性を得ることがより困難になります。

これらのオンチェーン契約プロトコルにおいて、重要な最適化手段の一つは、ブロックヘッダーに最新状態(「状態ルート」)を約束することを要求することです。これにより、軽量クライアントはこれらの約束に基づいて、フルノードから得られた特定の契約の特定の状態を検証することができます。これは、すでに発生した計算(フルノードがすでに実行した計算)を再利用する方法であり、非常に効率的です。したがって、信頼のない性質を考慮しなければ、RGBよりも効率的であると見なすことができます。しかし、それは結局、軽量ノードがトランザクションの基本検証と契約状態計算でフルノードに依存していることを意味します。そして、ビットコイン軽量クライアントを使用するRGBウォレットでは、信頼の前提は関連するビットコイン取引が有効な取引であることであり、契約状態に関連する部分はクライアント自身が検証したものであり、したがって信頼のない性質がより良いです。欠点は、検証の遅延が長く、保管するデータが多くなることです。

拡張性

RGBの拡張性は2つの側面に現れます:

ビットコイン取引に埋め込まれているのは単なるハッシュ値であり、これはRGB取引のサイズ(契約が独自に定義した規則を除いて)には何の制限もありません——たとえRGB資産を100分割しても(RGB取引自体は非常に大きくなりますが)、ビットコイン取引に埋め込む必要があるのは1つのハッシュ値だけです。注6に記載されているように、このようなハッシュ値を埋め込む方法は2つあります:1つはOP_RETURN出力を使用することで、これはハッシュ値のオンチェーンスペースを消費することを意味します;もう1つは、Taproot出力のスクリプト公開鍵が約束するスクリプトツリーに隠されていること——これはオンチェーンスペースを消費しません。この点は、ユーザーがプログラマビリティのために経済性を犠牲にする必要がないことも意味します——オンチェーン手数料だけを考慮するなら。

RGB契約の最新状態は、有向非巡回グラフ上の子孫を持たない独立した点です——これは、これらの状態が独立して変更され、互いに影響を及ぼさないことを意味し、すなわち並行性を許可します。これは実際にUTXOから受け継がれた特性でもあります。この点は、あるブランチで発生した無効な変更(無効な取引)が他のブランチに影響を与えず、全体の契約がフリーズすることもないため、安全性の利点とも見なすことができます。

RGBが拡張性について批判を受ける一つの点は、各転送のたびに受取人が初期状態から支払者の状態に関連するすべての取引を検証する必要があることです——資産が転手される回数が増えると、後続の受取人の検証負担がますます重くなります。この批判は現実的です。そして、これを最適化するためには、すでに発生した演算を再利用する方法を見つける必要があります。証明システム技術(例えばSNARKs)は、こうした解決策を提供することが期待されています。

資産定義と保管メカニズムの分化

最後の利点は、UTXOのロックスクリプトメカニズムをどのように理解するかに依存しています。

ロックスクリプトは、資金の解除条件をプログラムするために使用できるため、保管ルールを実現できます。例えば、あるロックスクリプトが単に1つの公開鍵を含む場合、それは対応する秘密鍵の所有者だけがそれを制御できることを意味します。しかし、このような保管ルールもまた、ビットコイン契約型プロトコルプログラミングの基礎です。例えば、2-of-2のマルチシグロックスクリプトのUTXOは、ライトニングチャネルである可能性があります。チャネルの運用中、両者はほぼ無限に相互に支払いを行うことができ、資金のオンチェーン形式には何の変化もありません。言い換えれば、この時点で2-of-2のマルチシグロックスクリプトは、資金のオンチェーン形式を変更することなく、価値を移転するメカニズムを構成します。

このメカニズムは、UTXOが保持するビットコインの価値に使用できるだけでなく、もちろん、UTXOが保持するRGB資産にも使用できます。RGB資産を発行し、2-of-2のマルチシグUTXOに付いて、ライトニングチャネルのメカニズムを利用して、双方で無限回相互にこの資産を支払うことができます。同様に、RGB資産も他のビットコインスクリプトに基づく契約に入ることができます。

ここで、UTXOのスクリプトとRGBプロトコルは機能的に分化しています:前者は価値の保管と価値の移転のルールを実現することに専念し、後者は資産定義に焦点を当てています。これにより、資産の保管と資産の定義を分離することができます。これは重要な安全性の向上であり、他のいくつかのオンチェーン契約システムにおいて人々が追求しているものです。

RGB ですでに作成されたデザイン

上記の特性は、実際にはすべてのUTXO一次封印およびクライアント検証に基づくプロトコルに当てはまります。しかし、その基盤の上に、RGBプロトコルはさらに進んだ設計を行いました。

現在のRGBプロトコルの開発において、開発者たちは特にプロトコルのプライバシーに注目しているため、RGBは2つの側面でプライバシーを強化しています:

ブラインドUTXO。RGB取引において、受取人は混乱したUTXO識別子を使用して資産を受け取るだけで、実際に資産を受け取っているUTXOの特徴を明らかにする必要はありません。これは受取人が次の所有者に証拠を提供する能力には全く影響せず、同時に後続の資産受取者が前所有者の覗き見から対抗できるようにします。

Bulletproof。各取引の具体的な金額を隠すために使用できます。しかし、その後の資産所有者は依然として以前に増発されたことがないことを検証できます。

探求の余地がある空間

この部分では、RGBプロトコルが今後さらに探求できる空間について、主にプログラマビリティに関連して議論します。

現在、提案されているRGB契約テンプレート(スキーマ)はすべて資産発行に集中しています。しかし、RGBは「クライアント検証」パラダイムを使用しているため、実際にはUTXOという構造に制約されるだけで、クライアント検証によって確保できる任意の特性を追加することができます。

制限条項

UTXOの基盤の上に、プログラマビリティを拡張することができる概念は「制限条項(covenants)」です。制限条項の本来の意味は、資金が転送できる目的地を制限することです。この能力を持つことで、多くの興味深いアプリケーションをプログラムすることができます。例えば:

非インタラクティブな引き出し資金プール。多くの人々の資金を1つのUTXOに集め、制限条項を使用して、他の誰の助けも必要なく、自分の資金を引き出すことができるようにします。これにより、ブロックスペースの需要が高まるときに、低コストで人々が高リスクな場所から退出するのを助ける役割を果たすことができます。

保険契約。ある資金を必ず特定の場所に消費し、時間ロックを経て自由に消費できるようにします。時間ロックの間、保険契約の所有者は、緊急鍵を使用してこのプロセスを中断し、資金を別の場所に即座に移転することができます。この装置は、自主保管を大いに助けることができます。

現在のビットコインスクリプトにはこの能力がないため、ビットコインスクリプトで制限条項を有効にするにはソフトフォークが必要です。

ただし、「資産定義と保管メカニズムの分化」から得られるいくつかの利益を犠牲にすることを厭わなければ、RGB資産でそのような特性を実験することができ、RGB契約レベルでその機能を実現することができます——それはそれを使用するRGB資産にのみ有効であり(ビットコインには有効ではありませんが)、間違いなく興味深い空間を開くでしょう。

既存の制限条項に関する研究は、UTXOに基づく取引のプログラミング空間を拡張し、多くの特性を提供できることを示しています。しかし、これらの研究は基本的にビットコインに基づいており、ビットコインのようなプロトコルでは、私たちはより保守的になります。しかし、RGBでは、制限条項の核心的な能力——スクリプトレベルで消費する自身の取引を読み取る能力——をさらに一般化して、より柔軟なプログラミング能力、つまり契約間の交差アクセスを提供することができます。

交差アクセス

最小の制限条項は、UTXOが消費されるとき、そのスクリプトが消費取引の出力を読み取ることができることを意味します。しかし、完全に一般化された制限条項は、消費取引のすべての部分を読み取ることができることを意味します。これは、他の入力が同じ契約から来る必要がない場合、他の契約の状態を読み取ることができることを意味します。

RGBでは、各契約は独立した宇宙であり、自身の有向非巡回グラフを持つと仮定しています。しかし、ユーザーが同時に2つの異なる契約の状態を持つ場合があることは依然として可能です。もしRGB取引が2種類の契約からの資産を同時に消費することを許可するなら、このような交差アクセス能力にはアプリケーションシナリオがあるかもしれません(取引の検証が複雑になる可能性があることは想像できます)。

実際、UTXOに似た構造に基づくオンチェーン契約システム(例:Nervos Network)が存在し、この点を利用して契約の交差アクセス能力を実現しています。これは非常に新しい分野であり、かつてのビットコイン研究がほとんど触れなかった分野に向かっており、もしかしたら何か驚きが隠されているかもしれません。

結論

この記事では、読者は「UTXO」という概念が推論と幻想のすべての過程を通じて頻繁に言及されていることに気づくでしょう。これが私の意図です。UTXOを理解しなければ、RGBのようなプロトコルの設計の出発点を理解することも、RGBプロトコル設計の利点を理解することもできず、人々がそれを使用する方法を想像することもできません。RGBプロトコルの特性は、UTXOという一回限りの封印形式によって大きく形成されています。それに応じて、ビットコイン研究分野に蓄積されたUTXOに関する研究も、RGBの研究に応用することができます。

これも、ビットコインを理解していない人々がRGBを理解するのが難しい理由を説明しています。一方、ビットコインを好む人々は、RGBですでに作成されたデザインを認めるでしょう。

記事の注釈が多すぎるため、下記のリンクを参照してください