出典:Bitcoin Magazine; Compiled by Five Baht, Golden Finance
Rollups は最近、ビットコインのスケーリングでスポットライトを浴びており、幅広い関心という点で、ライトニングネットワークから本当に「雷を盗む」最初のものとなっています。 Rollupsは、ライトニングネットワークのコア流動性制約に縛られたり制限されたりしないオフチェーンのセカンドレイヤーになることを意図しており、エンドユーザーが資金を受け取るためには、誰かが事前に資金を割り当てる(または「貸す」)必要があり、中間ルーティングノードは、送信者から受信者への支払いの流れを促進するためにチャネル残高が必要です。
これらのシステムはもともとイーサやその他のチューリング完全システム上で動作していましたが、最近ではUTXOベースのブロックチェーン(ビットコインなど)への移植に焦点が移っています。本論文は、Bitcoin上での現在の実装の現状を議論することを意図しているのではなく、理想化されたRollupの長年の悲願であった機能を議論することを意図しています。これは、現在Bitcoinがサポートしていない機能、つまりBitcoin上で直接Zero Knowledge Proofs(ZKP)を検証する機能に依存しています。
Rollupの基本的なアーキテクチャは次のとおりです:単一のアカウント(ビットコインではUTXO)は、Rollupのすべてのユーザーの残高を保持します。このUTXOは、Rollupの既存のアカウントのすべての現在の残高のための、MerkleツリーのMerkleルートの形の約束を含んでいます。これらのアカウントはすべて公開鍵と秘密鍵のペアを使用して認証されるので、オフチェーン支出を開始するためには、ユーザーはまだ鍵で何かに署名する必要があります。この構造の一部により、ユーザーは自分のアカウントがMerkleツリーの一部であることを証明するトランザクションを作成するだけで、いつでも許可なく離れることができ、オペレーターの許可なしにRollupから一方的に撤退することができる。
Rollupのオペレーターは、オフチェーン取引を完了する際に、オンチェーン口座残高のメルクルルートを更新するために、取引にZKPを含める必要があり、それがなければ取引は無効であるため、ブロックチェーンに含めることができない。この証明によって、オフチェーンアカウントへのすべての変更がアカウント保有者によって適切に承認されていること、そしてオペレーターが悪意を持って残高を更新し、ユーザーの資金を盗んだり、不正に他のユーザーに再分配したりしていないことを検証することができます。
問題は、もしメルクルツリーのルートだけがチェーン上に掲載され、ユーザーがそれを閲覧・アクセスできるのであれば、好きなときに許可なくツリーから抜けることができるように、どのようにツリーに枝をつけるのか、ということです。
適切なロールアップ
適切なロールアップでは、新しいオフチェーン取引が確認され、ロールアップアカウントのステータスが変わるたびに、その情報はブロックチェーンに直接入れられます。ツリー全体ではなく、ツリーを再構築するために必要な情報です。単純な実装では、Rollupのすべての既存口座の要約には残高が含まれ、口座はRollupを更新するトランザクションでのみ追加されます。
より高度な実装では、残高差異が使用されます。これは基本的に、更新プロセス中にどの勘定科目に資金が追加または減算されたかの要約です。これにより、各ロールアップ更新は、発生した口座残高の変更のみを含むことができます。その後、ユーザーは単純にチェーンをスキャンし、ロールアップの最初から「計算」して、口座残高の現在のステータスを導き出し、現在の残高のメルクルツリーを再構築することができます。
これにより、多くのオーバーヘッドとブロックスペース(ひいてはお金)を節約しながら、一方的なオプトアウトに必要な情報へのアクセスをユーザーに保証することができます。ロールアップのルールでは、このデータがブロックチェーンを使用してユーザーに提供される公式ロールアップに含まれること、つまり、口座サマリーまたは口座不一致を含まないトランザクションは無効とみなされることが要求されます。
有効期限
ユーザーの引き出しのためのデータの可用性の問題に対処するもう1つの方法は、ブロックチェーン上とは別の場所にデータを配置することです。この場合、データが他の場所で利用可能であることを保証するために、ロールアップを強制する必要があるという微妙な問題が生じます。従来は、ロールアップのようなシステムのデータ利用可能レイヤーとして機能するように特別に設計された、他のブロックチェーンがこの目的のために使用されてきました。
これは、セキュリティがとにかく強いというジレンマを生み出します。データがビットコインのブロックチェーンに直接投稿される場合、コンセンサスルールはそれが絶対に正しいことを保証します。しかし、それが外部のシステムに投稿された場合、それができる最善のことは、データが別のシステムに投稿されたというSPVの証明を検証することです。
そのためには、データが他のチェーンに存在するという証明を検証する必要があり、これは究極的には予言マシンの問題です。ビットコインのブロックチェーンは、自分自身のブロックチェーンで起こったこと以外のことを完全に検証することはできません。しかし、ZKPは、ロールアップデータを含むブロックが生成された後に実際に公にブロードキャストされたことを検証することはできません。ZKPは、ロールアップデータを含むブロックが生成された後に実際に公開されたことを検証することはできません。
このことは、データを公開するという約束が作成され、ロールアップを進めるために使用されるが、データは実際には利用できないという、データ保留攻撃への扉を開くことになります。その結果、ユーザーは資金を引き出すことができなくなる。唯一の真の解決策は、ビットコイン以外のシステムの価値とインセンティブ構造に全面的に依存することである。
ジレンマ
これはロールアップにとってジレンマを生み出します。データの可用性に関して言えば、データをビットコインのブロックチェーンに投稿するか、他の場所に投稿するかの二者択一が本質的です。この選択は、ロールアップのセキュリティと主権、そしてスケーラビリティに大きな影響を与えます。
一方では、ビットコイン・ブロックチェーンをデータ可用性レイヤーとして使用することで、ロールアップのスケーラビリティにハードキャップがかかります。ブロックスペースは有限であるため、一度に存在できるロールアップの数と、それらすべての合計でオフチェーン処理できるトランザクションの数に上限があります。各ロールアップの更新は、前回の更新以降に残高が変化した口座の数に比例したブロック空間を必要とする。情報理論では、データを圧縮できるのはある時点までで、その時点でスケーリングの可能性はなくなります。
一方、データの可用性に異なるレイヤーを使用することで、スケーラビリティの向上に対するハードキャップはなくなりますが、セキュリティと主権に関する新たな問題も発生します。データの可用性を実装するためにビットコインを使用するRollupでは、ユーザーが抽出する必要があるデータがブロックチェーンに自動的に投稿されない場合、Rollupの状態が変更される可能性は低い。Validiumsでは、この保証は、使用される外部システムがなりすましやデータ隠蔽に抵抗できるかどうかに完全に依存する。
現在、外部のデータ利用可能システム上のブロック生産者は誰でも、そのブロックを実際にブロードキャストするのではなく、ブロックを生産することで、ビットコインロールアップユーザーの資金を乗っ取り、データを利用可能にすることができます。
それでは、実際に一方的なユーザーの引き出しを可能にする、ビットコイン上の理想的なロールアップ実装があったとしたら、それはどのようなものでしょうか?