Topics テクノロジー

イーサリアム仮想マシン(EVM)とは? 初心者向けガイド

上級者向け
テクノロジー
2022年7月17日

イーサリアム仮想マシン(EVM)は、イーサリアムの中心と呼ばれることがよくあります。心臓が血液を送り、酸素と栄養素を全身に分配するのと同じように、EVMは開発者にSolidityプログラミング言語でスマートコントラクトとDAppを作成する機能を提供します。現在作成されているDAppの大半は、ビットコインやその他の分散型台帳と区別されています。この記事では、イーサリアムの仮想マシンについて、その機能、DApp開発における役割、Web 3.0の発展について解説します。

EVMとは?

イーサリアム仮想マシンとは、開発者が分散型アプリケーション(DApp)の作成や、イーサリアムシステム上でのスマートコントラクトの実行と展開に使用するソフトウェアプラットフォームです

DAppsに興味のあるプログラマーであろうと、進化し続けるEVM暗号資産の世界についてもっと知りたい投資家であろうと、イーサリアム仮想machines.To

イーサリアムの創設者であるVitalik Buterin氏によると、BitTorrentは最初のDAppでした。Bram Cohenは2001年にファイル共有プロトコルを発明し、それを破壊するためのいくつかの努力にもかかわらず、BitTorrentは非常に生きています。

BitTorrentを本当に停止するには、世界中のすべての家庭のすべてのコンピューターを停止する必要があります。物理的な制約に縛られない仮想マシンです。イーサリアム仮想マシンについても同じことが言えます。EVMは、超強力なハードウェアが不要で、初心者プログラマーにとって理想的なプラットフォームです。ただし、イーサリアムの仮想マシン全般とEVM互換コードについて理解を深めるには、ハッシュ機能や作業証明などのバイト、スタック、ブロックチェーンの概念に関する知識が役立ちます。

イーサリアム仮想マシンの目的は、イーサリアムブロックチェーンの各ブロックの状態を決定することです。EVMは、分散型台帳を使用してトランザクションのデータベースを維持するという点で他のブロックチェーンベースのネットワークと似ていますが、スマートコントラクト機能のために別の機能レイヤーを追加します。多くは、この第2レイヤーを「分散型ステートマシン」と呼んでいます。

EVMとは?

イーサリアムの仮想マシンは、イーサリアムのアカウントと残高をすべて保有する大規模なデータベースです。同時に、ブロックチェーン台帳に追加された新しいブロックごとに、マシンコードを実行し、変更できるマシン状態でもあります。新しいブロックごとにEVMがどのように変化するかを決定する特定のルールは、EVM自体によって定義されます。

イーサリアム仮想マシンは、分散型コンピュータのように機能する処理エンジンとソフトウェアプラットフォームです。DeFiやEVMの仮想通貨アプリからOpenSeaのようなゲームやマーケットプレイスまで、開発者はイーサリアム仮想マシンを使用して、イーサリアムとそのEVM互換プログラミング言語であるSolidityに基づいたDAppを作成します。

最も重要なのは、イーサリアム仮想マシンは、スマートコントラクトの実行と展開を担当するイーサリアムネットワークの一部です。スマートコントラクトやイーサリアムブロックチェーンに基づく数百万のDAppが生き、呼吸する場所です。

イーサリアムのブロックチェーンは、異なる個々のノードのP2P構造であると考えてください。1つのノードが次のノードに接続され、各ノードがエコシステム全体のセキュリティと安定性に責任を負います。イーサリアムブロックチェーン全体でコンセンサスを維持するために、各ノードはEVMを使用します。

EVMとそのCPUとの類似性

EVMの概念をさらに明確にするため、コンピュータープログラムのしくみについて考え、基本に立ち返るのに役立ちます。すべてのソフトウェアは、JavaやC++などのプログラミング言語で書かれています。ただし、CPUはJavaやC++を読み取ることができないため、コードはコンパイルされ、バイトコードに変換されます。

