Solana Virtual Machine(SVM)は、 Solanaプログラムを処理し、その状態変更をネットワーク全体に適用する実行環境です。プログラムはSolana Bytecode Format(sBPF)にコンパイルされ、サンドボックス化されたランタイム内で実行されます。トランザクションは呼び出すプログラムと、各命令が読み書きする可能性のあるアカウントを特定し、ランタイムに状態をロードして互換性のある作業をスケジュールするために必要な情報を提供します。

SVMは実行可能なプログラムコードを可変アカウントデータから分離し、コンピュートユニットを使用してリソース消費を測定します。このモデルはSolanaのSealevel並列ランタイムを支えます。なぜなら、競合する書き込み可能アカウントを要求しないトランザクションは同時に処理できるからです。SVMは実行レイヤーであり、Solanaのコンセンサスメカニズム、バリデータクライアント、Proof of Historyクロックではありません。

Solana Virtual Machineとは何か?

Solana Virtual Machine(SVM)は、 スマートコントラクトプログラムを実行し、Solana上でトランザクション命令を処理する実行環境です。スマートコントラクトが自身の状態を保存するシステムとは異なり、Solanaはプログラムコードをデータアカウントから分離します。トランザクションは使用するプログラムとアカウントを指定し、ネットワークが独立したトランザクションを並列処理できるようにします。

SVMという用語は、他のブロックチェーンネットワークで使用されるSolana互換の実行環境を指すこともあります。これらのネットワークは、異なるコンセンサス、シーケンス、 データ可用性、または決済システムを使用しながら、同様のプログラムや開発者ツールをサポートする場合があります。したがって、SVM互換性は実行環境を説明するものであり、基盤となるネットワークのセキュリティモデルを説明するものではありません。

Solana Virtual Machineはどのように機能するのか?

Solana Virtual Machineは、各トランザクションにリストされているプログラムとアカウントを使用して、そのトランザクションを処理します。

1. 必要なアカウントをロードする: SVMは、手数料支払者、署名者、書き込み可能アカウント、およびトランザクションが必要とするプログラムを識別します。

2. 命令を実行する: 命令は関連するSolanaプログラムを通じて順番に実行され、必要に応じて他のプログラムを呼び出すこともできます。

3. 権限と制限を適用する: ランタイムは実行中にアカウントの所有権、署名者の権限、書き込みアクセス、コンピュートユニットの制限をチェックします。

4. 結果を検証する: 実行後、SVMは残高とアカウントデータがSolanaのプロトコルルールに従っていることを確認します。

5. トランザクションをコミットする: すべての命令が成功した場合、状態変更はまとめて記録されます。1つが失敗した場合、トランザクションはアプリケーションの状態を部分的に更新しません。

トランザクションがアクセスするアカウントを宣言するため、Solanaは異なるアカウントを使用するトランザクションを並列実行でき、ネットワークがより高いスループットをサポートするのに役立ちます。

SVMの主な利点とユースケースは何か?

SVMは、予測可能なプログラム実行を必要とし、明示的なアカウントアクセスから利益を得られるアプリケーション向けに設計されています。そのパフォーマンスは、ランタイム設計と、トランザクションが同じ書き込み可能状態を競合するかどうかの両方に依存します。

1. 宣言されたアカウントアクセスにより並列スケジューリングが可能になる。 トランザクションは実行前に必要なアカウントをリストし、スケジューラが共有書き込み可能状態を保護しながら、競合しないトランザクションを異なるプロセッサコアで実行できるようにします。

2. プログラムと状態は分離されたままである。 1つのステートレスプログラムは多くのデータアカウントにまたがって動作でき、再利用可能なアプリケーションロジックをサポートし、開発者がコードを複製するのではなく並行性のために状態を整理できるようにします。

3. アトミックトランザクションは複数の命令を構成できる。 トランザクションは複数のプログラムを順番に呼び出し、成功したすべての状態変更をまとめてコミットするか、1つの命令が失敗した場合にトランザクション全体を拒否することができます。

