
2024年、ソラナの異常に出現したTVLは、年初の10億米ドルから今日の50億米ドル近くに急上昇し、4番目に大きい公共チェーンになりました。
Ethereumと比較して、Solanaはより速い速度と低コストでユーザーにより良い体験をもたらしました。POHベースのコンセンサスメカニズムと非同期トランザクション実行モデルにより、開発者は高度なスループットと低下のブロックチェーンパフォーマンスを提供し、さまざまな分散型アプリケーションの優先プラットフォームになります。
>
BlockSec特別計画「ソラナに遊ぶ」一連の記事は、ソラナの基本概念をカバーし、ソラナの取引の実用的なガイドラインを見て分析し、ソラナのスマートコントラクトチュートリアルを執筆しています。
このシリーズの最初のフェーズとして、この記事では、操作メカニズム、アカウントモデル、トランザクションを含むSolanaネットワークの重要な概念を紹介し、すべての人のための正確で効率的なSolana契約の基礎を書きます。
EBPF:Solana Transactionの実行基礎
スマートコントラクトを書いて実行するには、ブロックチェーンには多くの場合、プログラミング言語とチューリングのコンピューティング環境が必要です。
Ethereumに精通している友人は、Ethereumのスマートコントラクトが通常、高いレベルの言語の堅実さを使用して書くことを知っておく必要がありますが、SolidityによってコンパイルされたバイトコードはEthereum Virtual Machineと呼ばれる環境で実行されています。
Solanaは、新しい仮想環境と言語を開発することを選択しませんでしたが、既存の優れたテクノロジーを最大限に活用しました。EBPF(拡張バークレーパケットフィルター)Linuxカーネル関数の拡張に元々使用されていた仮想マシンは、Solanaによって基礎となる実行環境として選択されました。
それで、EVMと比較したEBPFの利点は何ですか?
説明実行のみをサポートするEVMと比較して、EBPFはByteCodeをReal -Timeコンパイル(JIT)モードでプロセッサのマシン命令に直接変換し、それによりプログラムをより効率的に実行できます。
EBPFには、一連の効率的な命令セットと成熟インフラストラクチャがあります。開発者は、スマートコントラクトを書くためにRust言語を使用するだけです。LLVMコンパイルフレームワークは、EBPFのバックエンドを提供し、これらのRust言語によって記述されたプログラムをEBPF仮想マシンで実行できるバイトコードに直接コンパイルするために使用します。
Solanaのアカウントモデル
1。Solanaアカウント構造
Solanaのデータは、アカウントの形で保存されます。以下の図に示すように、Solanaのすべてのデータをデータベースにとって大きな重要な値と見なすことができます。データベースの鍵は、「ウォレット」アカウントのアカウントのアドレスです(つまり、
アカウントを直接制御するためのパブリックキーを介したSolanaユーザーの場合、このアドレスは、ED25519署名システムを使用して生成される公開キーです。
>
Solanaは、AccountInfoと呼ばれる構造を使用してアカウントを記述します。これは、下の図に示すように構成されています。
>
Solanaの各アカウントには4つのフィールドが含まれています。ここでは、1つずつ説明します。
-
データフィールドアカウントに関連するデータは保存されます。アカウントがプログラム(つまり、スマートコントラクト)である場合、それは実際にはEBPF bytecodeです。それ以外の場合、データの情報形式は一般にアカウントの創設者によって定義されます。
-
実行可能フィールドアカウントがプログラムであるかどうかを特定するために使用されます。Ethereumとは異なり、Solanaのプログラムを更新できることに注意する必要があります。
-
LamportsフィールドアカウントSolana Tokenのバランスを記録します。Lamportsは、実際にはSol Tokenの最小単位です(1 Sol = 10億ランパート)。
-
所有者フィールド現在のアカウントの所有者に指示しました。Solanaでは、アカウントには「所有者」があります。たとえば、すべての「ウォレット」アカウントの所有者はシステムプログラムであり、Solanaネットワーク上の特別なアカウントであり、アカウントの作成やその他の機能を担当しています。アカウントの所有者は、アカウントデータを変更してLamportsバランスを控除できる唯一の人物です(ただし、誰でもランダートを増やすことができます。つまり、アカウントへの転送関数を実行します)。
2。Sopy-of -Mineant Solanaアカウント
ソラナには呼ばれるセットがありますネイティブプログラム所定のランニングプログラムは、固定アドレスに展開されます。Solanaネットワークのアップグレードにより、これらの事前定義されたプログラムも更新される場合があります。これらのプログラムは、Solanaネットワークの下で特定の機能を提供するAPIおよびライブラリ関数として理解できます。
ネイティブプログラムでは、開発者はしばしば対話する必要があります。システムプログラムエッセンスシステムプログラムは、開発者にいくつかの指示を提供し、各命令を独立した方法として理解できます。たとえば、開発者はCreateAccount命令を使用して新しいアカウントを作成するか、転送命令を使用してランポートを他のアカウントに転送できます。
もう1つの一般的なネイティブプログラムは、BPFローダープログラムです。これは、特定の手順の展開、更新、実行を担当する他のすべてのプログラムアカウントの所有者です。「ウォレット」アカウントが展開されたプログラムを更新する必要がある場合、実際にはBPFローダープログラムを委託することで完了します。
ネイティブプログラムに加えて、ソラナもセットを提供しますsysvarアカウント。現在のクロック、最も近いブロックハッシュなど、現在のSolanaネットワークステータスに関連する情報とグローバル変数を提供します。
3。アカウントレンタル
Solanaチェーンでは、各アカウントが最小限のクォータとして一定数のランダートを維持する必要があります。家賃エッセンス実生活の家賃の概念とは異なり、ソラナの家賃は回収できます。チェーン上のアカウントのデータが利用可能になることを確認するために、アカウントは対応する量のランダートを保持する必要があります。家賃の量は、チェーン上のアカウントストレージスペースのサイズに関連しています。
アカウントの残高がゼロに直接差し引かれない限り、アカウントの残高を家賃を下回る額未満に控除しようとするトランザクションは失敗します。この操作は、アカウントの家賃が回収されたことを示しています。トランザクションの実行の終了時に、ソラナは対応するアカウントのストレージスペースをクリアするために回収されます。
–それ以上は何ですか?ブラウザで「solanaアカウント」を表示します
すべての人が関連する概念をよりよく理解するために、Solanaが提供する「Hello World」プロジェクトを使用して、SolanaのブロックチェーンブラウザーSolscanを使用して表示できます。次のアカウントそれ以上は何ですか?関連情報。
cjwhxb4qewbv9egyuktn881bndmdklbzh1fmdwqllhoe
>
上の図に示すように、最初にアカウントがSolanaブラウザによって「プログラム」としてマークされていることがわかります。アカウントを作成すると、一部のランダートは、アカウントのレンタルとして送信者の残高から控除されます。
第二に、プログラムを作成するため、実行可能なフィールドはイエスです。ここには難しいことがあるかもしれません。つまり、読者はデータフィールドがEBPFプログラムではなくアドレスを保存していることに気付くかもしれません。Solanaは更新プログラムを許可しており、実際には「プロキシ」モードを介して実装されていると前に述べました。Solanaはプログラムアカウントの直接変更を許可していないため、EBPFプログラムを保存するデータアカウントを作成し、プログラムアカウントのデータフィールドはデータアカウントのアドレスのみを保存します。プログラムを更新する必要があるときはいつでも、データアカウントのデータフィールドを変更するだけです。SolScanを使用して、実行可能なデータフィールドを確認します。
>
前の写真に戻ると、詳細情報の所有者フィールドはBPFローダーであることがわかります。これは、前のセクションの説明と一致しています。
概要には「アップグレード権限」と呼ばれるフィールドもあります。
前述のように、「ウォレット」アカウントが更新され、BPFローダーを委託することにより、BPFローダーが必要です。プログラムアカウントの所有者フィールドはすでにBPFローダーであるため、情報を保存する余地はないため、Solanaはこの情報をデータアカウントのデータアカウントに保存することを選択します。以下の図は、プログラムアカウントとデータアカウントのデータフィールドがウォレットアドレスとEBPFコードの2つの部分で構成されていることを確認できます。
>
Solanaの取引と指示
Solanaでは、ユーザーはトランザクションを発行してプログラムを実行します。その特別なことはそれですSolanaはこれらのトランザクションを並行して実行できますこれは、落雷を提供できる重要な理由でもあります。次に、Solanaの取引がどのように設計されているかを見てみましょう。
Slanaトランザクションは、署名とメッセージの件名で構成されています。トランザクションには複数の署名を含めることができます。トランザクションの本体は、下の図に示すように、4つの部分で構成されています。
>
ニュースヘッド情報(ヘッダー)とアカウントアドレス配列(アカウントアドレスのコンパクト配列)2つのフィールドは、トランザクションのトランザクションに関連するすべてのアカウントとアカウントの特性を指定します。アカウントが署名を提供するかどうか、および実行中に記述されるかどうか。この情報を使用して、Solanaは、対応するアカウントによって提供される署名を検証し、同じアカウントコレクションに並行して触れないトランザクションを実行できます。
最も近いブロック(最近のブロックハッシュ)は、トランザクションのタイムスタンプです。Solanaネットワークは、トランザクションが最後の150ブロックから来ることを保証します。そうしないと、トランザクションは期限切れになり、実行されないと見なされます。
命令アレイ(コンパクトなインストラクター)は、トランザクションの最も重要な部分であり、1つ以上の指示が含まれています。指示は、実際にはプログラムによって提供されるルーチンと呼ばれます。命令は、下の図に示すように、3つのフィールドで構成されています。
>
プログラムIDインデックスの最初のフィールドは、命令の受信者、つまり命令に関するチェーンプログラムを処理する必要があります。32バイトのアドレスを直接保存するのではなく、アドレスをアカウントアドレス配列にメッセージの件名に配置します。このフィールドは、バイトの入札を使用して、配列内の位置がスペースの再利用を実現することを示します。
最初のフィールドと同様に、2番目のフィールドはアカウントアドレスインデックスのコンパクトな配列であり、アカウントアドレスで構成されており、命令に関与するすべてのアカウントが指定されていることを示します。
最後のフィールドは、命令を処理するためにプログラムが必要とする追加情報であり、関数のパラメーターとして理解できます。
Solanaは、トランザクションのすべての指示を順番に処理し、トランザクションの実行がAtomであることを確認することに注意する必要があります。これは、トランザクションの指示が失敗するか、すべて正常に実行されることを意味し、いくつかの指示が正常に実行され、部分的な障害がある場合があります。
–それ以上は何ですか?ブラウザで「Solanaトランザクション」を表示します
別のソラナブラウザを使用して表示します以前にプログラムアカウントのトランザクションを作成しますか?エッセンス概要では、Solanaトランザクションの署名、最近のブロックハッシュ、その他の情報を見ることができます。
3UK85LPSNWB5D6CGUNTOMYJX3TSAEGB4PJUOMYMYNVQNPP5PRG1KJEEEK3YEMZGMOJ5ROWGON8HZWL9D
>
アカウント入力では、現在のトランザクションに関与するすべてのアカウントと関連するアカウントの特性がトランザクションにリストされています。送信者、プログラムアカウント、その他のアドレスに加えて、2つのネイティブプログラムとSYSVARアカウントも含まれていることがわかります。
>
トランザクションは単純なプログラム作成トランザクションであるため、最初の命令の受信者のみが含まれていますシステムプログラム、プログラムアカウントの作成を担当しますBPFローダー実際の展開されたEBPFコードをデータアカウントに記述し、そのアドレスのアドレスをプログラムアカウントのデータフィールドに書き込む責任があります。
>
要約します
SolanaのスマートコントラクトはRust言語で開発され、EBPF仮想マシンで実行されます。これはアカウントモデルに従い、チェーン上のアカウントは、データの可用性を確保するために家賃を維持する必要があります。トランザクションは1つ以上の命令で構成されており、これにより依存するすべてのアカウントを明確に定義しているため、トランザクションは並行して処理され、スループットが増加し、応答遅延が減少します。これらの特性は、ソラナの急速な発展を共同で促進し、それを人気のあるブロックチェーンプラットフォームの1つにします。