イーサリアムはCPUではなく、100個のCPUを同時に稼働させる分散型グローバルネットワークです。ただし、EVMは、Go Ethereumまたは「Geth」プログラム内で実行される仮想CPUまたは仮想「マシン」として機能します。

他のソフトウェアプログラムと同様に、開発者はDAppを作成し、プログラミング言語でスマートコントラクトを作成します。JavaやC++の代わりに、イーサリアムの言語はSolidityと呼ばれます。Solidityコードはバイトコードにコンパイルされ、ネットワーク内でGethを実行しているすべてのコンピュータ(ノード)に配布されます。

スマートコントラクトがデプロイされると、すべてのノードがコピーを受け取り、そのバイトコードを実行し、デプロイを依頼したコードを提供し、状態が変化します。つまり、ブロックチェーンの現在の状態は変更されており、各ノードのコンセンサスによってのみ変更可能です。

したがって、EVMは“分散型ステートマシン”と呼ばれることがよくあります。各取引で変化するブロックチェーンの状態を追跡します。

EVMのしくみ

BitTorrentから曲、映画、ソフトウェアをダウンロードしたことがあれば、分散型ネットワークでできることがわかります。世界で最も強力な当局でさえ、ネットワークに紐づくすべてのコンピューターを停止する必要があるため、削除することはできません。

分散型ネットワークを拡張する最良の方法の1つは、仮想マシンの使用です。仮想マシンは、マシンと実行されるコードのレイヤーとして機能し、世界中のさまざまなハードウェアやオペレーティングシステムで実行できます。

EVMのような仮想マシンは、CPU、メモリ、ストレージを備えた物理マシンと同様に機能しますが、コードとして動作します。理論的には、誰でも仮想マシンを運用できるため、分散型ネットワークに必要な柔軟性とポータビリティが得られます。

イーサリアム仮想マシンは、分散型ノードネットワークを使用してスマートコントラクトを実行します。ダイナミックなサンドボックス仮想スタックで、各イーサリアムノード内に埋め込まれ、EVM互換のスマートコントラクトバイトコードを実行します。

スマートコントラクト、ノード、P2P

DeFiレンディングなどのケースでEVMとは何か、暗号資産に対して何をするかを学ぶ際には、スマートコントラクトはSolidityやその他の上位言語で書かれ、その後バイトコードに変換され、EVMにコンパイルされることに留意してください。つまり、マシンコードはホストコンピュータのファイルシステム、プロセス、ネットワークから分離されます。

同じ命令を実行するには、イーサリアムのネットワーク内の各ノードが次のノードに同意する必要があります。これにより、イーサリアム仮想マシンのチューリングが完了します。つまり、計算機能に対して論理的なステップを実行できます。

EVMが実装する各命令にはコストが割り当てられ、システムは実行コストを追跡できます。EVM暗号資産取引やその他の指示を実行するコストは、ガスと呼ばれるEVM互換ユニットで測定されます。

ビットコインなどの金融取引ではなく、実行された指示に対する手数料に基づいて経済性を実現することで、チューリングの完全性を達成できます。つまり、イーサリアム仮想マシンは、ピアツーピア、グローバルに接続されたコンピューターであり、スマートコントラクト、P2Pクラウドファンディングイベント、ファイル共有経済などを作成できます。

1990年代初頭のインターネットと異なり、未来は奪われています。

オペコード

現在、EVMが実行できるオペコードは約150種類あります。では、オペコードとは具体的に何なのでしょうか?なぜEVMを理解する上で重要なのでしょうか?

イーサリアム仮想マシンをチューリング完了と呼ぶ理由は、主に、オペコードと呼ばれるマシンレベルの命令を実行する能力があるためです

