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