Milkomeda Algorandロールアップのセキュリティ

Akio Sashima
Milkomeda日本
Published in
Sep 30, 2022

Milkomedaのローンチにより、Algorandのエコシステムにロールアップが登場したばかりの今、一歩踏み込んで、技術全体としてのロールアップを展望してみるのはいかがでしょうか。ロールアップは、2018年にGithub上の匿名ユーザーによって初めて提案されました。ロールアップはEthereumの世界ではスケーリング・ソリューションとして知られており、多くの人が利用していますが、Ethereumの世界以外ではかなり馴染みが薄いものです。

では、ロールアップとは何なのか?Milkomeda Algorandロールアップは、具体的にどのような仕組みなのでしょうか?また、Algorandはどのようにトランザクションを保護し、その結果、ロールアップのデータをオンチェーンで保護するのでしょうか?

ロールアップとは何か?

ロールアップとは、「レイヤー2(L2)」チェーンと言われています。レイヤー2とは、レイヤー1(L1)またはメインチェーンと呼ばれる既存のブロックチェーンの上に存在し、レイヤー1のネイティブでビルトインされた特性を利用できることを意味します。

ロールアップの背後にある重要なアイデアは、L2トランザクションの計算をオフチェーンに移行して効率性と相互運用性を向上させながら、L2トランザクション・データをオンチェーンで提出することです。サイドチェーンとは異なり、ロールアップはブロックチェーンをシーケンスと潜在的なデータの可用性のために使用することにより、基礎となるブロックチェーンのセキュリティを継承します。これは、凝縮されたトランザクション・データのバッチを定期的にメインチェーンにポストすることで実現され、チェーンを追う誰もがロールアップの状態を再構築し、その中のトランザクションを検証することができます。

ロールアップのトランザクションは、バッチャー(別名、ローラー、したがってロールアップ)によって収集、実行、バンドルされます。バッチャーはそのバンドルを「ロールアップ・バッチ」としてメインチェーンにポストします。オブザーバー・ノードを実行しているユーザー(誰でも自分でできるようになる)は、このトランザクションのバッチを読み、つまり「デプロイ」して、ロールアップの状態を再構築するためにそれを使用することができます。これらのトランザクションをレイヤー1に保存することで、ロールアップが構築されたレイヤー1のセキュリティを継承することができます。

ロールアップがレイヤー1のセキュリティを継承しつつ、レイヤー1からの計算負荷を取り除くことができるのは、このバッチ ・ポスト・リードのプロセスによるものです。L1に任意のデータを格納できるため、それを解釈するための代替仮想マシン(ここではよく知られたEVM)を使用することができます。

ロールアップは、平たく言えば「チェーンの上にチェーンが乗っている」ようなものです。しかし、前述したように、すべてのレイヤー1が同じではなく、したがってすべてのロールアップが同じというわけでもありません。実際、Algorand上にMilkomeda A1ロールアップを構築し展開するために、我々は新しいデータ可用性プロトコルをゼロから開発しなければなりませんでした。

Milkomeda Algorandロールアップの仕組みと安全性

Algorandブロックチェーンの上にA1ロールアップを実装するために、私たちはAlgorandをシーケンシャルなデータの可用性のために使用する方法を見つける必要がありました。言い換えれば、バッチが適合することを保証しながら、正しい順序でAlgorandに目的のロールアップ・トランザクション・データをポストできるようにする必要があるのです。私たちは、シンプルに始めて、後に複数のバッチャー(中には敵対するバッチャーもいるかもしれません)にスケールアップできるようなアプローチを選びました。

Algorandの各トランザクションでは、トランザクション・ノートフィールドに最大1kbの任意のデータを含めることができます。これらは、ロールアップに関連するデータのキャリアとなります。さらにAlgorandでは、1つのアトミック・グループに最大16のトランザクションを掲載することができます。つまり、すべてのトランザクションが所定の順序で同じブロックに含まれるか、あるいはすべてが失敗することになります。これらのルールを使って、最大16KBのデータをポストする際の正しい順序を確保することができます。しかし、より大量のデータを正しくシーケンスしてポストできるようにしたいので、これを保証するためにさらに一歩踏み込む必要がありました。

より大量のデータを掲載するために、バッチの配列決定とバッチ・データの公開を分離する2ステップのプロセスを考案しました。これを「バッチ提案フェーズ」と「バッチ利用可能フェーズ」と呼びます。

バッチ提案フェーズ
バッチャーがユーザーから十分なロールアップ・トランザクションを収集し、どれを次のバッチに入れるかを決定した後、それらをエンコードし、結果のデータを15kbチャンク(すなわち、1つのアトミックAlgorand txグループに快適に収まるもの)に分割します。これらのチャンクを使ってメルクルツリーが構築され、そのルートが与えられたバッチのバッチ提案となります。

ルートがブロックに含まれると、そのバッチは正式に提案されたことになり、バッチ利用可能フェーズに移行します。

バッチ利用可能フェーズ
このフェーズでは、新しいバッチ提案は受け入れられず、バッチャーはチェーンにすべてのバッチ・データをポストするための時間枠を設定されます。ポストされた各データ・チャンクには、バッチ提案にリンクするマルクル証明書がポストされます。もしバッチャーが時間内に投稿できなかった場合、そのバッチは無効とみなされ、破棄されます(この場合、バッチ提案フェーズに戻ります)。

