概要
- 仮想マシンは通常、実際のコンピュータを表現したもので、実際のハードウェア、システムコール、その他のカーネル機能をソフトウェアで抽象化したものです。
- イーサリアムバーチャルマシン(EVM)は、スマートコントラクトの展開と実行を管理するイーサリアムネットワークのコンポーネントです。
- イーサリアムバーチャルマシンの命令セットはチューリング完全であり、ネットワーク上に展開されたコントラクトは、通常のコンピュータプログラムが実行できるあらゆるタスクを実行することができます。
- イーサリアム 2.0では、EVMをeWASMに置き換え、WebAssemblyでコンパイルされた任意のコードをネットワークに展開できるようになり、システムがより速く、より効率的になります。
7年前のデビュー以来、イーサリアムが分散型ネットワークに与えた影響は、ビットコインに次ぐものです。サトシ・ナカモトが描いた分散型経済のビジョンは、ビットコインから始まりました。しかし、これまで10年以上の開発期間を経たにもかかわらず、世界初の仮想通貨はまだ主流になるにはほど遠い状態です。
日常的な支払いのためのネットワークとして構想されたビットコインは、現在、ピアツーピアの電子キャッシュシステムとしてはほとんど使われていません。しかし、ブロックチェーンネットワークは、トークンの転送だけでなく、さまざまなことが可能です。
イーサリアムネットワークは、ヴィタリック・ブテリンが2013年にアイデアを提案してからわずか2年後、イニシャルコインオファリング (ICO)から1年後に稼働を開始しました。それ以来、イーサリアムは絶え間ない発展を遂げ、現在では世界で最も活発に使用されているブロックチェーンネットワークとなっています。プログラム可能なスマートコントラクトの概念を開拓したイーサリアムは、ブロックチェーンに分散型金融サービスの世界をもたらし、ICOから収量農業まで、この分野のあらゆるトレンドに影響を与えています。
スマートコントラクトとは?
スマートコントラクトは、買い手と売り手の間の契約条件が直接書き込まれた、自己実行型のコード命令です。このコードは、ブロックチェーン上の関係者間の取り決めを管理するもので、ネットワーク参加者は、中央当局、規制の枠組み、または外部の執行システムを必要とせずに、管理された取引を行うことができます。
スマートコントラクトとは、1994年にアメリカのコンピュータ科学者であるニック・サボが提唱したもので、当初は契約条件に基づいて実行されるコンピュータ化された取引プロトコルと定義されていました。サボは、ビットコインが登場する以前の1998年にビットゴールドという仮想通貨を開発しています。彼がスマートコントラクトで目指したのは、電子的に価値を移転する機能を拡張することだった。
さらにサボは、スマートコントラクトをデリバティブや債券などの合成資産に活用し、異なる金融商品をさまざまな方法で組み合わせて証券化することを提案しました。当時、ビットゴールドの生みの親である彼は、複雑な支払い期間の仕組みを標準化された契約に組み込んで、コンピュータによる分析により低い取引コストで取引できるようになる、と語っていました。
結果的に、彼は正しかったのです。実際、サボが論文で示した予測の多くは、誰もがブロックチェーンの存在を知る前に現実のものとなりました。例えば、今日、デリバティブ契約は、複雑な用語構造を用いてコンピュータネットワーク上で取引されることがほとんどです。
イーサリアムは、過去数十年にわたって概念化されたアイデアの集大成であり、現状ではビットコインとよく似ています。イーサリアム 2.0のアップグレードでは、ネットワークのコンセンサスメカニズムがプルーフ・オブ・ステークに移行しますが、現在は、どちらも電力消費の大きいプルーフ・オブ・ステークアルゴリズムを使用しています。
イーサリアムバーチャルマシン(EVM)とは?
イーサリアムバーチャルマシン(EVM)は、Microsoftの.NETフレームワークや、バイトコードでコンパイルされた言語の一部のインタープリターなど、他のバーチャルマシンと同様の計算エンジンです。EVMは、スマートコントラクトの展開と実行を管理するイーサリアムネットワークのコンポーネントです。EVMは、単純な価値の移転には関与する必要はありませんが、ネットワークの状態の更新を計算します。
平たく言えば、EVMは、独自の恒久的なデータストレージと、数百万の実行可能なオブジェクトを扱う世界中の分散型ノードを持つワールドコンピュータです。また、スタックベースのアーキテクチャを採用しており、メモリ内のすべての値をスタックに格納し、256ビットのワードサイズで動作することで、楕円曲線演算やネイティブハッシュを可能にしています。
EVMには、実行されたスマートコントラクトのバイトコードが格納された不変のプログラムコードROMや、各ロケーションがゼロに初期化された揮発性メモリなど、アドレス指定可能なデータコンポーネントが多数存在します。イーサリアムのクライアントは検証済みのブロックを調べてどのスマートコントラクトを展開するかを把握するため、実行順序はEVMの外側で整理されます。これはスケジューリング能力がないことを意味しており、イーサリアムはシステムインターフェイスの処理やハードウェアのサポートがないシングルスレッドのワールドコンピュータに似ています。
バーチャルマシンとは?
バーチャルマシンとは、通常、実際のコンピュータを表現したもので、実際のハードウェア、システムコール、その他のカーネル機能をソフトウェアで抽象化して提供します。この文脈では、イーサリアムバーチャルマシンは単なる計算エンジンであり、従来のバーチャルマシンよりもはるかに制限された環境で機能します。
EVMは、Javaバーチャルマシンの仕様と同様に、計算とストレージのみを抽象化したものです。JVMは、アプリケーションの実行環境として、プラットフォームに依存しない設計となっており、様々なハードウェア/ソフトウェアの組み合わせで互換性を実現しています。Javaバーチャルマシンと同様に、EVMでも高レベルのプログラミング言語をバイトコード命令セットにコンパイルする必要があります。
ボトルネックブロックチェーン
イーサリアムバーチャルマシンの命令セットはチューリング完全であり、ネットワーク上に展開されたコントラクトは、通常のコンピュータプログラムが実行できるあらゆるタスクを実行することができます。一般的な使用例としては、ERC-20規格に準拠したファンジブル・トークンやERC-721規格のNFTs の作成が挙げられます。これらのトークンは様々な特性を持ち、クラウドファンディングや分散型金融市場、予測市場、さらには小規模なゲームなどで利用されています。
しかし、この能力には重大な注意点があります。プログラムによっては、実行に永遠にかかる可能性があるのです。これは「停止問題」と呼ばれ、イーサリアムのネットワークが終わりのないプログラムを実行してしまう危険性があります。問題は、プログラムのコードをチェックしただけでは無限ループのレッテルを貼ることはできず、プログラムが実行されなければならないことです。スケジューラーがなければ、このようなプログラムはネットワークを完全に停止させてしまいますが、幸いにもイーサリアムにはこの問題に対処する巧妙な方法があります。
イーサリアムガス
ネットワークは「ガス」 と呼ばれる概念を用いて、計算コストに対する料金を要求します。ある最大の計算が行われた後、トランザクションを燃料とするガスが枯渇して実行が終了し、EVMはプログラムを停止します。つまり、EVMは準チューリング完全機械に過ぎず、どんなプログラムを投げても実行されますが、一定の計算能力を使った後にプログラムが終了する場合に限られます。
イーサリアムでは、この上限は定まっておらず、ネットワーク参加者はお金を払って「ブロックガスリミット」と呼ばれる上限値まで増やすことができます。時間の経過とともに、ネットワークはこの上限値を増やすことに合意できますが、コントラクトコールが任意のインスタンスで消費できる計算量には制限があります。この制限を超えたトランザクションは終了します。
EVMには、ネットワークの総処理能力に対する制限が他にもいくつかあります。EVMのオペコード仕様は開発当初から変更されておらず、さまざまなハードウェアプラットフォームに最適化されていません。さらに、EVMは大量のバラバラな演算を処理しなければならないため、動作が非常に重くなっています。
これが運用上のボトルネックとなり、ブロックチェーンの効率性に大きく影響します。EVM自体は当初の設計からあまり進化しておらず、スマートコントラクトのコードを書くためのプラットフォームのツールや言語のサポートが制限されています。
EVMは、非常に強力なサンドボックス型のスタックで、すべてのイーサリアムフルノードに組み込まれており、EVMバイトコードにコンパイルされたコードで書かれたスマートコントラクトを展開する役割を担っています。これにより、マシンコードはネットワークの他の部分やファイルシステム、ホストノード上のあらゆるプロセスから隔離され、ネットワーク上の各ノードは同一の命令セットを持つインスタンスを実行しています。
しかし、シャーディング、ロールアップ、プラズマ、キャスパーなど、ネットワークに信じられないような提案や革新的な追加がなされても、ベースレイヤーが最大の効率で機能しない限り、実現できることには常に限界があるのです。
これらの問題を解決するために、イーサリアム2.0ではEVMをeWASMに置き換え、ネットワークがWebAssemblyにコンパイルされたあらゆるコードを展開できるようにし、システムをより速く、より効率的にします。また、eWASMの実装は、非常に安全で、互換性が高く、ネットワークが標準的なハードウェア機能を利用して、スマートコントラクトをネイティブに近い速度で実行できるようになります。
eWASMは、より幅広いプログラミング言語をサポートするため、イーサリアムネットワークの相互運用性を高めることにもつながります。ポルカドット のような競合するスマートコントラクトプラットフォームは、相互運用可能な分散型アプリケーションを現実のものとしており、これは間違いなくイーサリアム 2.0へのアップグレードの重要な側面となります。
イーサリアムバーチャルマシンの重要性
イーサリアムバーチャルマシンは、イーサリアムプラットフォームの重要な部分であり、コンセンサスエンジンに不可欠なものです。イーサリアムは、誰もがコードを実行できる信頼性の高い決定性のある環境を構築することで、世界がお金と金融の両方にアプローチする方法を変えようとしています。
EVMに実装されているすべての命令について、ネットワークは関連する実行コストをガス単位で記録しており、この量を予約することで、ブロックチェーンが常に実行されるアルゴリズムに遭遇することがないようにしています。これにより、実行が失敗してもバリデーターが少なくともガス料金を受け取ることが保証され、システムが許容する以上にコントラクトが実行されることを防ぐことが可能です。
イーサリアムがトランザクションを受信すると、バリデーターはEVMの展開中に例外が発生しないことを確認し、その実行に関連する情報を検証します。EVMは、ビットコインのように金融取引ごとに参加者に課金するのではなく、ソフトウェアの命令ごとに価格が決まるサービスを実現しています。チューリング完全な環境であるイーサリアムは、技術的には世界的に分散化された汎用コンピュータであり、最終的には現在のインターネットの役割を担う可能性があります。
EVMは完璧ではありません。実際、イーサリアムの開発者であるレーン・レッティグ氏によると、EVMは「膨大な量のデザイン思考」なしに作られたもので、この考えはイーサリアム開発コミュニティの多くの著名なメンバーも共有しています。EVMは内部的には非常に一貫性がありますが、実際の実装を念頭に置いて作られたものではありません。
しかし、イーサリアム 2.0でeWASMに移行したことで、ネットワークは正しさよりも効率を優先する方向に向かっています。WebAssemblyは、実際のハードウェアの命令に近い形で設計されているため、コードのロジックを変換するのに適しています。WASMは機械の命令と1対1で対応しているため、ネットワークのパフォーマンスを大幅に向上させることができるでしょう。
ファイル共有経済やピアツーピアのクラウドファンディングから、使用していないハードディスクスペースの貸し出しや分散型のソーシャルメディアプラットフォームまで、イーサリアムの未来は明るいと言えます。インターネットは現在最も価値のあるグローバルネットワークであり、TCP/IPの開発によって私たちが愛してやまないワールドワイドなウェブが実現したように、ブロックチェーン技術とイーサリアムが未来に用意しているものも同様に素晴らしいものになるかもしれません。