このリポジトリには、Espresso Sequencer と統合されたサンプル ロールアップが含まれています。サンプル ロールアップは、Espresso から注文されたトランザクションを受け取り、それらをロールアップ VM で実行し、模擬状態証明を L1 (イーサリアム) スマート コントラクトに発行する単純なキー/値アカウント ストアを表します。ロールアップには、トランザクションを送信し、アカウント残高をクエリするための単純な API が含まれています。
Espresso は、ロールアップ トランザクションのバッチで合意を達成するネットワークである HotShot 上に構築されています。大まかに言えば、ロールアップは、負荷の高い計算をオフチェーンで実行する L1 スケーリング ソリューションです。 zkRollups の場合、証明者はトランザクションの有効性のバッチ証明とともにロールアップ状態チェックポイントを L1 に定期的に送信します。ここで示されている例は、モック zkRollup です。 Espresso ロールアップの詳細については、ドキュメントをご覧ください。
docker
がシステムにインストールされていることを確認してください。
Linux ディストリビューションの場合は、Linux ディストリビューションの公式手順に従うか、公式の Docker 手順を参照してください。
まず、ローカルの Espresso Sequencer ネットワークを開始する必要があります。
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
それが完了したら、サンプル ロールアップをデプロイすると、ネイティブで実行できるようになります。
ネイティブで実行するには、Rust ツールチェーンが必要です。すべての依存関係をインストールするための nix シェルを提供します。 Nix は nix-installer 経由でインストールできます。インストールしたら、プロジェクトのルートから以下を実行します。
nix develop
just dev-demo
just dev-demo
を実行すると、数分後にnew state event
ログを確認できるようになります。
submit
エンドポイントを介して、このトランザクションをロールアップに送信します。アリスが検閲を懸念している場合は、トランザクションをシーケンサーに直接送信できます。Light Client
コントラクトに送信し、新しい状態に関して合意が得られたことを検証します。ロールアップ状態
ロールアップ例の状態は次のもので構成されます。
執行者
エグゼキューターは、L1 ライト クライアント コントラクトにポストされた新しい状態をサブスクライブし、ロールアップ ステートにトランザクションを適用し、ロールアップ コントラクトにモック プルーフを送信するサービスです。ロールアップでは、多くの場合、実行者と証明者の役割が 2 つの異なるサービスに分離されますが、この例では、簡素化のためにそれらを組み合わせています。
ロールアップAPI
ロールアップ API は、 submit
ポイントとquery
ポイントを含む REST API です。
ロールアップ契約
ロールアップ コントラクトには、最新のロールアップ状態のコミットメントが保存されます。コントラクトは、有効な状態遷移証明を執行者から受け取ると、状態コミットメントを更新します。
この例では、以下で説明するようにいくつかの Espresso コンポーネントを使用しました。詳細についてはドキュメントを参照してください
ライト クライアントは、ロールアップ状態の整合性を検証するスマート コントラクトです。契約コードはここで確認できます
エスプレッソ シーケンサー Docker イメージを使用してエスプレッソ ネットワークを実行しました。ネットワークはホットショットを使用して、ロールアップ状態に関する合意を形成します。アーキテクチャはここで見つけることができます
Espresso Network は、HotShot を使用してロールアップ状態に関する合意を形成します。