EVM対応のオペコードは、EVMがEVM暗号資産取引やスマートコントラクトに関連する特定のタスクを完了するのに役立ちます。ただし、オペコードは、算術やデータロギングからメモリ、ブロック情報の取得まで、さまざまな操作に使用されます。

とはいえ、オペコードはEVMに直接書き込まれるわけではありません。開発者はスマートコントラクトを簡単に作成し、操作できるため、EVMはSolidityプログラミング言語で書かれています。ただし、EVMが解釈するには、この母国語をopcodeに変換する必要があります。

各オペコードには1バイトが割り当てられます。つまり、最大256個のオペコードを使用できます。

スマートコントラクト

EVMとは何かを理解するには、スマートコントラクトとEVM暗号資産、DeFi、その他のブロックチェーン機能におけるその役割に関する基本的な知識が必要です。

スマートコントラクトは、EVMアプリと呼ばれることもあります。EVM互換のコードラインは、第三者を利用せずに、または中央当局の干渉を受けずに、当事者同士で取引するために使われます。

各スマートコントラクトには、オンチェーンまたはオフチェーンの特定の条件が満たされたときに実行される運用の定義済みリストがあります。これらの運用は、資金の特定のアドレスへの送金から、新しいスマートコントラクトの作成、既存のコントラクト間の通信まで多岐にわたります。第三者を必要とする代わりに、誰でもスマートコントラクトアドレスに資金を送金して、これらの操作を促すことができます。

イーサリアムはビットコインのコンセプトを取り入れ、開発者がブロックチェーン上にスマートコントラクトを構築できるようにすることで、ビットコインのコンセプトをスーパーチャージしました。次のステップは、スマートコントラクトが互いに生活し、交流できる環境をつくることです。そこでイーサリアム仮想マシンが登場します。

EVMは、イーサリアムのネットワークに接続された1台だけでなく数千台のCPUのリソースを組み合わせています。取引の検証に加え、Solidityで書かれたスマートコントラクトオペコードをバイトコードに変換するため、指示を読み、操作を実行できます。最後にガスが必要です。

ガス代バッファー

ガスはイーサリアム仮想マシンを動かす燃料です。EVM暗号資産を送金する場合も、NFTに投資する場合も、運用の実行にガスを支払う必要があります。ガスは、スマートコントラクトの実行に必要な計算手数料として機能します。

各オペコードにはガスコストが割り当てられます。オペコードが複雑であればあるほど、ガス代も高くなります。現在、各取引の開始コストは21,000ガスです。

ガス代は、取引情報が有効であり、EVMに例外やエラーがないことを確認するために、確認に責任を負うバリデーターに補償するために請求されます。

さらに重要なのは、ガス代がDDoS攻撃を防ぎ、ネットワークを安全に保護することです。複雑な契約を大規模に展開するには、長時間の高額な計算が必要となるため、攻撃者は悪意のある試みを一切行いません。攻撃は、単に実行するには高価すぎるでしょう。

EVM対応ブロックチェーンとは?

ブロックチェーン間の相互運用性は大きな問題であることが証明されています。高いガス代や遅い取引といったイーサリアムの問題が続く中、開発者は他の無許可のブロックチェーンに基づいてDAppやスマートコントラクトを作成し始め、より高速な取引と低いガス代を実現しました。残念ながら、これらのブロックチェーンの多くは大幅に制限されており、他のブロックチェーンとの相互運用性がありません。

EVM対応のブロックチェーンは、この問題を解決する簡単な方法であることが証明されています。開発者は、ゼロから始めてクロスチェーンブリッジを使用してEVMに似た環境を作り出すのではなく、イーサリアムネットワークの特定の部分をコピーし、あらゆるEVMネットワーク間で迅速かつ簡単に資産を移転できるDAppを作成することができます。

この相互運用性により、現在最も使用されているブロックチェーンの多くがこのEVM互換モデルに従います。たとえば、EVM暗号資産分野では、次のような有名企業が挙げられます。

