Roll の基本構造は次のとおりです:単一のアカウント(BTCではUTXO)がRollup内のすべてのユーザーの残高を保持します。このUTXOには、MerkleツリーのMerkleルートとして存在する、Rollup内のすべての現在のアカウントの残高を約束するコミットメントが含まれています。これらのすべてのアカウントは公開鍵/秘密鍵ペアを使用して認証されるため、オフチェーン支出を行うには、ユーザーは引き続き秘密鍵である特定のコンテンツに署名する必要があります。この構造のこの部分により、ユーザーはいつでも許可なしに去ることができ、単にアカウントがMerkleツリーの一部であることを証明する取引を作成すれば、オペレーターの許可なしにRollupを単方向で退出できます。
ビットコインマガジン:ロールアップはどのようなジレンマに直面していますか?
出典:ビットコインマガジン; コンピレーション:ファイブバーツ、ゴールデンファイナンス
Rollupsは最近、BTCの拡張の焦点になり、ライトニングネットワークからの注目を浴びる最初のものになりました。Rollupsは、ライトニングネットワークのコアの流動性の制約や制限を受けないオフチェーンのセカンドレイヤーとしての役割を果たすことを目指しています。つまり、最終的なユーザーは事前に資金を割り当て(または「借りる」)する必要があり、または中間ルーティングノードはチャネルの残高を持っている必要があります。これにより、送信者から受信者への支払いの流れを促進します。
これらのシステムはもともとイーサリアムや他のチューリング完全システムで実行されていましたが、最近では重点がUTXOベースのブロックチェーン(例:BTC)への移植に移っています。この記事ではBTCでの現在の実装については議論するつもりはありません。代わりに、BTCで直接ZKP(ゼロ知識証明)を検証する能力が現在サポートされていない機能に依存する、長年にわたる理想的なRollupの機能について議論します。
Roll の基本構造は次のとおりです:単一のアカウント(BTCではUTXO)がRollup内のすべてのユーザーの残高を保持します。このUTXOには、MerkleツリーのMerkleルートとして存在する、Rollup内のすべての現在のアカウントの残高を約束するコミットメントが含まれています。これらのすべてのアカウントは公開鍵/秘密鍵ペアを使用して認証されるため、オフチェーン支出を行うには、ユーザーは引き続き秘密鍵である特定のコンテンツに署名する必要があります。この構造のこの部分により、ユーザーはいつでも許可なしに去ることができ、単にアカウントがMerkleツリーの一部であることを証明する取引を作成すれば、オペレーターの許可なしにRollupを単方向で退出できます。
Rollup のオペレーターは、トランザクションに ZKP を含める必要があり、これによりオフチェーン取引の過程でオンチェーンアカウント残高のMerkleルートを更新します。このZKPがないと、取引は無効になり、ブロックチェーンに含めることはできません。この証明により、オフチェーンアカウントのすべての変更が正当なアカウント所有者の承認を得たものであること、またオペレーターが残高を悪意を持って更新してユーザーの資金を盗むことはないこと、または不正に他のユーザーに再割り当てすることはないことを人々が検証できます。
問題は、もしもMerkleツリーのルートだけがオンチェーンに公開され、ユーザーがそれを見ることやアクセスすることができる場合、彼らはいかにして自分たちのブランチをツリーに配置し、許可なしでいつでも退出することができるのかということです。
適切なロールアップ
適切なRollupでは、新しいオフチェーン取引が確認され、Rollupアカウントの状態が変化するたびに、情報が直接ブロックチェーンに格納されます。全体のツリーではなく、ツリーを再構築するために必要な情報です。簡単な実装では、Rollup内のすべての既存のアカウントの要約には残高が含まれ、アカウントはRollupの取引が更新されるたびに追加されます。
より高度な実装では、残高の差異を利用します。これは、更新プロセス中にどのアカウントが資金を増やしたり減らしたりしたかを要約するものです。これにより、各Rollupの更新には、アカウント残高の変更のみが含まれます。その後、ユーザーは単純にチェーンをスキャンし、Rollupの先頭から「計算」を行い、アカウント残高の現在の状態を再構築できます。これにより、現在の残高のMerkleツリーを再構築できます。
これにより、大幅な費用とブロックスペース(お金を節約する)が節約され、同時にユーザーが片側退出に必要な情報を保証できるようになります。ロールアップのルールでは、これらのデータをユーザーに提供する公式のロールアップに含める必要があります。つまり、アカウントの要約やアカウントの差分を含まないトランザクションは無効と見なされます。
有効期限
ユーザーデータの取得可能性の問題を処理する別の方法は、データをブロックチェーンの外の別の場所に置くことです。これには微妙な問題が生じ、rollup は依然として他の場所でデータの利用可能性を強制する必要があります。従来、他のブロックチェーンがこの目的で使用され、rollup などのシステムのデータ利用可能性レイヤーとして専門に設計されています。
これにより、同様に強力なセキュリティ保護が困難になります。データがBTCブロックチェーンに直接公開されると、コンセンサスルールによってそれが絶対に正しいことが保証されます。しかし、外部システムに公開されると、それができることは、SPVプルーフを検証することであり、つまり、データが別のシステムに公開されたことを確認することです。
これは、他のオンチェーンにデータが存在することを検証する必要があり、最終的にはオラクルマシンの問題です。BTCのブロックチェーンは、自分自身のブロックチェーンで起こること以外のことを完全に検証することはできませんが、ZKPを検証することができる最善の方法です。しかし、ZKPは、rollupデータが生成された後に実際に公開されたかどうかを検証することはできません。外部情報が本当に誰にでも公開されているかどうかを検証することはできません。
これによってデータの保留攻撃が解放され、発行データに対する約束を作り、それをrollupに進めることができますが、実際にはデータは使用できません。これにより、ユーザーは資金を引き出すことができません。唯一の真の解決策は、BTC以外のシステムの価値とインセンティブ構造に完全に依存することです。
ジレンマ
これはrollupにジレンマをもたらしました。データ可用性の問題が発生すると、データをBTCブロックチェーンにまたは他の場所に公開するかという二者択一が基本的に存在します。この選択肢は、rollupのセキュリティ、主権、および拡張性に重大な影響を与えます。
一方面,BTCブロックチェーンをデータの利用可能性レイヤーとして使用すると、rollupの拡張性には硬性の上限が設定されます。ブロック空間は有限ですので、一度に存在できるrollupの数やオフチェーンで処理できる全てのrollupの取引量に上限が設定されます。各rollupの更新には、直前の更新以来残高に変化があったアカウントの数に比例したブロック空間が必要です。情報理論ではデータを一定の程度まで圧縮することしか許されておらず、この点でさらなる拡張の可能性はありません。
一方で、データの利用可能性を実現するために異なるレイヤーを使用することは、拡張性の利点の上限を取り除くが、新たなセキュリティと主権の問題をもたらす。データの利用可能性を実現するためにBTCを使用するRollupでは、ユーザーが抽出する必要のあるデータが自動的にブロックチェーンに公開されない場合、Rollupの状態は変化しない。Validiumsを使用すると、この保証は不正行為やデータの隠蔽に対する外部システムの能力に完全に依存します。
現在、外部データ可用性システム上の任意のブロック生成者は、実際にブロックをブロードキャストする代わりにブロックを生成することにより、BTCRollupユーザーの資金を乗っ取ることができ、データを利用可能にすることができます。
では、本当に理想的なRollup実装をBTCで実現した場合、本当に片側のユーザー引き出しが実現されると、どのようなことになるのでしょうか?