![見出し画像](https://assets.st-note.com/production/uploads/images/139684232/rectangle_large_type_2_e35fa4fa4dacad18e3fbe88cd0808935.png?width=800)
【Solanaコアコンセプト④】 プログラム
この記事は、こちらの公式を翻訳・編集したものです。
1 はじめに
Solanaエコシステムでは、「スマートコントラクト」はプログラムと呼ばれます。
![](https://assets.st-note.com/img/1714948474636-JAuYWibyDm.png?width=800)
各プログラムは実行可能なロジックを格納するオンチェーンアカウントであり、インストラクションと呼ばれる特定の機能に整理されています。
補足
個人的にはオンチェーンにあるのは「メソッド」であり、それがトランザクションに含まれる時、「Instruction」というのかなと思っていました。
ただ、確かにそれらは同じものなので、今後はプログラムのメソッドのことをインストラクションとして認識しようと思いました。
![](https://assets.st-note.com/img/1714948530030-vALcGlGy76.png?width=800)
Solanaプログラムに関連する追加トピックについては、このドキュメントの「プログラムのデプロイ」セクションに含まれるページを参照してください。
2 主なポイント
1 概要
プログラムは実行可能なコードを含むオンチェーンアカウントです。
![](https://assets.st-note.com/img/1714949594667-TysxHX5Dft.png?width=800)
このコードはインストラクションとして知られる異なる機能に整理されます。
2 状態用のアカウントについて
プログラムはステートレスです。
補足
ロジックと値が分離しています。
プログラムの状態を保存および管理するために使用される新しいアカウントの作成を含むインストラクションを含むことができます。
補足
実際にはPDAなどで新しいアカウントを作成するインストラクションを含むことが多いと思います。
3 更新可能について
プログラムはアップグレード権限によって更新可能です。
アップグレード権限がnullに設定されると、プログラムは不変になります。
補足
アップグレードができるアカウントを指定しているので、そこをnullに設定することで、誰もアップグレードができないとなるのですね。
4 検証可能なビルド
検証可能なビルドは、オンチェーンプログラムが公開されているソースコードと一致することをユーザーが確認できるようにします。
補足
イーサリアムなどでいうところのVerifyですね。
3 Solanaプログラムの作成
1 はじめに
Solanaプログラムは主にRustプログラミング言語で書かれています。
![](https://assets.st-note.com/img/1714950050357-tjT1yxqTOa.png?width=800)
開発には2つの一般的なアプローチがあります。
2 Anchor
Solanaプログラム開発用に設計されたフレームワークです。
![](https://assets.st-note.com/img/1714950302997-2jrwjmz1XH.png?width=800)
Rustマクロを使用してボイラープレートコードを大幅に削減し、プログラムの記述をより速く簡単にする方法を提供します。
補足
ボイラープレートコードとは、ほとんど変化しないような定型的なコードです。
書かなくていいところは、書かないようにしているのですね。
初心者にはAnchorフレームワークの使用をお勧めします。
3 ネイティブRust
このアプローチでは、フレームワークを活用せずにRustでSolanaプログラムを記述します。
より多くの柔軟性を提供しますが、複雑さも増します。
4 Solanaプログラムの更新
1 アップグレードについて
オンチェーンプログラムは、通常プログラムを最初にデプロイしたアカウントである「アップグレード権限」として指定されたアカウントによって直接変更できます。
2 アップグレード権限の取り消しについて
アップグレード権限が取り消されてNoneに設定されると、プログラムは不変となり、これ以上更新できなくなります。
5 検証可能なプログラム
1 検証の重要性
オンチェーンコードの整合性と検証可能性を確保することが重要です。
検証可能なビルドは、デプロイされた実行可能コードが任意の第三者によってその公開されたソースコードと一致するかどうかを独立して確認できるようにします。
このプロセスは透明性と信頼性を高め、ソースコードとデプロイされたプログラムの間に食い違いがないかを検出することが可能になります。
2 Solanaにおける検証
Solana開発者コミュニティは、検証可能なビルドをサポートするツールを導入しました。
これにより、開発者とユーザーはオンチェーンプログラムが公に共有されたソースコードを正確に反映しているかを確認できます。
3 検証済みプログラムの検索
検証済みプログラムを迅速にチェックする方法についてです。
ユーザーはSolanaFM Explorerでプログラムアドレスを検索し、「Verification」タブに移動します。
![](https://assets.st-note.com/img/1714950859679-aryhT4BUFm.png?width=800)
4 検証ツール
Ellipsis LabsによるSolana Verifiable Build CLIを使用すると、ユーザーはオンチェーンプログラムを公開されたソースコードに対して独立して検証できます。
![](https://assets.st-note.com/img/1714950948741-GsIA9AqpYV.png?width=800)
5 Anchorにおける検証可能ビルドのサポート
Anchorは検証可能なビルドをサポートするための組み込み機能を提供しています。
詳細はAnchorのドキュメントで確認できます。
![](https://assets.st-note.com/img/1714951103136-BL9hFdwkWl.png?width=800)
6 Berkeley Packet Filter (BPF)
1 LLVMコンパイラインフラストラクチャ
SolanaはLLVMコンパイラインフラストラクチャを使用します。
![](https://assets.st-note.com/img/1714951282296-qS0mqfTMya.png?width=800)
2 Executable and Linkable Format(ELF)
これにより、プログラムを実行可能でリンク可能なフォーマット(ELF)ファイルにコンパイルします。
![](https://assets.st-note.com/img/1714951523707-cnBRiRc2Nv.png?width=800)
3 Solana Bytecode Format(sBPF)
これらのファイルには、Solanaプログラム用に修正されたBerkeley Packet Filter(eBPF)バイトコード、つまり「Solana Bytecode Format」(sBPF)が含まれています。
![](https://assets.st-note.com/img/1714952889079-dAZSwwn7ce.png?width=800)
LLVMの使用により、SolanaはLLVMのBPFバックエンドにコンパイルできる任意のプログラミング言語をサポートする可能性があります。
これにより、Solanaの開発プラットフォームとしての柔軟性が大幅に向上します。
補足
この辺り、翻訳者自身の理解がまだまだ浅いので、理解でき次第、補足をしていきたいと思っています。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