Binanceスマートチェーン

アバランチ

ファントム

カルダノ

ポリゴン

トロン

EVMを理解したい理由にかかわらず、これらのサイドチェーンはすべてEVMと互換性があることを知っておくことが重要です。  イーサリアムブロックチェーンの利点とリーチのすべてを提供しますが、高速、大容量、取引コストの低減を実現します。

結局のところ、EVM対応のブロックチェーンについて議論する場合、最適化と可能な限り最高の分散型ユーザーエクスペリエンスの創出が不可欠です。ただし、他にもメリットがあります。

イーサリアムエコシステムの相互運用性

EVMの最大のメリットの1つは、イーサリアムエコシステム内での相互運用性です。イーサリアムは世界で最も広く使用されているブロックチェーンです。イーサリアム仮想マシンのおかげで、イーサリアムブロックチェーンに基づくDAppは互いに通信し、相互作用することができ、より高速でシームレスなユーザーエクスペリエンスを実現します。

ブロックチェーンブリッジを使用することで、ブロックチェーン間の相互運用性を実現できます。ユーザーは、1つのDAppから次のDAppへ、EVMネットワーク経由で自由に資産を送れます。

Dappの移植が簡単

イーサリアム仮想マシンは、コードを書き換えることなく、DAppを新しいチェーンに簡単に移行・拡張できます。Move-VMWasmなどの別のタイプの仮想マシンを利用するには、より多くのリソースが必要であり、DAppの移植ははるかに困難になります。

イーサリアム開発者の参入障壁が低い

また、EVMはイーサリアム開発者にとって障壁の低いエントリーとなっています。EVMの性質や、そのコードがEVMと互換性があるかどうかについて心配する必要はありません。また、開発者はワッフルやメタマスクなどの使い慣れたイーサリアムツールを使用できるため、他のプログラミング言語を学ぶ必要もありません。

EVMのユースケース

EVMとは何か、そしてEVMがどのように機能するかについて学習しました。今度は、EVM暗号資産やその他のイーサリアムベースのプロジェクトに電力を供給するために、すべてが一体となってどのように機能するかを見てみましょう。

ERC-20トークン

複数のDAppとイーサリアムプロジェクトは、ERC-20トークンで利用者にインセンティブを与えます。ERC-20トークンは、アドレス間で簡単に転送でき、ネットワーク全体で同じ価値を維持するように設計されています。

ERC-20トークンは、定義されたデータ構造に従ってスマートコントラクトによって作成されます。このデータ構造は、トークンの命名、配布、監視を担当します。

これらのトークンは、EVM暗号資産よりもはるかに多く使用されます。スマートコントラクトに保険を提供するNexus Mutualは、NXM ERC-20トークンを利用して、請求や購入補償を行うことができます。 もう1つの例はLivepeerです。EVMについて議論する際の最も人気のある例ではありませんが、この分散型ビデオストリーミングネットワークは、Livepeer ERC-20トークンを使用して、ユーザーにリソースを提供するよう奨励しています。ERC-20トークンを扱う多くのDAppのうち、2つにすぎません。

AMMとDEX

分散型取引所(DEX)は、スマートコントラクトの導入を通じてERC-20トークンの交換を可能にします。これらのスマートコントラクトにより、お客様はサードパーティの干渉を受けずにトークンの流動性プールを利用でき、自動マーケットメイカー(AMM)の称号を得られます。SushiSwapUniswap、その他いくつかの人気取引所は、実際には分散型AMMモデルのアプリケーションです。

NFTマイニング

もう1つの人気トークンは、非飢餓性ERC-721です。このトークンを使用したスマートコントラクトは、イーサリアムブロックチェーン全体で独自の価値を持つトークンである非ファウンジブルトークン(NFT)をミントするためによく使用されます。

