【Solanaコアコンセプト④】 プログラム
この記事は、こちらの公式を翻訳・編集したものです。
1 はじめに
Solanaエコシステムでは、「スマートコントラクト」はプログラムと呼ばれます。
各プログラムは実行可能なロジックを格納するオンチェーンアカウントであり、インストラクションと呼ばれる特定の機能に整理されています。
Solanaプログラムに関連する追加トピックについては、このドキュメントの「プログラムのデプロイ」セクションに含まれるページを参照してください。
2 主なポイント
1 概要
プログラムは実行可能なコードを含むオンチェーンアカウントです。
このコードはインストラクションとして知られる異なる機能に整理されます。
2 状態用のアカウントについて
プログラムはステートレスです。
プログラムの状態を保存および管理するために使用される新しいアカウントの作成を含むインストラクションを含むことができます。
3 更新可能について
プログラムはアップグレード権限によって更新可能です。
アップグレード権限がnullに設定されると、プログラムは不変になります。
4 検証可能なビルド
検証可能なビルドは、オンチェーンプログラムが公開されているソースコードと一致することをユーザーが確認できるようにします。
3 Solanaプログラムの作成
1 はじめに
Solanaプログラムは主にRustプログラミング言語で書かれています。
開発には2つの一般的なアプローチがあります。
2 Anchor
Solanaプログラム開発用に設計されたフレームワークです。
Rustマクロを使用してボイラープレートコードを大幅に削減し、プログラムの記述をより速く簡単にする方法を提供します。
初心者にはAnchorフレームワークの使用をお勧めします。
3 ネイティブRust
このアプローチでは、フレームワークを活用せずにRustでSolanaプログラムを記述します。
より多くの柔軟性を提供しますが、複雑さも増します。
4 Solanaプログラムの更新
1 アップグレードについて
オンチェーンプログラムは、通常プログラムを最初にデプロイしたアカウントである「アップグレード権限」として指定されたアカウントによって直接変更できます。
2 アップグレード権限の取り消しについて
アップグレード権限が取り消されてNoneに設定されると、プログラムは不変となり、これ以上更新できなくなります。
5 検証可能なプログラム
1 検証の重要性
オンチェーンコードの整合性と検証可能性を確保することが重要です。
検証可能なビルドは、デプロイされた実行可能コードが任意の第三者によってその公開されたソースコードと一致するかどうかを独立して確認できるようにします。
このプロセスは透明性と信頼性を高め、ソースコードとデプロイされたプログラムの間に食い違いがないかを検出することが可能になります。
2 Solanaにおける検証
Solana開発者コミュニティは、検証可能なビルドをサポートするツールを導入しました。
これにより、開発者とユーザーはオンチェーンプログラムが公に共有されたソースコードを正確に反映しているかを確認できます。
3 検証済みプログラムの検索
検証済みプログラムを迅速にチェックする方法についてです。
ユーザーはSolanaFM Explorerでプログラムアドレスを検索し、「Verification」タブに移動します。
4 検証ツール
Ellipsis LabsによるSolana Verifiable Build CLIを使用すると、ユーザーはオンチェーンプログラムを公開されたソースコードに対して独立して検証できます。
5 Anchorにおける検証可能ビルドのサポート
Anchorは検証可能なビルドをサポートするための組み込み機能を提供しています。
詳細はAnchorのドキュメントで確認できます。
6 Berkeley Packet Filter (BPF)
1 LLVMコンパイラインフラストラクチャ
SolanaはLLVMコンパイラインフラストラクチャを使用します。
2 Executable and Linkable Format(ELF)
これにより、プログラムを実行可能でリンク可能なフォーマット(ELF)ファイルにコンパイルします。
3 Solana Bytecode Format(sBPF)
これらのファイルには、Solanaプログラム用に修正されたBerkeley Packet Filter(eBPF)バイトコード、つまり「Solana Bytecode Format」(sBPF)が含まれています。
LLVMの使用により、SolanaはLLVMのBPFバックエンドにコンパイルできる任意のプログラミング言語をサポートする可能性があります。
これにより、Solanaの開発プラットフォームとしての柔軟性が大幅に向上します。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