Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
基本的な分離:プログラムとアカウント
プログラム
SolanaにおけるプログラムはBinaryファイルから読み込まれるコンパイル済みバイナリで、Pubkeyにデプロイされ、トランザクション経由で呼び出し可能な実行可能コードです。プログラムは関連する状態を持たず、ロジックのみを含みます。
Raydiumのプログラム:
- CPMM:
CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F - CLMM:
CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK - AMM v4:
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
アカウント
アカウントはオンチェーンのデータ行です。すべてのアカウントには以下があります:pubkey— そのアドレス。owner— それを所有するプログラム(書き込みを制御)。data— 生のバイト。lamports— SOL残高(1 SOL = 1,000,000,000 lamports)。rent_epoch— レガシーレント回収フィールド(レント免除が必須になってから無視)。
所有権
すべてのアカウントはちょうど1つのプログラムによって所有されます。そのプログラムのコードのみがアカウントのdataフィールドを変更できます。ユーザーは署名できるアカウントのlamportsを変更できますが(SOLを送受信)、dataを変更するには所有プログラムがそれを代わりに行う必要があります。
例:
- ユーザーウォレット:System Programによって所有。Lampportsはここに存在。署名して転送します。
- USDCトークンアカウント:SPL Token Programによって所有。トークンプログラムの
transfer命令がバランスを更新します。 - Raydiumプール状態アカウント:CPMMプログラムによって所有。CPMMの命令のみが準備金、手数料などを変更できます。
- Raydiumポジション NFTの
PersonalPositionState:CLMMプログラムによって所有。
レントとレント免除
アカウントの作成はストレージスペースを消費します。Solanaはそのスペースに対してレントを課しますが、2020年からすべての新しいアカウントはレント免除である必要があります — つまり、彼らが2年間に借りるであろうレントが事前に支払われるのに十分なlamplortsを保持しています。実際には:- レント免除アカウントは永遠に存在します。
- アカウントをクローズするとlamplortsをクローズ署名者に返します。
Raydiumレントコスト
| アカウント | サイズ | レント |
|---|---|---|
| CPMM PoolState | ~1,440 B | ~0.011 SOL |
| CLMM PoolState | ~1,500 B | ~0.012 SOL |
| CLMM TickArray | ~9,000 B | ~0.063 SOL |
| CLMM PersonalPositionState | ~280 B | ~0.003 SOL |
| ATA | 165 B | ~0.002 SOL |
| Vault (Token Account) | 165 B | ~0.002 SOL |
データと実行可能アカウント
アカウントは2つの種類があります:データアカウント
状態を保持します(プール準備金、トークンバランス、ユーザーポジション)。executable = false。これが大多数です。
実行可能アカウント
プログラムBytecodeを保持します。executable = true。これらはプログラム(CPMM、CLMMなど)です。プログラムはBytecode以外のデータを持ちません。
プログラム派生アカウント(PDA)
PDAはそのアドレスがプログラムといくつかのシード — このアドレスの秘密鍵は存在しない — から確定的に導出されるデータアカウントです。導出プログラムのみがinvoke_signed経由でPDAの代わりに署名できます。
Raydiumは広範にPDAを使用しています:
- プール状態PDA:
[poolTypeDiscriminator, mintA, mintB, ammConfig]から導出。 - ボールトPDA:
[pool, mint]から導出。 - 観察状態PDA:
[observationSeed, pool]から導出。
solana-fundamentals/pdas-and-cpisを参照してください。
トランザクションとアカウント参照
すべてのSolanaトランザクションは、読み書きするアカウントの明示的なリストを記載しています。ランタイムは以下を強制します:- リストされたアカウントは読み書きできます(
is_writableフラグ当たり)。 - リストされていないアカウントには触れることはできません。
アカウントサイズとデータレイアウト
すべてのRaydiumアカウントは固定または上限付きサイズを持ちます。レイアウトはコードで定義されています(#[repr(C)]付きRustストラクト)そしてsdk-api/anchor-idlに文書化されています。
Anchorプログラムは作成するすべてのアカウントに8バイトのディスクリミネータを追加します。これはhash("account:<StructName>")[0..8]から導出されます。これにより、クライアントは最初の8バイトを読むだけでアカウントのタイプを識別できます — すべてのタイプのアカウントを列挙するgetProgramAccountsスキャンに重要です。
Raydiumプール状態を読む
SDK経由:src/raydium/cpmm/layout.tsにあります。
実装例:トークンアカウントを読む
ユーザーのUSDCバランスを読みましょう。Raydiumにとってこれが重要な理由
アカウントモデルはRaydiumの設計を形成しています:- プール状態は単一のアカウント — プールに関するすべて(ミント、準備金、手数料、管理者)は、プールプログラムによって所有される1つのアカウントに存在します。
- LPトークンは標準SPLトークンアカウント — Raydiumはトークン化をSPL Tokenプログラムに委任します。
- ティックアレイはチャンク化 — CLMMは成長可能なティックの単一配列を持つことができません。なぜなら、アカウントは固定割り当てサイズを持つため、代わりにチャンク化された
TickArrayPDAを使用します。 - ポジション NFTはMetaplex NFT — CLMMのポジションはMetaplexごとの標準NFTであり、ポジション状態は別のPDAです。
- 「プール準備金はどこにありますか?」→ 2つのボールトアカウント(トークンアカウント)、SPL Tokenプログラムによって所有、権限がプールプログラムのPDAに委任されています。
- 「CLMMのティックデータはどこにありますか?」→ 一連のTickArray PDA、各々60連続ティックをカバーしています。
- 「私のファーム賭け金はどこにありますか?」→
[user, farmId]から導出されたUserLedgerPDA、ファームプログラムによって所有。
ポインタ
solana-fundamentals/programs-and-anchor— プログラムがアカウントを処理する方法。solana-fundamentals/pdas-and-cpis— PDA導出とCPI。solana-fundamentals/transactions-and-fees— アカウントがトランザクションで参照される方法。sdk-api/anchor-idl— Raydiumのプログラムのアカウントレイアウト。
- Solana Account docs.
- SPL Token program — トークンアカウントが存在する場所。