ロールアップ・オブザーバーは、誰でも実行可能であり、次に、ポストされるバッチのためにレイヤー1チェーンを読み取ります。各バッチを見つけると、含まれるマルクル証明に基づいてそのチャンクを順序付けし、それによってエンコードされたロールアップ・バッチを正常に復元します。バッチからこれらのトランザクションをすべてEVMノードに適用することで、ロールアップの状態を再構築し、トークン残高やスマートコントラクトの状態など、通常の問い合わせができるようになります。

今後の展開

私たちのロールアップの初期設定は、単一のバッチャーで動作します(現在のすべてのロールアップ・プロジェクトで慣習となっているように)。いずれは、バッチ提案フェーズをアップグレードして、バッチャーをオープンにできるようにする予定です。重要な点として、単一のバッチャーのシナリオであっても、オブザーバーは、ロールアップの状態検証のためにバッチャーに依存しません。ロールアップを監視する人は、自分自身で簡単に無効なトランザクションを検出でき、ロールアップをローカルに復元するときにそれらを無視することができます。

ロールアップは、それが構築されたチェーンのセキュリティを継承し、A1ロールアップはAlgorandのセキュリティを継承します。では、Algorandはどのようにトランザクションを保護し、A1ロールアップのデータの可用性を確保しているのでしょうか。

Algorandのセキュリティはどのように確保されているのでしょうか?

Algorandはビザンチン合意に基づいて構築されたピュア・プルーフ・オブ・ステーク(PPoS)プロトコルを使用してネットワークを保護し、瞬時に最終的な結果を得ることができます。その結果、4秒以内にトランザクションを確認でき、トランザクション・スループットは約6,000TPSとなります。ネットワークを支えるステークの過半数が正直者である限り、このプロトコルは悪意ある行為者を許容することができます。

ALGOを保有する全てのユーザはコンセンサス・プロトコルに参加することができます。そのためには、ユーザーのアカウントはオンラインでなければなりません。エクスポージャーを下げるため、オンライン・ユーザーはコンセンサスに参加するために自分の支出鍵(取引に署名し、ステークを支出するために使用する鍵)を使用しません。その代わり、ユーザーはオンラインになる前に秘密の参加キーを生成して登録する必要があります。この鍵があれば、オンライン・アカウントはブロックの提案と確認に参加することができます。

ユーザーはステークが多いほど、コンセンサス・プロトコルに参加するよう選択される可能性が高くなります。コンセンサス・プロトコルに参加するユーザーの選択は、VRF(Verifiable Random Functions)を用いて行われます。そのため、悪意のある者はブロック検証プロセスの参加者を特定できず、特定のユーザをターゲットにして彼らやコンセンサス・メカニズムを破壊することができません。また、このような攻撃をさらに防ぐため、ブロック選定のラウンドごとに参加者を変更します。

Algorandは、委員会による2回の投票を含む3段階のプロセスを経て即座に最終決定されるため、ネットワークをフォークすることは不可能です。悪意のあるアクターが、同じラウンドのブロック生成から別々のブロックを受け入れるように2人の正直なアクターを説得することはできませんし、一度に認証されるブロックは1つだけです。これは、ネットワークの安全性を高め、ネットワークに即時の最終性をもたらすのに役立ちます。

Algorandについてもっと知る:

Algorand Inc: Website

Algorand Foundation: Website

Algorand Research: White Papers

Twitter: @Algorand

Medium: @Algorand

Milkomeda Algorand A1ロールアップを試す

そのセキュリティが戦わされ、時間をかけて検証されてきたAlgorabdのようなブロックチェーンの上にロールアップを構築することで、開発者とユーザーは、A1ロールアップがAlgorandエコシステムにもたらすスケーリングと相互運用性の両方を自信を持って利用することができます。Algorandのトランザクションの即時最終性により、ユーザーはA1のEVMエコシステムとやり取りする際に、この同じプロパティを継承することで、大幅に改善されたエクスペリエンスを体験することができます。

Milkomeda A1ロールアップがAlgorandエコシステムに何をもたらすかを理解するのに十分な背景を得たところで、Milkomeda Algorand Rollup bridge dAppを介してブリッジすることにより、testnetでそれをご自身で試してみることができます。A1ロールアップの使い方を知りたい場合は、こちらの記事でテストALGOのラップとアンラップの方法を説明してあり、テストネット上で使用できるようにしています。

Milkomeda A1ロールアップは、Erhereumエコシステム以外のロールアップの最初のデプロイの一つであり、私たちMilkomedaとブロックチェーン・スペース全体にとって非常にエキサイティングなリリースです。MilkomedaとA1の進捗を知るには、以下のリンクから私たちのソーシャルやブログをフォローしてください。

Milkomeda: Website

Documentation: GitBook

Twitter: @Milkomeda_com

Medium: @milkomedafoundation

元記事:https://medium.com/@milkomedafoundation/security-of-the-milkomeda-algorand-rollup-77e6ea784ea6

--

--