おっちゃ、Solana のアカウントモデルについて関西弁で解説したるで〜!めっちゃわかりやすくするからな!
駆け出しエンジニアの頃、ゆめたろうさんの解説記事をよく参考にしていました。
本記事は Qiita の伝統にのっとり、Solana の基本概念について関西弁で解説するシリーズです。
Solana のアカウントモデルってなんやねん?
まずな、Solana ではすべてのデータは「アカウント」っちゅうもんに入れとんねん。これがめっちゃ大事や!
簡単に言うたら、キーとバリューのペアみたいなもんや。データベースの各エントリーを「アカウント」って呼んどるわけや。
アカウントの重要ポイントはこんなもんや!
1. 容量とか中身とか
アカウントには最大 10MB ものデータが入るねん。デカいやろ?
そして中身は「実行できるプログラムコード」か「プログラムの値」のどっちかや。
2. レントってなんやねん?
アカウントを維持するには「レントデポジット」っちゅう SOL が必要やねん。これはデータの量に比例しとんねん。でもな、アカウントを閉じたら全額返ってくるから Suica のデポジットみたいなもんやと思ったらええで!
3. 所有権の話
全部のアカウントには「所有者」があって、それはプログラムやねん。アカウントのデータを変えたり、ラムポート残高を引き出したりできるんは、そのアカウントを所有してるプログラムだけやねん。でも誰でもバランスを増やすことはできるで!誰からでも SOL 送れるっちゅうことやな。
4. プログラムの特徴
プログラム(スマートコントラクト)は、実行できるコードを格納する「ステートレス」なアカウントなんや。つまり、コードと値が分かれてて、プログラムはコードだけで出来とるわけや。
5. データアカウントってなんや?
データアカウントは、プログラムの状態を保存したり管理するためにプログラムが作るもんや。
6. ネイティブプログラムってなに?
ネイティブプログラムは、Solana ランタイムに最初から組み込まれてるプログラムやねん。
7. Sysvar アカウントってなんやねん?
Sysvar アカウントは、ネットワーククラスタの状態を格納する特別なアカウントやねん。
アカウントの構成ってどないなっとん?
1. アドレスの話
各アカウントは、Ed25519 っちゅう楕円曲線暗号の「PublicKey」の 32 バイトの一意のアドレスで識別できるねん。これがアカウントの一意の識別子や思ったらええで。
2. アカウント情報
Solana の全てのアカウントは最大 10MB のサイズで、その構造は「AccountInfo」って呼ばれとるねん。
3. AccountInfo の中身
- データ(data): アカウントの状態を格納するバイト配列や。プログラムの場合は実行可能なコードが入っとる。
- 実行可能か否か(executable): これはブールフラグで、「プログラムである(true)」か「プログラムではない(false)」かを示すねん。
- ラムポート(lamports): アカウントの残高をラムポートで表現しとる。1 SOL は 10 億ラムポートやで!
- 所有者(owner): アカウントを所有するプログラムの公開鍵(プログラム ID)やねん。
4. データの変更・引き出し権限
アカウントのデータを変えたり、ラムポート引き出したりできるんは所有者として指定されたプログラムだけや。でも、誰でもバランスを増やす(SOL 送る)ことはできるで!
5. チェーン上のデータ保存
チェーン上にデータを保存するには、データのサイズに比例した量の SOL をアカウントに送る必要があるねん。これを「レント(賃料)」って呼んどるけど、デポジットみたいなもんやから、アカウント閉じたら全額戻ってくるで!
ネイティブプログラムについて
Solana には、バリデータの実装の一部である「ネイティブプログラム」ってのがあって、これがネットワークの核心機能を提供しとるねん。
よく使うネイティブプログラムは「システムプログラム」と「BPF ローダー」やねん:
1. システムプログラム
デフォルトでは、全ての新しいアカウントはシステムプログラムが所有しとる。システムプログラムは以下のことができるねん:
- 新しいアカウントを作る(これ、システムプログラムだけができるねん!)
- データのスペースを割り当てる
- プログラムの所有権を別のプログラムに再割り当てする
2. ウォレットについて
Solana のウォレットは単に「システムプログラムによって所有されるアカウント」やねん。ウォレットのラムポートバランスが、そのアカウントが持ってる SOL の量やねん。
3. BPF ローダープログラム
BPF ローダーは、ネイティブプログラム以外の全てのプログラムの「オーナー」として指定されたプログラムで、カスタムプログラムのデプロイ、アップグレード、実行を担当しとるねん。
ほんま、こないにシンプルに言うと、Solana のアカウントモデルは、アドレスをキーとして、データをバリューとして扱う大きなデータストアみたいなもんや!それぞれのアカウントに所有者があって、それがデータを変更できるねん。これがわかったら、Solana の基本が掴めたも同然やで!どや、わかりやすかったやろ?
【ARM3rd とは】
ARM3rd はグローバル L1/L2 の開発支援、App Chain 企画、キラーアプリケーション創出に特化した、Web3・AI のプロフェッショナルファームです。Arweave や Solana はじめグローバルの Tier 1 プロトコル、および日本のエンタープライズとの卓越した協業実績を有しています。