数年前は考えられなかったが、今やコードの一部がアート市場への仮想アクセスを民主化する能力を持つようになった。Gods UnchainedAxie Infinityなどのゲームプロジェクトでも、ゲーム内のアイテムや収集可能アイテムにトークンが使用されています。

DeFiレンディング

AdaSwapは、AMMとのカルダノベースの分散型取引所です。最近、Milkomedaとのコラボレーションを発表しました。サイドチェーンにレイヤー2ソリューションを使用するミルコメダは、カルダノEVMのような非EVMブロックチェーンに互換性を提供します。このサイドチェーンでは、資産を振替え、イーサリアムでカルダノDAppsを実行したり、逆にカルダノDAppsを実行したりできます。

AdaSwapとMilkomedaは、イーサリアム仮想マシンをカルダノエコシステムに統合するために、このコラボレーションを利用しています。カルダノのリードに続いて、他にもいくつかのDeFiプラットフォームがあります。

DAO

イーサリアム仮想マシンは、分散型自律型組織、すなわちDAOによって管理されています。DAOは、中央集権的な権限を持たない共同体です。これにより、コミュニティはネットワークをコントロールできます。

DAOは完全に自律的なだけでなく、透明性も備えています。スマートコントラクトは、ルールを概説し、コードで書かれた指示に基づいて意思決定を行いますが、どの時点でも、コンセンサスを通じて投票や提案を行うことができます。コード自体も、パブリックオーディットで公開できます。

結局のところ、DAOは、プロジェクトに関して重要な決定をまとめて行う個々のメンバーによって完全に支配されます。DAOのルールは、コアコミュニティのメンバーによって設定され、スマートコントラクトを通じて実装されます。これらが目に見えるものであり、検証可能で、公開監査にオープンであるため、DAOのメンバーは、プロトコルがあらゆる段階でどのように機能するかを理解できます。

EVMの制限事項

EVMとは何かを理解しようとするときは、長所と短所の両方を考慮することが重要です。その多くの利点にもかかわらず、EVM技術には一定の制限もあります。1つ目は、不思議なことに、イーサリアム仮想マシンを使用するにはある程度の技術的経験が必要です。Solidity、Java、その他のプログラミング言語に関する知識は必須です。

第二に、EVMはガス代が高いことで有名です。EVMがどんなにスマートであっても、EVM自体の人気やそれに伴うデータの混雑を回避できず、他のチェーンに比べて取引手数料が高くなります。

最後に、イーサリアム仮想マシンは完全に分散化されているわけではありません。実際、イーサリアムノードの約25%がAmazon Web Servicesで稼働しています。AWSが大規模な機能停止を経験したり、サービスを停止した場合、EVMとDAppは著しく影響を受けます。

EVMの未来

イーサリアムのブロックチェーンとEVMに関しては、まだまだ始まったばかりです。近い将来、イーサリアム仮想マシンの速度、複雑性、能力は、1990年代のPCが現在使用されている処理能力の原動力に進化したのとまったく同じように、増加します。

とはいえ、EVMは完璧ではありません。ネットワークのスループットと取引速度に関する課題は、システムにとって引き続き問題となっています。現在、これらの問題はイーサリアム開発コミュニティの焦点であり、それらを解決することはイーサリアムの継続的な利用と成功のロードマップです。

イーサリアムが相互にやり取りし、取引する方法に革命をもたらすという約束を果たすとすれば、EVMの改善の結果となります。

おわりに

この記事では、イーサリアムの仮想マシンを横断し、スマートコントラクトの実行方法を探り、EVMがバイトコードをどのように実行するかを見てきました。また、EVMの会計メカニズムであるgGasについても触れ、gGasが取引を促進し、イーサリアムをDDoS攻撃から守る方法についても触れました。最終的に、EVMはスマートコントラクトの展開と実行の心臓であり、魂です。イーサリアム仮想マシンについて理解を深めることは、DAppsを開発し、将来の分散型世界に進出したい人にとって不可欠です。