ローカル Rollup ノードのセットアップ
ZK の Rollup バージョンは、Astar zKatana 環境で使用されます。
issue が開いているため、ローカルノードの実行中に問題が発生する可能性があります。
開発者が、ユーザーや開発者自身を不必要なリスクにさらすことなく、Astar zkEVMのようなブロックチェーン技術を開発するためのネットワークを徹底的にテストできることは重要です。 開発者が、スマートコントラクトをテストしたり、新しいコードを試したり、ローカルマシン上でネットワークを使って遊んだりできる環境が存在するべきです。
このため、Astar zkEVMはローカル開発環境を提供しています。 このチュートリアルは、外部のピアノードへの接続がないローカルのシングルノードzkEVMブロックチェーンを作成するのに役立ちます。 お手持ちのローカルマシン上にのみ存在するブロックチェーンということです。
現在、zkProverはARMアーキテクチャのMacでは動作しません。 Windowsユーザーの場合、WSL/WSL2の使用は非推奨です。
残念ながら、Apple M1 チップは現時点ではサポートされていません - zkProver の最適化には特定の Intel 命令が必要だからです。 つまり、AMDなどのOSに関係なく、M1以外のコンピュータでも動作しないものがあることを意味します。
このチュートリアルを通して、次のコンポーネントを実行することができます:
- zkEVM ノードデータベース
- エクスプローラーデータベース
- L1ネットワーク
- プルーバー
- zkEVM ノードコンポーネント
- Explorers
Prerequisites
現在のバージョンの環境におけるチュートリアルには、前もってコンピューターに go
、docker
、docker-compose
がインストールされている必要があります。 インストールされていない場合は、以下のリンクを確認してください:
- https://go.dev/doc/install
- https://www.docker.com/get-started
- https://docs.docker.com/compose/install/
システム要件
- zkEVM ノード: 16GB RAM (4コアCPU搭載)
- zkProver: 1TB RAM (128コアCPU搭載)
もし本格的なzkProverを実行したい場合は、少なくとも1TBのRAMが必要です。 Proverの要件を満たすことができない場合でも、zkNodeを実行することは可能です。
zkNode の設定
zkEVMノードのセットアップを開始する前に、Polygon zkEVM Githubから公式のzkNodeリポジトリをクローンする必要があります。
git clone https://github.com/0xPolygonHermez/zkevm-node.git
zkevm-node
docker イメージは、少なくとも1回、加えてコードが変更されるたびにビルドする必要があります。 zkevm-node
イメージをまだビルドしていない場合は、以下のコマンドを実行する必要があります:
make build-docker
特定のバージョンの Testnet 実装では、正しく、かつ対応しているタグから設定ファイルを使用していることを確認してください。 例: RC9イメージをビルドするには、RC9タグの設定ファイルを使用してください。
すべてのタグはここにあります: https://github.com/0xPolygonHermez/zkevm-node/tags
zkevm-node
上のコマンドは、スマートコントラクトとやり取りし、特定のコンポーネントを実行し、暗号化ファイルを作成し、デバッグ情報を出力することができます。
バイナリプログラムとやり取りするために、 docker-compose
ファイルと Makefile
を用意しており、さまざまなサービスやコンポーネントを起動、停止できます。そのため、スムーズなローカルデプロイと開発者のためのより良いコマンドラインインターフェースが保証されています。
すべてのデータは各ドッカーコンテナ内に保存されます。 つまり、コンテナを削除すると、データは失われます。
test/
ディレクトリには、開発とデバッグのためのスクリプトとファイルが含まれています。 ローカルマシンの作業ディレクトリを test/
に移動します。
cd test/
ここで、zkNode 環境を実行します:
make run
zkNodeを停止するには:
make stop
zkNode 環境全体を再起動するには:
make restart
設定パラメーター
シンクロナイザーは、主にEthereumから、またそれに加えてシーケンサーの情報発信メカニズムを介して、ネットワークアップデートを定期的にpullし、最新の状態を維持します。 設定により特別な指定がない限り、シンクロナイザーのデフォルト同期率は2秒ごとになります。
秘密鍵の保存に用られるキーストアファイルは、シーケンサーとアグリゲータを実行するために通常必要になりますが、シンクロナイザー/RPC-セットアップには必要ありません。
L1トランザクションが送信されない処理など、Keystoreファイルが必要とされるべきではないにも関わ らず、ノードを実行するために必要とされる、不便な状況があります。 信頼できるシーケンサーとアグリゲーターが活動しているため、キーストアはMango Testnetでは必要ありません。
これは、zkEVMネットワークが分散性の実装を達成したときに改めて導入が検討されます。
サンプルデータ
ネットワークのテストを開始する前に、ローカルのzkEVMノードにデータを追加しておくことが重要です。 make run
コマンドは、環境を実行するために必要なコンテナを実行しますが、それ以外は実行しません。 つまり、ローカルのL2ネットワークは基本的に空です。
ネットワーク上に、すでにデプロイされているサンプルデータが必要な場合は、次のスクリプトを使用できます。
# トランザクションとスマートコントラクトのサンプルを追加するには:
make deploy-sc
# 完全な Uniswap 環境をデプロイするには:
make deploy-uniswap
# MATIC スマートコントラクトにトークンの使用量を設定することを許可するには:
make run-approve-matic
メタマスクへの接続
MetaMaskを設定している間、ネットワークが動作している必要がありますので、ローカルでネットワークが稼働していることを確認してください。
ローカルで zkEVM 環境を使用できるように MetaMask を設定するには、以下の手順に従ってください。
- MetaMaskウォレットにログインする
- アカウントの画像をクリックし、設定をクリックしてください
- 左のメニューからネットワークをクリックしてください
- ネットワークを追加ボタンをクリックしてください
- L2ネットワークの情報を入力してください
- ネットワーク名: Astar zkEVM - Local
- 新しい RPC URL: http://localhost:8123 * ChainID: 1001
- 通貨記号: ETH
- ブロックエクスプローラのURL: http://localhost:40006. 保存をクリックします
- ネットワークを追加ボタンをクリックしてください
- L1ネットワークの情報を入力してください
- ネットワーク名: Geth - ローカル
- 新しい RPC URL: http://localhost:8545 * ChainID: 1337
- 通貨記号: ETH
- 保存をクリックします
これで、ローカルのzkEVMネットワークとやり取りし、MetaMaskウォレットからトランザクションに署名できるようになりました。