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.
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Pemisahan fundamental: program vs akun
Program
Sebuah program di Solana adalah kode yang dapat dieksekusi — biner yang dikompilasi, dimuat dari file, dikerahkan kePubkey, dan dapat dipanggil melalui transaksi. Program tidak memiliki status yang terkait; mereka hanya berisi logika.
Program Raydium:
- CPMM:
CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F - CLMM:
CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK - AMM v4:
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Akun
Sebuah akun adalah baris data dalam jaringan. Setiap akun memiliki:pubkey— alamatnya.owner— program yang memilikinya (mengontrol penulisan).data— byte mentah.lamports— saldo SOL (1 SOL = 1.000.000.000 lamports).rent_epoch— field pengumpulan rent warisan (diabaikan sejak bebas-rent menjadi wajib).
Kepemilikan
Setiap akun dimiliki oleh tepat satu program. Hanya kode program tersebut yang dapat mengubah fielddata akun. Pengguna dapat mengubah lamports (mengirim/menerima SOL) pada akun yang mereka bisa tandatangani, tetapi memodifikasi data memerlukan program pemilik untuk melakukannya atas nama mereka.
Contoh:
- Dompet pengguna Anda: dimiliki oleh Sistem Program. Lamports hidup di sini; Anda menandatangani untuk mentransfer.
- Akun token USDC Anda: dimiliki oleh Program SPL Token. Instruksi program token
transfermemperbarui saldo. - Akun status pool Raydium: dimiliki oleh program CPMM. Hanya instruksi CPMM yang dapat memodifikasi cadangan, biaya, dll.
PersonalPositionStateNFT posisi Raydium: dimiliki oleh program CLMM.
Rent dan bebas-rent
Membuat akun mengonsumsi ruang penyimpanan. Solana mengenakan biaya rent untuk ruang tersebut, tetapi sejak 2020 semua akun baru harus bebas-rent — artinya mereka memiliki lamports cukup sehingga rent yang mereka hutang selama 2 tahun dibayar sebelumnya. Secara praktis:- Akun bebas-rent hidup selamanya.
- Menutup akun mengembalikan lamports kepada penandatangan penutup.
Biaya rent Raydium
| Akun | Ukuran | Rent |
|---|---|---|
| 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 |
Akun data vs executable
Akun datang dalam dua varian:Akun data
Menyimpan status (cadangan pool, saldo token, posisi pengguna).executable = false. Ini adalah mayoritas besar.
Akun executable
Menyimpan bytecode program.executable = true. Ini adalah program (CPMM, CLMM, dll.). Program tidak memiliki data selain bytecode mereka.
Akun yang diturunkan program (PDA)
PDA adalah akun data yang alamatnya diturunkan secara deterministik dari program dan beberapa seed — tidak ada kunci privat yang ada untuk alamat ini. Hanya program penurunan yang dapat menandatangani atas nama PDA melaluiinvoke_signed.
Raydium menggunakan PDA secara ekstensif:
- PDA status pool: diturunkan dari
[poolTypeDiscriminator, mintA, mintB, ammConfig]. - PDA vault: diturunkan dari
[pool, mint]. - PDA status observasi: diturunkan dari
[observationSeed, pool].
solana-fundamentals/pdas-and-cpis.
Transaksi dan referensi akun
Setiap transaksi Solana membawa daftar eksplisit akun yang akan dibaca/ditulis. Runtime menegakkan:- Akun yang tercantum dapat dibaca atau ditulis (menurut flag
is_writablemereka). - Akun yang tidak tercantum tidak dapat disentuh.
Ukuran akun dan tata letak data
Setiap akun Raydium memiliki ukuran tetap atau terbatas. Tata letak didefinisikan dalam kode (struct Rust dengan#[repr(C)]) dan didokumentasikan di sdk-api/anchor-idl.
Program Anchor menambahkan diskriminator 8-byte ke setiap akun yang mereka buat, yang diturunkan dari hash("account:<StructName>")[0..8]. Ini memungkinkan klien mengidentifikasi jenis akun hanya dengan membaca 8 byte pertama — penting untuk pemindaian getProgramAccounts yang menghitung semua akun jenis tertentu.
Membaca status pool Raydium
Melalui SDK:src/raydium/cpmm/layout.ts di sumber SDK.
Contoh terselesaikan: membaca akun token
Mari kita baca saldo USDC pengguna.Mengapa ini penting untuk Raydium
Model akun membentuk desain Raydium:- Status pool adalah akun tunggal — segalanya tentang pool (mint, cadangan, biaya, admin) hidup dalam satu akun yang dimiliki oleh program pool.
- Token LP adalah akun token SPL standar — Raydium mendelegasikan tokenisasi ke program SPL Token.
- Array tick dipotong-potong — CLMM tidak dapat memiliki larik tick yang dapat tumbuh tunggal karena akun memiliki ukuran dialokasikan tetap; sebagai gantinya, ia menggunakan
TickArrayPDA yang dipotong. - Posisi NFT adalah NFT Metaplex — posisi CLMM adalah NFT standar per Metaplex; status posisi adalah PDA terpisah.
- “Di mana cadangan pool?” → dua akun vault (akun token) yang dimiliki oleh program SPL Token, dengan otoritas didelegasikan ke PDA program pool.
- “Di mana data tick untuk CLMM?” → serangkaian PDA TickArray, masing-masing mencakup 60 tick berturut-turut.
- “Di mana stake farm saya?” → PDA
UserLedgeryang diturunkan dari[user, farmId], dimiliki oleh program farm.
Penunjuk
solana-fundamentals/programs-and-anchor— cara program memproses akun.solana-fundamentals/pdas-and-cpis— derivasi PDA dan CPI.solana-fundamentals/transactions-and-fees— cara akun dirujuk dalam transaksi.sdk-api/anchor-idl— tata letak akun untuk program Raydium.
- Dokumen Akun Solana.
- Program SPL Token — di mana akun token hidup.


