PSEトレーディングアナリスト@cryptohawk、ミラー## TL;博士1.仮想マシンは、プログラムの実行環境を提供するソフトウェアエミュレートされたコンピューターシステムです。 さまざまなハードウェア デバイスをエミュレートして、制御された互換性のある環境でプログラムを実行できるようにすることができます。2. イーサリアム仮想マシン(EVM)は、イーサリアムのスマートコントラクトを実行するスタックベースの仮想マシンです。 zkEVM は、EVM の等価性 / 互換性に関する zk プルーフ生成効率を最適化します。zkVM は EVM の同等性/互換性を破棄し、zk との親和性の優先順位を上げます。プライバシー zkVMは、zkVMにネイティブのプライバシー機能を重ね合わせます。SVM、FuelVM、MoveVMは並列実行によって究極の性能を追求するという共通点がありますが、設計内容には独自の特徴があります。ESC VMとBitVMは、それぞれETHとBTCチェーンでいくつかの革新的なコンピューティングレイヤーの実験を実施しましたが、現在の環境での実際の実装に対する需要は低いです。3. EVMの巨大なユーザーエコシステムは、EVMを放棄したブロックチェーンネットワークが短期的に競争することは困難であると判断するため、非EVMエコシステムは、トランスパイラー/コンパイラ/バイトコードインタープリター、さらにはVM互換性レイヤーを通じてEVMエコシステムユーザーを紹介し、非EVM仮想マシン機能を使用して、新しい生態学的物語、または成功への必要な道筋を構築します。## 1.1 VMとは?仮想マシン (VM) は、アプリケーションやオペレーティング システムの実行など、コンピューターとほぼ同じ機能を持つ仮想化コンピューティング リソースの構成要素です。 仮想マシンの概念は新しいものではなく、このテクノロジは多くのテクノロジ エコシステムで広く使用されています。ブロックチェーンの文脈では、仮想マシン(VM)はプログラムを実行するソフトウェアの一部であり、ブロックチェーンスマートコントラクトを実行するランタイム環境と呼ばれることがよくあります。 仮想マシンは、通常、さまざまなハードウェア デバイスをエミュレートすることで、仮想コンピューター環境を提供します。 仮想マシンが異なれば、エミュレートできるハードウェア デバイスも異なりますが、通常は CPU、メモリ、ハード ディスク、ネットワーク インターフェイスなどが含まれます。 オンチェーントランザクションが送信されると、仮想マシンはトランザクションを処理し、そのトランザクションの実行によって影響を受けるブロックチェーンの状態(ネットワーク全体の現在のグローバル状態)を更新する役割を担います。 ネットワークの状態を変更する特定のルールは、VM によって定義されます。 トランザクションを処理する際、VMはスマートコントラクトコードをノード/バリデーターハードウェアで実行できる形式に変換します。VMで最も重要なカーネルはLLVM(low-level-virtual-machine)であり、コンパイラの最も重要なカーネルと見なすことができます。 図は元のEVMの動作スキームを示しており、スマートコントラクトはLLVM IRの中間コードを介してバイトコードに変換されます。 これらのバイトコードはブロックチェーンに保存され、スマートコントラクトが呼び出されると、バイトコードは対応するオペコードに変換され、EVMとノードハードウェアによって実行されます。 ### 1.2 メインストリーム VM## 1.2.1 EVM - ブロックチェーンVMには合計1つの石があり、EVMは8つのバケット専用で、残りは2つのバケットに分割されています**代表的なプロジェクト:Optimism、Arbitrum**イーサリアム仮想マシンEVMは、業界で最も開発者とユーザーの活動が活発なブロックチェーンエコシステムとして、CPU、メモリ、メモリ、スタックなどのハードウェアデバイスをエミュレートすることで仮想コンピュータ環境を提供し、スマートコントラクトの命令を実行し、スマートコントラクトの状態とデータを保存するスタックベースの仮想マシンです。 この評価基板 (EVM) の命令セットには、算術演算、論理演算、ストレージ演算、ジャンプ演算など、さまざまなオペコード演算コードが含まれています。 EVMによってエミュレートされるメモリとメモリは、スマートコントラクトの状態とデータを格納するために使用されるデバイスです。 この評価基板 (EVM) は、メモリとメモリを 2 つの異なる領域として扱い、メモリとメモリの読み取りと書き込みを行うことで、スマート・コントラクトの状態とデータにアクセスできるようにします。EVMシミュレーションのスタックは、命令のオペランドと結果を格納するために使用されます。 EVM の命令セットに含まれる命令のほとんどはスタック・ベースであり、スタックからオペランドを読み取り、その結果をスタックにプッシュ・バックします。 この評価基板 (EVM) の設計プロセスは明らかにボトムアップ方式で、まずシミュレートされたハードウェア環境 (スタック、メモリ) を完成させ、次に対応する環境に応じて独自のアセンブリ命令セット (オペコード) とバイトコード (バイトコード) のセットを設計します。 イーサリアムコミュニティは、EVM実行の効率化のために、SolidityとVyperという2つのコンパイル済み高級言語を設計しました。 言うまでもなく、VyperはSolidityのいくつかの欠陥に対処するために設計されたVitalikのEVM高級言語ですが、コミュニティではあまり採用されておらず、徐々に曖昧になっていきました。## **1.2.2 zkEVM - すべて欲しい: EVM 環境との互換性 + グローバル状態ルート変換をサポートして zk-proof を生成****代表的なプロジェクト:太鼓、スクロール、ポリゴンzkEVM**この評価基板 (EVM) は zk プルーフ計算を念頭に置いて構築されていないため、特に特殊なオペコード、スタック・ベースのアーキテクチャ、ストレージ・オーバーヘッド、プルーフ・コストの点で、プルーフ回路には適していません。 zkEVMは、zk-proofコンピューティングと互換性のある方法でスマートコントラクトを実行する仮想マシンであり、zk-proof/validity-proofを通じてEVMの実行プロセスをより効率的かつ費用対効果の高い方法で検証できます。 OP Rollupと比較すると、実行層はEVMをコピーするだけでよく、ZKに適したEVMの構築はZK Rollupのさらなる課題です。ZKロールアップは、イーサリアム仮想マシン(EVM)と簡単に互換性がありません。 回路で汎用EVM計算を証明することは、前述のトークン転送のような単純な計算を証明するよりも困難でリソースを大量に消費します。しかし、ゼロ知識技術(opens in a new tab)の進歩により、EVM計算をゼロ知識証明に包むことへの関心が再燃しています。 これらの取り組みは、プログラム実行の正確性を効果的に検証できるゼロ知識EVM(zkEVM)の実装を作成することを目的としています。EVM と同様に、zkEVM は特定の入力に対して計算を実行した後、状態間を遷移します。 違いは、zkEVMはゼロ知識証明も作成して、プログラム実行の各ステップの正確性を検証することです。 有効性の証明は、仮想マシン (メモリ、スタック、ストレージ) の状態とコンピューティング自体 (つまり、操作が正しいオペコードを呼び出し、正しく実行したか) を含む操作の正確性を検証できます。 )。 現在のところ、RollupがZKフレンドリーでEVMの互換性(または同等のもの)を実現すること、つまり、ハッシュ、ステートツリー、トランザクションツリー、プリコンパイルなどを含むイーサリアムL1実行レイヤーを可能な限り完全に複製して、イーサリアムL1実行クライアントがロールアップブロックを処理するためにそのまま使用できるようにすることは困難です。 EVMとの互換性を放棄し、回路内の証明/検証用に既存のオペコードを再作成し、スマートコントラクトを実行できるようにします。## 1.2.3 zkVM - 両方の方法を持つことはできません:zkプルーフ効率指向、非EVMVM**代表的なプロジェクト:Starknet、Zksync、RISC ZERO**zkVMは、EVMの互換性ではなく、データ証明と状態更新を中核的な目標とする暗号と高級言語の間に共通する部分を発見し、幅広いアプリケーションに共通のフレームワークを提供しています。Starkwareは、ZK分野全体で早期にスタートし、比較的十分な技術蓄積により、一定の技術的リーダーシップを持っています。 彼は、Cairo VMとCairoの言語が構築されているZK中心の代表的な技術アーキテクチャです。 欠点は、カイロは習得に費用がかかることです。ZKsyncのフレームワークはEVMとZKの両方と互換性があり、Solidityと自社開発の回路言語Zincを統合し、コンパイラ内のIRレベルで2つを統合します。 利点は、コンパイラカーネルのLLVMが複数の言語と互換性があることです。RISC Zeroは、RISC-Vアーキテクチャを使用して、プログラマーがRust、C/C++、Goなどの汎用言語でzkVM用のプログラムを作成できるシミュレータを構築するため、アプリケーションロジックをSolidityで表現できるものに限定される必要がなく、チェーンに依存しないコードを書くことができます。## 1.2.4 プライバシー zkVM - zkフレンドリー+ネイティブプライバシーサポート、エコシステムに新たな火花を散らそう**代表的なプロジェクト:Aleo、Ola、Polygon Miden**ブロックチェーンは、すべての取引がオンチェーンで行われる公開台帳システムであり、住所や口座に関連する資産情報を含む状態変化がオープンで透明性があることを意味します。 その結果、一部のブロックチェーンチームは、スケーリングソリューションに取り組むことに加えて、次に実装すべき重要な機能はプライバシーであると考えています。Privacy zkVMは、zkフレンドリーなスケーリングのサポートに加えて、独自のプログラミング言語によってネイティブにサポートされているプライバシー機能により、上位層のアプリケーション開発者がプライバシー関連のDAppsを開くことを可能にし、MEVの問題を完全に解決し、ユーザーデータの所有権を確保するなど、新しいアプリケーションシナリオと壮大な物語をもたらします。 もちろん、プライバシーzkVMの設計は複雑なため、実装するにははるかに大規模な技術チームが必要であり、達成するには数年かかる可能性があります。## 1.2.5 SVM - 引き潮の後、まだ残り火があります:パフォーマンスを極限まで追求して設計された実行環境**代表的なプロジェクト:Eclipse Mainnet、Nitro、MakerDAO Chain(多分)**SVM(Solana Virtual Machine)は、高性能な実行環境に焦点を当てており、スマートコントラクトは主にRustで書かれています。 シングルスレッドコンピューティングのEVMやEOS WASMの実行環境とは対照的に、SVMは、Solanaトランザクションに実行時に読み書きされるすべての状態を記述させることで、重複しないトランザクションと、同じ状態のみを読み取るトランザクションの同時実行を可能にします。 また、多数のトランザクションブロックを迅速に検証/ブロードキャストするために、Solanaネットワーク上のトランザクション検証プロセスでは、CPU設計で一般的なパイプライン最適化を多用しています。 一連のステップが入力データストリームを処理し、各ステップに異なるハードウェア責任がある状況に対応するため。 典型的な例えは、洗濯機と乾燥機で、複数の洗濯物を順番に洗濯/乾燥/たたむことです。 洗濯は乾燥前に、折り畳みは乾燥前に行う必要がありますが、これら3つの操作はそれぞれ別々のユニットで行います。 さらに、SVMはレジスタ・ベースであり、EVMよりもはるかに小さな命令セットを備えているため、ZKでのSVMの実行を簡単に証明できます。 オプティミスティック ロールアップの場合、レジスタ ベースの設計により、チェックポイントを簡単に設定できます。## 1.2.6 Fuel VM - Buff Stack: UTXOフレームワークの並列仮想マシン**代表的なプロジェクト:燃料**Fuel VMは、EVM、Solana、WASM、BTC、Cosmosテクノロジーフレームワークに基づいており、EVMと比較して以下の機能を備えています。 最もユニークなのは、FuelがSVMのようにアクセスリストを設定することで、重複しないトランザクションと並行してトランザクションを実行できるだけでなく、トークンUTXOとコントラクトUTXOに分かれるUTXOモデルを採用しているため、アクセス効率と計算スループットがさらに向上していることです。 さらに、Fuel VMは、独自のドメイン固有言語であるSwayとサポートツールチェーンFortを通じて、Rustツールエコシステムで導入されたパラダイムを採用しながら、Solidityなどのスマートコントラクト言語の利点を保持した開発環境で、強力で流動的な開発者エクスペリエンスを提供します。将来的には、Fuel VMは、バイトコードサイズに関するコンパイラの最適化、より多くのバックエンド(EVMバックエンドはすでに開発中)をサポートする、抽象化の経済性の向上、Solidity/VyperからSwayへの移行、コンパイラレベルの再入解析の改善など、Sway言語のアップグレードも実装する予定だ。## 1.2.7 ESC VM - Ordinal/Smartweave の後継: イーサリアム上のコンピューティングレイヤー**代表プロジェクト:エチオンプロトコル**ESC VM(Ethions Virtual Machine)は、Ethions Protocolによって提案されたスマートコントラクトソリューションです。 Ethions Protocol自体は、イーサリアムチェーンのBTC Ordinalに似たプロトコルで、スマートコントラクトやL2に代わる低コストの代替手段を模索することに重点を置いています。Ethionsを使用すると、ユーザーはわずかなコストでスマートコントラクトの保存と実行をバイパスし、Txのコールデータを適用して、事前に合意されたプロトコルルールに従って計算できます。 簡単に言うと、成功したイーサリアムトランザクションが、指定された有効なデータ仕様を満たし、一意の & "to" アドレスが 0 でない限り、"from" アドレスが作成者であり、"to" アドレスが所有者である Ethion を合法的に作成したと見なすことができます。設計の開始時に、各Ethionは画像NFTなどのNFTの形式に傾倒しており、Base64形式で画像コンテンツをcalldataに直接書き込みます。 最近最も人気のあるethsは、BRC-20プロトコル仕様を参照して作成されたEthionです。 ESC VMによって導入されたスマートコントラクトは、「ダムコントラクト」として知られており、論理コントラクトとしてアドバタイズされていますが、EVM自体の形でオンチェーンで相互作用することはありません。 さらに、ESC VM は、展開 - 展開 - 展開 - 呼び出しダムコントラクトなどのダムコントラクトと対話するために ESC VM によって認識される特別な形式の「コンピュータコマンド」も追加します。このスキームにはいくつかの制限があり、1つは「ダムコントラクト」の機能が支払われないことです、つまり、ダムコントラクトを通じてETHを送信したい場合は、「ブリッジコントラクト」を経由する必要があり、「ブリッジコントラクト」自体には支配権の乱用と資産盗難のリスクがあります。 第二に、エコシステムには参入閾値があり、ダムコントラクトの恣意的な作成を許さず、そのコードはEthions Protocolのガバナンス提案を通じて定義する必要があります。要約すると、ESC VMは、Ethereum txのコールデータにコントラクトロジック、コントラクトコール、コントラクトコール、その他のデータコンテンツを配置することで実装されるデータストレージレイヤーとしてEthereum L1の上に構築されたコンピューティングレイヤーであり、ESC VMのグローバルステートコンセンサスはESC VMクライアントのコンセンサスであり、ArweaveのSmartWeave実装ロジックに似ていますが、SmartWeaveのデータストレージレイヤーはArweaveです。## 1.2.8 ビットVM - 興味深い研究実験:BTC上のピアツーピア実行チャネル**代表プロジェクト:ZeroSync**ZeroSyncの創設者であるRobin Linus氏は、10月9日にホワイトペーパー「BitVM:ビットコインで何でも計算する」をリリースしましたが、これは正確にはVMではなく、ビットコインチェーンに保存されたコントラクトでチューリング完全コンピューティングスペースを作成する試みですが、コントラクトのロジックはオフチェーンで実行されます。 相手が債務不履行に陥っていると思われる場合は、チェーン上でチャレンジを開始し、相手が正しく対応できない場合は、契約のすべての資金を受け取ることができます。利点は、ビットコインプロトコルを変更することなく、新しいオペコードやソフトフォークがなく、すぐに適用できるビットコインチューリングの完全性を提供できることです。その欠点も明らかで、1つは2者間の取引(一方は証明し、もう一方は検証)しかサポートしていないこと、もう1つは、契約を作成するために大量のデータを作成し、多数の取引に事前署名する必要があり、オフチェーン情報ストレージのコストが莫大であることです。ここでは、技術的なロジックについて簡単に紹介します。(1)ポイント入力のこだわりドット入力コミットメントにより、証明者は論理ゲートに0または1の入力値を設定でき、この約束には2つのハッシュ値H(A0)とH(A1)があり、証明者は前駆体ハッシュ(例えばA0)を明らかにする必要があり、入力値を0に設定し、A1が明らかになった場合は入力値を1に設定します。(2) 論理ゲートコミットメント入力値を取得したら、ビットコインのアンプとNANDオペコードを組み合わせることで、ビットコインスクリプトの任意の論理ゲートを組み合わせることができます。(3) バイナリ回路のコミットメントチューリング完全性は、数億個の論理ゲートをバイナリ回路に結合することで実現できます。 このバイナリ回路をビットコインネットワークにコミットするには、すべてのロジックゲートをTaprootアドレスを持つリーフノードに配置する必要があります。 (4) チャレンジレスポンスリンクオンチェーンで回線をコミットするだけでは不十分で、トランザクションの双方がコントラクトの計算が正しいことを確認する効率的な方法が必要です。 理想的には、契約はオフチェーンで行われ、両者が協力的で議論の余地がない場合、両者は幸せです。 ただし、トランザクションの両当事者間で紛争が発生した場合は、チャレンジレスポンスの段階に入り、計算結果を確認し、ビットコインスクリプトを介してチャネル残高の分配を強制する必要があります。 そのため、BitVMはある種のビットコインロールアップやL2とはほど遠いものであり、完全な仮想マシン実行環境、グローバルステート、複雑なスマートコントラクトを公開するための高水準言語を持たず、任意の数のユーザーがこれらのコントラクトと簡単に対話できるようにすることはできません。 素人の例で説明すると、BitVMは、誰もがモバイルデバイスを使用できる時代に、部屋よりも大きな巨大なコンピューターを構築するようなものです。## 1.2.9 MoveVM - FacebookのWeb2遺伝子の産物**代表的なプロジェクト:Aptos、Sui**Moveは、安全なスマートコントラクトを書くためのプログラミング言語で、もともとはFacebookがDiemブロックチェーンをサポートするために開発したもので、Diemブロックチェーンプロジェクトが中止された後も、AptosやSuiなどのプロジェクトがMove言語を使い続けました。 Moveブロックチェーンの最大の特徴は、データストレージがアカウントアドレスをルートとするツリーで構成されるグローバルストレージを採用しており、各アドレスにリソースデータやモジュールコードを格納できることです。 Moveには、モジュールとスクリプトの2種類のプログラムがあります。 モジュールは、構造体型と、それらの型を操作する関数を定義するライブラリです。 構造体型は Move のグローバル ストレージ モードを定義し、関数 module はストレージを更新するためのルールを定義します。 モジュール自体もグローバルストレージに保存されます。 一方、スクリプトは、従来の言語の main 関数と同様に、実行可能ファイルへのエントリ ポイントであり、グローバル ストアで公開されない一時的なコード スニペットです。 要約すると、Moveモジュールは、システム実行可能ランタイム時にロードされる動的ライブラリモジュールに似ていますが、スクリプトはメインプログラムに似ています。 ユーザーは、モジュールの呼び出しなど、グローバル ストレージにアクセスするための独自のスクリプトを記述できますが、モジュールの公開やスクリプトの実行は VM の移動を使用して操作できます。### 1.3 生態学的開発の動向EVMネットワーク効果が非常に強い今、EVMユーザーの非EVMチェーンエコシステムへの移行は、新興ブロックチェーンプロジェクトの最大の成長ポイントとなっており、Dappのコンポーザビリティが向上し、接続性の向上は今後数年間でユーザーの成長を加速させる可能性があります。## 1.3.1 ウォレットフロントエンド対応EVMユーザーにEVM以外のチェーンを紹介することは、歴史的に大きなハードルでしたが、最近のMetamask Snapのローンチは、その障壁を打ち破ります。 EVMユーザーは、ウォレットを切り替えることなくMetaMaskを引き続き使用できます。 優れたMetaMask Snap実装を構築するDriftのオープンソースの貢献のおかげで、UXはあらゆるEVMチェーンとの相互作用に相当します。 Eclipseメインネットユーザーは、MetaMaskのネイティブアプリと対話したり、SalmonなどのSolanaネイティブウォレットを使用したりできるようになります。 ## 1.3.2 VMバックエンド対応### **1.3.2.1 トランスパイラ/コンパイラ****代表的なプロジェクト:ラップ**Warpは、イーサリアムの有名なインフラストラクチャチームであるNethermindによって開発されたSolidity-Cairoトランスパイラーです。 Warp は Solidity コードを Cairo に変換できますが、変換された Cairo プログラムでは、実行効率を最大化するために、Cairo の機能 (組み込み関数の呼び出し、メモリの最適化など) を変更および追加する必要があります。**1.3.2.2 バイトコードインタプリタ/VM互換性レイヤ****代表的なプロジェクト:Kakarot、Neon EVM**Kakarotは、カイロで書かれたスマートコントラクトの形で実装されたEVMバイトコードインタプリタで、カイロのスマートコントラクトの形でEVMのスタック、メモリ、実行、その他の側面をシミュレートします。 コード翻訳と比較して、KakarotはEVMの背後でOpcodeとPre-compileの項目ごとの実装を実装し、Account RegistryやBlockhash Registryなどのコンポーネントを構築して、アカウントアドレスマッピングとブロック情報取得の追加処理を提供するため、kakarotはネイティブ互換性が高くなります。 Neon EVMは、スマートコントラクトとして動作するEVMの一種で、任意のSVMチェーンにデプロイできます。 Eclipseメインネット自体は実行環境としてSVMを使用していますが、Neon EVMを通じてEVMの完全な互換性(EVMバイトコードサポートとEthereum JSON-RPCを含む)を提供し、シングルスレッドEVMよりも高いスループットを実現します。 さらに、各Neon EVMインスタンスには独自のローカル手数料市場があり、ブロックの高さでの単一の契約アカウントの相互作用に関連する上限(ブロックコンピューティングユニットの1/4)があるため、ユーザーは特定のホットコントラクトの相互作用またはブロックがいっぱいの場合にのみ優先料金を支払う必要があります。 この意味で、アプリケーションは独自のコントラクトを展開して、アプリケーション チェーンと同様の利点を得ることで、特定のコントラクトが tx 輻輳と相互作用するときに、ネットワーク全体のユーザ エクスペリエンス、セキュリティ、または流動性の中断を軽減します。
ロールアップが強く落ちる VM にはまだ語るべきストーリーがあります
PSEトレーディングアナリスト@cryptohawk、ミラー
TL;博士
1.仮想マシンは、プログラムの実行環境を提供するソフトウェアエミュレートされたコンピューターシステムです。 さまざまなハードウェア デバイスをエミュレートして、制御された互換性のある環境でプログラムを実行できるようにすることができます。
zkVM は EVM の同等性/互換性を破棄し、zk との親和性の優先順位を上げます。
プライバシー zkVMは、zkVMにネイティブのプライバシー機能を重ね合わせます。
SVM、FuelVM、MoveVMは並列実行によって究極の性能を追求するという共通点がありますが、設計内容には独自の特徴があります。
ESC VMとBitVMは、それぞれETHとBTCチェーンでいくつかの革新的なコンピューティングレイヤーの実験を実施しましたが、現在の環境での実際の実装に対する需要は低いです。
1.1 VMとは?
仮想マシン (VM) は、アプリケーションやオペレーティング システムの実行など、コンピューターとほぼ同じ機能を持つ仮想化コンピューティング リソースの構成要素です。 仮想マシンの概念は新しいものではなく、このテクノロジは多くのテクノロジ エコシステムで広く使用されています。
ブロックチェーンの文脈では、仮想マシン(VM)はプログラムを実行するソフトウェアの一部であり、ブロックチェーンスマートコントラクトを実行するランタイム環境と呼ばれることがよくあります。 仮想マシンは、通常、さまざまなハードウェア デバイスをエミュレートすることで、仮想コンピューター環境を提供します。 仮想マシンが異なれば、エミュレートできるハードウェア デバイスも異なりますが、通常は CPU、メモリ、ハード ディスク、ネットワーク インターフェイスなどが含まれます。 オンチェーントランザクションが送信されると、仮想マシンはトランザクションを処理し、そのトランザクションの実行によって影響を受けるブロックチェーンの状態(ネットワーク全体の現在のグローバル状態)を更新する役割を担います。 ネットワークの状態を変更する特定のルールは、VM によって定義されます。 トランザクションを処理する際、VMはスマートコントラクトコードをノード/バリデーターハードウェアで実行できる形式に変換します。
VMで最も重要なカーネルはLLVM(low-level-virtual-machine)であり、コンパイラの最も重要なカーネルと見なすことができます。 図は元のEVMの動作スキームを示しており、スマートコントラクトはLLVM IRの中間コードを介してバイトコードに変換されます。 これらのバイトコードはブロックチェーンに保存され、スマートコントラクトが呼び出されると、バイトコードは対応するオペコードに変換され、EVMとノードハードウェアによって実行されます。
1.2 メインストリーム VM
1.2.1 EVM - ブロックチェーンVMには合計1つの石があり、EVMは8つのバケット専用で、残りは2つのバケットに分割されています
代表的なプロジェクト:Optimism、Arbitrum
イーサリアム仮想マシンEVMは、業界で最も開発者とユーザーの活動が活発なブロックチェーンエコシステムとして、CPU、メモリ、メモリ、スタックなどのハードウェアデバイスをエミュレートすることで仮想コンピュータ環境を提供し、スマートコントラクトの命令を実行し、スマートコントラクトの状態とデータを保存するスタックベースの仮想マシンです。 この評価基板 (EVM) の命令セットには、算術演算、論理演算、ストレージ演算、ジャンプ演算など、さまざまなオペコード演算コードが含まれています。
EVMによってエミュレートされるメモリとメモリは、スマートコントラクトの状態とデータを格納するために使用されるデバイスです。 この評価基板 (EVM) は、メモリとメモリを 2 つの異なる領域として扱い、メモリとメモリの読み取りと書き込みを行うことで、スマート・コントラクトの状態とデータにアクセスできるようにします。
EVMシミュレーションのスタックは、命令のオペランドと結果を格納するために使用されます。 EVM の命令セットに含まれる命令のほとんどはスタック・ベースであり、スタックからオペランドを読み取り、その結果をスタックにプッシュ・バックします。
この評価基板 (EVM) の設計プロセスは明らかにボトムアップ方式で、まずシミュレートされたハードウェア環境 (スタック、メモリ) を完成させ、次に対応する環境に応じて独自のアセンブリ命令セット (オペコード) とバイトコード (バイトコード) のセットを設計します。 イーサリアムコミュニティは、EVM実行の効率化のために、SolidityとVyperという2つのコンパイル済み高級言語を設計しました。 言うまでもなく、VyperはSolidityのいくつかの欠陥に対処するために設計されたVitalikのEVM高級言語ですが、コミュニティではあまり採用されておらず、徐々に曖昧になっていきました。
1.2.2 zkEVM - すべて欲しい: EVM 環境との互換性 + グローバル状態ルート変換をサポートして zk-proof を生成
代表的なプロジェクト:太鼓、スクロール、ポリゴンzkEVM
この評価基板 (EVM) は zk プルーフ計算を念頭に置いて構築されていないため、特に特殊なオペコード、スタック・ベースのアーキテクチャ、ストレージ・オーバーヘッド、プルーフ・コストの点で、プルーフ回路には適していません。 zkEVMは、zk-proofコンピューティングと互換性のある方法でスマートコントラクトを実行する仮想マシンであり、zk-proof/validity-proofを通じてEVMの実行プロセスをより効率的かつ費用対効果の高い方法で検証できます。 OP Rollupと比較すると、実行層はEVMをコピーするだけでよく、ZKに適したEVMの構築はZK Rollupのさらなる課題です。
ZKロールアップは、イーサリアム仮想マシン(EVM)と簡単に互換性がありません。 回路で汎用EVM計算を証明することは、前述のトークン転送のような単純な計算を証明するよりも困難でリソースを大量に消費します。
しかし、ゼロ知識技術(opens in a new tab)の進歩により、EVM計算をゼロ知識証明に包むことへの関心が再燃しています。 これらの取り組みは、プログラム実行の正確性を効果的に検証できるゼロ知識EVM(zkEVM)の実装を作成することを目的としています。
EVM と同様に、zkEVM は特定の入力に対して計算を実行した後、状態間を遷移します。 違いは、zkEVMはゼロ知識証明も作成して、プログラム実行の各ステップの正確性を検証することです。 有効性の証明は、仮想マシン (メモリ、スタック、ストレージ) の状態とコンピューティング自体 (つまり、操作が正しいオペコードを呼び出し、正しく実行したか) を含む操作の正確性を検証できます。 )。
現在のところ、RollupがZKフレンドリーでEVMの互換性(または同等のもの)を実現すること、つまり、ハッシュ、ステートツリー、トランザクションツリー、プリコンパイルなどを含むイーサリアムL1実行レイヤーを可能な限り完全に複製して、イーサリアムL1実行クライアントがロールアップブロックを処理するためにそのまま使用できるようにすることは困難です。 EVMとの互換性を放棄し、回路内の証明/検証用に既存のオペコードを再作成し、スマートコントラクトを実行できるようにします。
1.2.3 zkVM - 両方の方法を持つことはできません:zkプルーフ効率指向、非EVMVM
代表的なプロジェクト:Starknet、Zksync、RISC ZERO
zkVMは、EVMの互換性ではなく、データ証明と状態更新を中核的な目標とする暗号と高級言語の間に共通する部分を発見し、幅広いアプリケーションに共通のフレームワークを提供しています。
Starkwareは、ZK分野全体で早期にスタートし、比較的十分な技術蓄積により、一定の技術的リーダーシップを持っています。 彼は、Cairo VMとCairoの言語が構築されているZK中心の代表的な技術アーキテクチャです。 欠点は、カイロは習得に費用がかかることです。
ZKsyncのフレームワークはEVMとZKの両方と互換性があり、Solidityと自社開発の回路言語Zincを統合し、コンパイラ内のIRレベルで2つを統合します。 利点は、コンパイラカーネルのLLVMが複数の言語と互換性があることです。
RISC Zeroは、RISC-Vアーキテクチャを使用して、プログラマーがRust、C/C++、Goなどの汎用言語でzkVM用のプログラムを作成できるシミュレータを構築するため、アプリケーションロジックをSolidityで表現できるものに限定される必要がなく、チェーンに依存しないコードを書くことができます。
1.2.4 プライバシー zkVM - zkフレンドリー+ネイティブプライバシーサポート、エコシステムに新たな火花を散らそう
代表的なプロジェクト:Aleo、Ola、Polygon Miden
ブロックチェーンは、すべての取引がオンチェーンで行われる公開台帳システムであり、住所や口座に関連する資産情報を含む状態変化がオープンで透明性があることを意味します。 その結果、一部のブロックチェーンチームは、スケーリングソリューションに取り組むことに加えて、次に実装すべき重要な機能はプライバシーであると考えています。
Privacy zkVMは、zkフレンドリーなスケーリングのサポートに加えて、独自のプログラミング言語によってネイティブにサポートされているプライバシー機能により、上位層のアプリケーション開発者がプライバシー関連のDAppsを開くことを可能にし、MEVの問題を完全に解決し、ユーザーデータの所有権を確保するなど、新しいアプリケーションシナリオと壮大な物語をもたらします。 もちろん、プライバシーzkVMの設計は複雑なため、実装するにははるかに大規模な技術チームが必要であり、達成するには数年かかる可能性があります。
1.2.5 SVM - 引き潮の後、まだ残り火があります:パフォーマンスを極限まで追求して設計された実行環境
代表的なプロジェクト:Eclipse Mainnet、Nitro、MakerDAO Chain(多分)
SVM(Solana Virtual Machine)は、高性能な実行環境に焦点を当てており、スマートコントラクトは主にRustで書かれています。 シングルスレッドコンピューティングのEVMやEOS WASMの実行環境とは対照的に、SVMは、Solanaトランザクションに実行時に読み書きされるすべての状態を記述させることで、重複しないトランザクションと、同じ状態のみを読み取るトランザクションの同時実行を可能にします。
また、多数のトランザクションブロックを迅速に検証/ブロードキャストするために、Solanaネットワーク上のトランザクション検証プロセスでは、CPU設計で一般的なパイプライン最適化を多用しています。 一連のステップが入力データストリームを処理し、各ステップに異なるハードウェア責任がある状況に対応するため。 典型的な例えは、洗濯機と乾燥機で、複数の洗濯物を順番に洗濯/乾燥/たたむことです。 洗濯は乾燥前に、折り畳みは乾燥前に行う必要がありますが、これら3つの操作はそれぞれ別々のユニットで行います。
さらに、SVMはレジスタ・ベースであり、EVMよりもはるかに小さな命令セットを備えているため、ZKでのSVMの実行を簡単に証明できます。 オプティミスティック ロールアップの場合、レジスタ ベースの設計により、チェックポイントを簡単に設定できます。
1.2.6 Fuel VM - Buff Stack: UTXOフレームワークの並列仮想マシン
代表的なプロジェクト:燃料
Fuel VMは、EVM、Solana、WASM、BTC、Cosmosテクノロジーフレームワークに基づいており、EVMと比較して以下の機能を備えています。
最もユニークなのは、FuelがSVMのようにアクセスリストを設定することで、重複しないトランザクションと並行してトランザクションを実行できるだけでなく、トークンUTXOとコントラクトUTXOに分かれるUTXOモデルを採用しているため、アクセス効率と計算スループットがさらに向上していることです。
さらに、Fuel VMは、独自のドメイン固有言語であるSwayとサポートツールチェーンFortを通じて、Rustツールエコシステムで導入されたパラダイムを採用しながら、Solidityなどのスマートコントラクト言語の利点を保持した開発環境で、強力で流動的な開発者エクスペリエンスを提供します。
将来的には、Fuel VMは、バイトコードサイズに関するコンパイラの最適化、より多くのバックエンド(EVMバックエンドはすでに開発中)をサポートする、抽象化の経済性の向上、Solidity/VyperからSwayへの移行、コンパイラレベルの再入解析の改善など、Sway言語のアップグレードも実装する予定だ。
1.2.7 ESC VM - Ordinal/Smartweave の後継: イーサリアム上のコンピューティングレイヤー
代表プロジェクト:エチオンプロトコル
ESC VM(Ethions Virtual Machine)は、Ethions Protocolによって提案されたスマートコントラクトソリューションです。 Ethions Protocol自体は、イーサリアムチェーンのBTC Ordinalに似たプロトコルで、スマートコントラクトやL2に代わる低コストの代替手段を模索することに重点を置いています。
Ethionsを使用すると、ユーザーはわずかなコストでスマートコントラクトの保存と実行をバイパスし、Txのコールデータを適用して、事前に合意されたプロトコルルールに従って計算できます。 簡単に言うと、成功したイーサリアムトランザクションが、指定された有効なデータ仕様を満たし、一意の & "to" アドレスが 0 でない限り、"from" アドレスが作成者であり、"to" アドレスが所有者である Ethion を合法的に作成したと見なすことができます。
設計の開始時に、各Ethionは画像NFTなどのNFTの形式に傾倒しており、Base64形式で画像コンテンツをcalldataに直接書き込みます。
最近最も人気のあるethsは、BRC-20プロトコル仕様を参照して作成されたEthionです。
ESC VMによって導入されたスマートコントラクトは、「ダムコントラクト」として知られており、論理コントラクトとしてアドバタイズされていますが、EVM自体の形でオンチェーンで相互作用することはありません。 さらに、ESC VM は、展開 - 展開 - 展開 - 呼び出しダムコントラクトなどのダムコントラクトと対話するために ESC VM によって認識される特別な形式の「コンピュータコマンド」も追加します。
このスキームにはいくつかの制限があり、1つは「ダムコントラクト」の機能が支払われないことです、つまり、ダムコントラクトを通じてETHを送信したい場合は、「ブリッジコントラクト」を経由する必要があり、「ブリッジコントラクト」自体には支配権の乱用と資産盗難のリスクがあります。 第二に、エコシステムには参入閾値があり、ダムコントラクトの恣意的な作成を許さず、そのコードはEthions Protocolのガバナンス提案を通じて定義する必要があります。
要約すると、ESC VMは、Ethereum txのコールデータにコントラクトロジック、コントラクトコール、コントラクトコール、その他のデータコンテンツを配置することで実装されるデータストレージレイヤーとしてEthereum L1の上に構築されたコンピューティングレイヤーであり、ESC VMのグローバルステートコンセンサスはESC VMクライアントのコンセンサスであり、ArweaveのSmartWeave実装ロジックに似ていますが、SmartWeaveのデータストレージレイヤーはArweaveです。
1.2.8 ビットVM - 興味深い研究実験:BTC上のピアツーピア実行チャネル
代表プロジェクト:ZeroSync
ZeroSyncの創設者であるRobin Linus氏は、10月9日にホワイトペーパー「BitVM:ビットコインで何でも計算する」をリリースしましたが、これは正確にはVMではなく、ビットコインチェーンに保存されたコントラクトでチューリング完全コンピューティングスペースを作成する試みですが、コントラクトのロジックはオフチェーンで実行されます。 相手が債務不履行に陥っていると思われる場合は、チェーン上でチャレンジを開始し、相手が正しく対応できない場合は、契約のすべての資金を受け取ることができます。
利点は、ビットコインプロトコルを変更することなく、新しいオペコードやソフトフォークがなく、すぐに適用できるビットコインチューリングの完全性を提供できることです。
その欠点も明らかで、1つは2者間の取引(一方は証明し、もう一方は検証)しかサポートしていないこと、もう1つは、契約を作成するために大量のデータを作成し、多数の取引に事前署名する必要があり、オフチェーン情報ストレージのコストが莫大であることです。
ここでは、技術的なロジックについて簡単に紹介します。
(1)ポイント入力のこだわり
ドット入力コミットメントにより、証明者は論理ゲートに0または1の入力値を設定でき、この約束には2つのハッシュ値H(A0)とH(A1)があり、証明者は前駆体ハッシュ(例えばA0)を明らかにする必要があり、入力値を0に設定し、A1が明らかになった場合は入力値を1に設定します。
(2) 論理ゲートコミットメント
入力値を取得したら、ビットコインのアンプとNANDオペコードを組み合わせることで、ビットコインスクリプトの任意の論理ゲートを組み合わせることができます。
(3) バイナリ回路のコミットメント
チューリング完全性は、数億個の論理ゲートをバイナリ回路に結合することで実現できます。 このバイナリ回路をビットコインネットワークにコミットするには、すべてのロジックゲートをTaprootアドレスを持つリーフノードに配置する必要があります。
(4) チャレンジレスポンスリンク
オンチェーンで回線をコミットするだけでは不十分で、トランザクションの双方がコントラクトの計算が正しいことを確認する効率的な方法が必要です。 理想的には、契約はオフチェーンで行われ、両者が協力的で議論の余地がない場合、両者は幸せです。 ただし、トランザクションの両当事者間で紛争が発生した場合は、チャレンジレスポンスの段階に入り、計算結果を確認し、ビットコインスクリプトを介してチャネル残高の分配を強制する必要があります。
そのため、BitVMはある種のビットコインロールアップやL2とはほど遠いものであり、完全な仮想マシン実行環境、グローバルステート、複雑なスマートコントラクトを公開するための高水準言語を持たず、任意の数のユーザーがこれらのコントラクトと簡単に対話できるようにすることはできません。 素人の例で説明すると、BitVMは、誰もがモバイルデバイスを使用できる時代に、部屋よりも大きな巨大なコンピューターを構築するようなものです。
1.2.9 MoveVM - FacebookのWeb2遺伝子の産物
代表的なプロジェクト:Aptos、Sui
Moveは、安全なスマートコントラクトを書くためのプログラミング言語で、もともとはFacebookがDiemブロックチェーンをサポートするために開発したもので、Diemブロックチェーンプロジェクトが中止された後も、AptosやSuiなどのプロジェクトがMove言語を使い続けました。 Moveブロックチェーンの最大の特徴は、データストレージがアカウントアドレスをルートとするツリーで構成されるグローバルストレージを採用しており、各アドレスにリソースデータやモジュールコードを格納できることです。
Moveには、モジュールとスクリプトの2種類のプログラムがあります。 モジュールは、構造体型と、それらの型を操作する関数を定義するライブラリです。 構造体型は Move のグローバル ストレージ モードを定義し、関数 module はストレージを更新するためのルールを定義します。 モジュール自体もグローバルストレージに保存されます。 一方、スクリプトは、従来の言語の main 関数と同様に、実行可能ファイルへのエントリ ポイントであり、グローバル ストアで公開されない一時的なコード スニペットです。
要約すると、Moveモジュールは、システム実行可能ランタイム時にロードされる動的ライブラリモジュールに似ていますが、スクリプトはメインプログラムに似ています。 ユーザーは、モジュールの呼び出しなど、グローバル ストレージにアクセスするための独自のスクリプトを記述できますが、モジュールの公開やスクリプトの実行は VM の移動を使用して操作できます。
1.3 生態学的開発の動向
EVMネットワーク効果が非常に強い今、EVMユーザーの非EVMチェーンエコシステムへの移行は、新興ブロックチェーンプロジェクトの最大の成長ポイントとなっており、Dappのコンポーザビリティが向上し、接続性の向上は今後数年間でユーザーの成長を加速させる可能性があります。
1.3.1 ウォレットフロントエンド対応
EVMユーザーにEVM以外のチェーンを紹介することは、歴史的に大きなハードルでしたが、最近のMetamask Snapのローンチは、その障壁を打ち破ります。 EVMユーザーは、ウォレットを切り替えることなくMetaMaskを引き続き使用できます。 優れたMetaMask Snap実装を構築するDriftのオープンソースの貢献のおかげで、UXはあらゆるEVMチェーンとの相互作用に相当します。 Eclipseメインネットユーザーは、MetaMaskのネイティブアプリと対話したり、SalmonなどのSolanaネイティブウォレットを使用したりできるようになります。
1.3.2 VMバックエンド対応
1.3.2.1 トランスパイラ/コンパイラ
代表的なプロジェクト:ラップ
Warpは、イーサリアムの有名なインフラストラクチャチームであるNethermindによって開発されたSolidity-Cairoトランスパイラーです。 Warp は Solidity コードを Cairo に変換できますが、変換された Cairo プログラムでは、実行効率を最大化するために、Cairo の機能 (組み込み関数の呼び出し、メモリの最適化など) を変更および追加する必要があります。
1.3.2.2 バイトコードインタプリタ/VM互換性レイヤ
代表的なプロジェクト:Kakarot、Neon EVM
Kakarotは、カイロで書かれたスマートコントラクトの形で実装されたEVMバイトコードインタプリタで、カイロのスマートコントラクトの形でEVMのスタック、メモリ、実行、その他の側面をシミュレートします。 コード翻訳と比較して、KakarotはEVMの背後でOpcodeとPre-compileの項目ごとの実装を実装し、Account RegistryやBlockhash Registryなどのコンポーネントを構築して、アカウントアドレスマッピングとブロック情報取得の追加処理を提供するため、kakarotはネイティブ互換性が高くなります。
Neon EVMは、スマートコントラクトとして動作するEVMの一種で、任意のSVMチェーンにデプロイできます。 Eclipseメインネット自体は実行環境としてSVMを使用していますが、Neon EVMを通じてEVMの完全な互換性(EVMバイトコードサポートとEthereum JSON-RPCを含む)を提供し、シングルスレッドEVMよりも高いスループットを実現します。 さらに、各Neon EVMインスタンスには独自のローカル手数料市場があり、ブロックの高さでの単一の契約アカウントの相互作用に関連する上限(ブロックコンピューティングユニットの1/4)があるため、ユーザーは特定のホットコントラクトの相互作用またはブロックがいっぱいの場合にのみ優先料金を支払う必要があります。 この意味で、アプリケーションは独自のコントラクトを展開して、アプリケーション チェーンと同様の利点を得ることで、特定のコントラクトが tx 輻輳と相互作用するときに、ネットワーク全体のユーザ エクスペリエンス、セキュリティ、または流動性の中断を軽減します。