![見出し画像](https://assets.st-note.com/production/uploads/images/134072599/rectangle_large_type_2_1b7b9ac55c9cdd7c3804b3f26908e0ce.png?width=800)
【完全保存版】Solana Programsとは?
当記事は、こちらの記事を翻訳・編集したものです。
1 概要
1 プログラムとは
Solanaプログラムは、他のブロックチェーン上の「スマートコントラクト」とよく称されるものです。
ブロックチェーン上の各トランザクション内で送信される指示を解釈する実行可能コードです。
翻訳者注
たとえば、「AさんからBさんに5SOL送る」という指示を解釈し、実行します。
2 2つのタイプ
これらは、ネットワークの核心に直接デプロイされるネイティブプログラムと誰でも公開できるオンチェーンプログラムがあります。
![](https://assets.st-note.com/img/1710542045972-kNr6Eq0ocU.png?width=800)
3 ネットワーク上での立ち位置
プログラムはネットワークの基本的な構成要素です。
ウォレット間でトークンを送信することから、DAOの投票を受け入れること、NFTの所有権を追跡することまで、すべてを取り扱います。
4 Sealevelランタイム上での実行
両方のタイプのプログラムは、ブロックチェーンの高速なトランザクション速度を可能にするSolanaの並列処理モデルであるSealevelランタイムの上で実行されます。
![](https://assets.st-note.com/img/1710542172685-y9QQljZnUz.png?width=800)
2 主要なポイント
1 実行可能マーク
プログラムは「実行可能」とマークされた特別なタイプのアカウントです。
![](https://assets.st-note.com/img/1710542314017-0E5eRB9723.png?width=800)
2 他のアカウントの所有と操作
プログラムは他のアカウントを所有できます。
そして、プログラムは、所有するデータやデビット(引き出す)アカウントのみを変更できます。
![](https://assets.st-note.com/img/1710542654334-PbRsN62EBq.png?width=800)
4 任意のプログラムでできること
任意のプログラムは別のアカウントを読み取るか、クレジット(資金の送付)することができます。
![](https://assets.st-note.com/img/1710542849134-YeAPkjI0ZZ.png?width=800)
5 プログラムと状態
プログラムには状態がないと考えられています。
なぜなら、プログラムアカウントに格納されている主要なデータはコンパイルされたSBFコードだからです。
翻訳者注
SBFはSolana Binary Formatの略です。
下のように、Solanaではロジックと値が分離しています。
![](https://assets.st-note.com/img/1710543162419-TrOem4h5Xv.png?width=800)
6 アップグレーダブルについて
プログラムは所有者によってアップグレードすることができます(第6章を参照)。
翻訳者注
これは、ロジックとデータが分離していることによってできます。
3 オンチェーンプログラム
1 概要
これらのユーザーが書いたプログラムは、他のブロックチェーン上の「スマートコントラクト」とよく称されます。
![](https://assets.st-note.com/img/1710543572313-JiRs1dBiIz.png?width=800)
ブロックチェーンに直接デプロイされ、誰もが対話し実行できるようになっています。
そのため、「オンチェーン」という名前がついています。
2 ネイティブプログラムとの違い
実質的に、「オンチェーンプログラム」は、Solanaクラスターのコアコードに直接組み込まれていない任意のプログラムを指します。
3 Solanaクラスターとは?(翻訳者追記部分)
Solanaクラスターは、Solanaネットワークを構成するサーバー(ノード)の集合体です。
![](https://assets.st-note.com/img/1710543480885-Lk8DkEEI6R.png?width=800)
これらのクラスターは、トランザクションの処理、データの保管、ブロックチェーンの同期など、ネットワーク上でのさまざまな操作を担っています。
4 コアコードとは(翻訳者追記部分)
「コアコード」とは、Solanaネットワークが機能するために必要な基本的なプログラムやプロトコルを指します。
これには、トランザクションの検証方法、データの暗号化、ネットワーク参加者間の通信プロトコルなどが含まれます。
5 Solana Labsのオンチェーンプログラム
Solana Labsがこれらのオンチェーンプログラムの小さなサブセット(Solanaプログラムライブラリとして集合的に知られている)を維持しています。
![](https://assets.st-note.com/img/1710543706892-YNBtL7S51m.png?width=800)
一方、誰でも一つを作成または公開することができます。
6 プログラムの更新
オンチェーンプログラムは、該当するプログラムのアカウント所有者によってブロックチェーン上で直接更新することもできます。
![](https://assets.st-note.com/img/1710543965412-xgtNAsWXg2.png?width=800)
4 ネイティブプログラム
1 概要
ネイティブプログラムは、Solanaブロックチェーンのコアに直接組み込まれたプログラムです。
Solanaの他の「オンチェーン」プログラムと同様に、ネイティブプログラムは他のプログラム/ユーザーによって呼び出すことができます。
2 アップグレードについて
しかし、これらはコアブロックチェーンおよびクラスターアップデートの一部としてのみアップグレードできます。
これらのネイティブプログラムのアップグレードは、異なるクラスターへのリリースを通じて制御されます。
翻訳者注
新しいバージョンのソフトウェアがリリースされ、それが各クラスターに配布されることで、ネイティブプログラムの更新が行われます。
3 ネイティブプログラムの例
ネイティブプログラムの例には以下が含まれます。
3ー1 システムプログラム
新しいアカウントを作成し、トークンを転送し、その他多くの操作を行う
![](https://assets.st-note.com/img/1710544290714-f5N7ypsTcm.png?width=800)
3ー2 BPFローダープログラム
プログラムをオンチェーンにデプロイ、アップグレード、実行する
![](https://assets.st-note.com/img/1710544504686-3lfEAAuxDt.png?width=800)
3ー3 投票プログラム
バリデーターの投票状態と報酬を追跡するアカウントを作成し管理する
![](https://assets.st-note.com/img/1710544413549-FxyeR259L6.png?width=800)
5 実行可能
Solanaプログラムがネットワークにデプロイされると、BPFローダープログラムによって「実行可能」とマークされます。
![](https://assets.st-note.com/img/1710544981030-uQ2FnSfRrD.png?width=800)
これにより、Solanaランタイムはコンパイルされたプログラムコードを効率的かつ適切に実行することができます。
6 アップグレーダブル
1 概要
他のブロックチェーンとは異なり、Solanaプログラムはネットワークにデプロイされた後でもアップグレードすることができます。
2 ネイティブプログラムの場合
ネイティブプログラムは、新しいソフトウェアリリースが行われたときのクラスターアップデートの一部としてのみアップグレードできます。
3 オンチェーンプログラムの場合
オンチェーンプログラムは、「アップグレード権限」(Upgrade Authority)とマークされたアカウントによってアップグレードできます。
![](https://assets.st-note.com/img/1710545006531-WmPOEYBkNA.png?width=800)
これは通常、プログラムを最初にデプロイしたSolanaアカウント/アドレスです。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