4. コンピュートユニットによりリソース使用が明示的になる。 ランタイムはプログラムの作業を測定し、トランザクションが適切な予算を要求できるようにすることで、バリデータが実行を制限し、ユーザーがネットワークの手数料メカニズムを通じて優先度を表現するのを支援します。

SVMプログラムとネットワークの例は何か?

SVM技術は、Solanaアプリケーションと、Solana互換の実行を再利用するネットワークに現れます。例は決済とインフラストラクチャが異なるため、SVMサポートだけでは同じネットワークにはなりません。

• Solanaネイティブプログラム。 System Programはアカウントを作成し、vote、stake、compute-budget、address-lookup-tableプログラムはSolanaランタイムによって直接サポートされるコア機能を提供します。

• Solanaアプリケーションプログラム。 DEX、レンディング市場、NFTプラットフォーム、ゲームは、各命令で提供されるユーザー、市場、ボールト、ミント、ポジションアカウントを操作するsBPFプログラムをデプロイします。

• Eclipse実行。 EclipseはSVMベースの実行環境を使用しながら、 Ethereum関連のインフラストラクチャを通じて決済を行い、ランタイムが異なるモジュラー ブロックチェーンスタック内にどのように位置づけられるかを示しています。

• ローカルSVMテストツール。 LiteSVMなどのツールは、すべてのテストケースがライブバリデータクラスタにトランザクションを送信する必要なしに、開発とテストのために関連するランタイム動作を再現します。

SVMの制限とリスクは何か?

SVMのパフォーマンスモデルは特定の設計上の制約を生み出します。開発者はアカウントを正確に宣言し、不必要な競合を減らし、ランタイム制限内に収める必要がありますが、ユーザーは依然として通常のスマートコントラクトとトランザクションのリスクに直面します。

1. 共有書き込み可能アカウントは並列性を制限する可能性がある。 同じ書き込み可能アカウントを必要とするトランザクションは安全に一緒に実行できないため、人気のあるグローバル状態アカウントは並列ランタイムにもかかわらずアプリケーションのボトルネックになる可能性があります。

2. プログラムにはSolana固有の開発知識が必要である。 開発者は、sBPFコンパイル、アカウント所有権、プログラム派生アドレス、クロスプログラム呼び出し、コンピュート予算、およびレント関連のアカウント要件を理解する必要があります。

3. コンピュートとアカウントの制限は複雑な呼び出しを拒否する可能性がある。 トランザクションは、コンピュート予算を超えたり、あまりに多くのリソースを参照したり、アカウントデータを不適切に拡大したり、呼び出し深度とランタイム制限に達したりすると失敗する可能性があります。

4. SVM互換性はSolanaのセキュリティと同等ではない。 別のSVMチェーンは、異なるバリデータ、ブリッジ、シーケンサー、データ可用性、またはアップグレード制御を使用する場合があり、実行バイトコードとは無関係な信頼前提を生み出します。

SVMはEVMとどう違うのか?

SVMがEVMと主に異なる点は、アカウントモデル、バイトコード、および並行性へのアプローチです。Solanaトランザクションは実行前にアカウントアクセスを宣言し、プログラムは別々の状態アカウントで動作するため、Sealevelは競合しない作業を並列でスケジュールできます。Ethereumコントラクトは通常、コードとストレージを同じアドレスに保持し、従来の EVM実行は順序付けられたトランザクションシーケンスに従います。どちらの環境も検証ノード間で決定論的な結果を必要としますが、開発者ツール、手数料測定、状態レイアウト、互換性標準は異なります。

関連概念

1. スマートコントラクトとは何か?

2. ガスとは何か?

3. バリデータとは何か?

4. ブロックチェーンとは何か?

さらに読む

1. 2025年のトップSolana Virtual Machine(SVM)プロジェクトは?

2. Eclipse(ES)とは何か?Ethereum上の最初のSVM搭載レイヤー2

3. Solscanとは何か、Solanaブロックチェーンエクスプローラーをどのように使用するか?

4. Solana対Ethereum:比較分析