zkSync 2.0: こんにちはイーサリアム
導入
導入
最初のレベルのタイトル
主な成果
暗号化に関しては、zkEVM の命令セットは完全であり、回路内と実行環境の両方の実装が完了しています。
コンパイラ側では、Solidity と Zinc で書かれたスマート コントラクトを zkEVM バイトコードにコンパイルできるようになりました。
コアインフラストラクチャに関しては、完全なノード統合が完了し、コンパイルされたスマートコントラクトを正常に展開して実行できます。
zkEVM とコア 2.0 インフラストラクチャを公開する準備ができていますが、すべてのエッジ ケースを適切にカバーするにはコンパイラーにさらなる作業が必要です。より包括的な開発者エクスペリエンスを提供するために、コンパイラーが 100% 信頼できるようになり次第、zkEVM、コンパイラー、およびコア SDK へのアクセスを開放することにしました。
zkSync 2.0 対イーサリアム
最初のレベルのタイトル
Solidityスマートコントラクト
イーサリアムのほとんどのオペコードがサポートされています。ただし、いくつかの例外があります。
ADDMOD、SMOD、MULMOD、EXP、および CREATE2 オペコードはこのリリースではサポートされていませんが、将来的にはサポートされる予定です。
現在、KECCAK256 オペコードはサポートされていませんが、そのオペコードへのすべての呼び出しは、別の衝突耐性のあるハッシュ関数への呼び出しに自動的に置き換えられます。 KECCAK256 はプリコンパイルとして後で導入されます。
Ethereum が SELFDESTRUCT オペコードを削除する予定であるため、私たちは SELFDESTRUCT オペコードを含めないことにしました。
料金
料金
最初のレベルのタイトル
Web3 API
次のリリースには、Ethereum ドキュメントで定義されている Web3 標準と互換性のある Web3 API の実装が含まれる予定です。イベントはすぐに機能し、すべてのサービスを簡単に統合できます。
zkSync には、コミットされたブロックとファイナライズされたブロックの概念など、L1 にはない機能が含まれています。したがって、開発者がデータをより正確に制御できるようにする別の方法が存在するでしょう。 Web3 クライアント コードはイーサリアムと同じデータを受け取りますが、「zksync_」名前空間を使用して特別な情報を要求できます。
最初のレベルのタイトル
契約に署名する
zkSync 2.0 のトランザクションは、(優先キュー メカニズムに加えて) 2 つの方法で承認できます。
ユーザーは、EIP712 メッセージに署名することで、通常のイーサリアム ウォレット (メタマスクや WalletConnect ウォレットなど) でトランザクションに署名できます。
最初のレベルのタイトル
ストレージ効率の向上
プリコンパイル済み
プリコンパイル済み
最初のレベルのタイトル
さらなる制限
zkSync 2.0 の最初の反復では、適切な会計メカニズムが実装されるまで、トランザクションあたり 32 のスマート コントラクト呼び出しの追加制限が課される場合があります。
実行追跡には厳しい制限が設けられますが、これはイーサリアムのブロック サイズの現在の制限に匹敵し、ほとんどのプロトコルには影響しません。
さらに制限がある可能性がありますが、最終リリースでは制限を最小限に抑えることが私たちの目標です。
zkSync 2.0 アーキテクチャの詳細については、こちらをご覧ください。
ブロックチェーンのトリレンマについて聞いたことがあるかもしれませんが、イーサリアムのスケーリングに関しては、4 番目の要素、つまりプログラマビリティがあります。現在のすべてのスケーリング ソリューションは、スケーラビリティのためにセキュリティ、分散化、およびプログラマビリティをある程度犠牲にする範囲内で存在します。 zkSync 2.0 の設計は、次の 2 つの技術的進歩を組み合わせて、4 つの機能すべてを最大化します。
zkEVM: EVM 互換の zkRollup を駆動するエンジンで、L1 のセキュリティと信頼性を実現するスマート コントラクトに裏付けられた唯一のソリューションです。
画像の説明
(写真はzkSyncより)
zkEVM と zkPorter は相互運用可能で構成可能なため、zkSync 2.0 は他のすべてのスケーリング ソリューションよりも大幅に優れたパフォーマンスを発揮します。
最初のレベルのタイトル
状態ツリー
zkSync 2.0 ステート ツリーは、イーサリアムの 160 ビット アドレス空間全体をカバーします。各アカウントは、状態の zkRollup 部分または zkPorter 部分のいずれかに存在します。 zkRollup アカウントと zkPorter アカウントは、データの可用性の保証という 1 つのコンポーネントを除いて同一です。 zkRollup トランザクション データは calldata を通じてイーサリアムに公開され、zkPorter トランザクション データは zkSync Guardian ネットワークに公開され、zkSync トークン所有者は資本証明に参加します。
データをどこに公開するかは、コストとセキュリティのトレードオフになります。 zkPorter トランザクションは集合トランザクションよりもはるかに安価ですが、資金が凍結される可能性があります。ただし、zkRollup アカウントと zkPorter アカウントの有効性は両方ともゼロ知識証明とイーサリアムによって保証されています。言い換えれば、zkPorter 内の資金は凍結されるだけであり、盗まれることはありません。
暗号化
暗号化
当社の VM (最も一般的には zkEVM と呼ばれます) は、EVM の 1:1 コピーではありませんが、Solidity で作成されたコントラクトの 99% を実行し、リカバリ時や例外時などに同じ動作を維持できるように設計されています。一方、zkEVM は、回路内でゼロ知識証明を効率的に生成するように作成されています。
これは、証明システムに大きな変更を加えることなく行われ、カスタム ゲートとルックアップ テーブル (一般に UltraPLONK として知られる) およびイーサリアムの BN-254 カーブを備えた PLONK を引き続き使用しました。この証明システムは、2020 年 6 月以降、zkSync 1.0 および同じ証明システムを使用する他のプロジェクトで実戦テストされているため、これは有利です。
数か月にわたる懸命な作業の末、zkEVM 命令セットが完成し、回路および実行環境に実装されたことをもう一度発表できることを嬉しく思います。
ここには重要な違いがあります。回路内の実装と実行環境は分離されており、異なる目的を果たします。回路の仕事は実行トレースの証拠を生成し、証人を提供することですが、これは非常に時間がかかります。一方、実行環境は Rust での zkEVM の直接実装であり、効率的かつ高速です。回路に依存してプルーフを生成して実行すると、トランザクションが完了するまでに何時間もかかることになります。プルーフの生成と単純な実行を分離することで、zkSync でのトランザクションの即時決済が可能になります。
最初のレベルのタイトル
画像の説明
(写真はzkSyncより)
私たちは、zkEVM の 2 つのコンパイラ フロント エンド、Yul と Zinc に同時に取り組んでいます。 Yul は、さまざまなバックエンドのバイトコードにコンパイルされる中間 Solidity 表現です。 Zinc は、スマート コントラクトおよび汎用ゼロ知識証明回路用の Rust ベースの言語です。
コンパイラは LLVM フレームワークを使用して構築されているため、フロントエンドの Yul → LLVM IR とバックエンドの LLVM IR → zkEVM バイトコードを持つものとみなすことができます。 LLVM の採用により、いくつかの重要な利点がもたらされます。
LLVM 最適化フレームワークは比類のないもので、LLVM IR から最も効率的な zkEVM バイトコードを生成します。
Solidity または Zinc の新しいバージョンでは、コンパイラ フロントエンドがすべての変更を処理しますが、LLVM によりコンパイラ バックエンドを変更する手間が省けます。
将来的には、開発者がネイティブの Rust または Javascript でスマート コントラクトを作成したい場合は、その言語用のコンパイラ フロントエンドを構築するだけで済み、スマート コントラクトは zkSync ですぐに機能するようになります。
コンパイラのセキュリティは私たちにとって最も重要であり、いくつかのテストスイートに合格しています。
Zinc および Yul コンパイラーでの字句、構文、および意味のテスト。
ソースコードの解析からコントラクトの展開、zkSync でのトランザクションの実行まで、スマート コントラクトのライフサイクル全体にわたって独自の Zinc と Solidity の統合テストを実施します。
統合テスト ツール用に Solidity リポジトリから統合された広範なテスト スイート。
各スイートにはすでに数千のテストが含まれており、この数を少なくとも 1 桁増やす予定です。
私たちの 2 つのコンパイラーは、両方の言語で単純なスマート コントラクトを正常にデプロイして実行しました。ただし、さらに最適化を行う必要があり、一部の複雑な LLVM IR ステートメントを zkEVM バイトコードに変換する必要があります。したがって、コンパイラがより堅牢な状態になるまで、コンパイラをリリースしないことにしました。
最初のレベルのタイトル
コアインフラストラクチャ
zkSync 2.0 の中核は、いくつかの主要なアクターで構成されています。
フルノード
仮想マシンの zkEVM バイトコードを介したプリサーキット エグゼキュータ環境
状態はトランザクションが送信されてから数秒以内に利用可能になります。
ブロックの肥大化につながる可能性のある、明らかに間違ったトランザクション(資金が不十分なトランザクションなど)を除外します。
トランザクションを実行し、メモリプールにブロックを生成します。
認証者
ブロックを受け取ってゼロ知識証明を生成する証人、
並列証明生成のための証明者インターフェース、
必要に応じて証明者マシンを作成および終了するカスタム証明者オートスケーラー。
インタラクター
イーサリアム L1 を表示および対話するためのツール、
トランザクション手数料は、トークン価格、ZKP 生成コスト、L1 ガス価格に基づいて計算されます。
妄想モニター
Prometheus、elastic、sentry、uptime、いくつかの独立したイベント通知システム、およびカスタム ヘルス チェック サービス。このコア インフラストラクチャは完全に機能しており、zkEVM エグゼキュータがすでに統合されています。


