Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Program produk Raydium adalah basis kode independen, tetapi dirancang berdasarkan serangkaian konvensi bersama. Halaman ini adalah referensi kanonik untuk konvensi tersebut. Bab per-produk menjelaskan bagaimana konvensi diinstansiasi dalam akun mereka; halaman ini menjelaskan konvensi itu sendiri.
Apa arti “bersama” di sini
Tiga jenis berbagi berjalan melalui basis kode:- Berbagi konvensi. Setiap program menggunakan pola derivasi PDA yang sama, bentuk pembagian biaya yang sama, dan ide akun observasi yang sama — tetapi masing-masing mengimplementasikannya dalam program mereka sendiri dengan seed mereka sendiri.
- Berbagi akun. Segelintir akun adalah literal catatan yang sama di banyak pool (PDA otoritas global di CPMM, akun AmmConfig).
- Berbagi off-chain. Satu REST API dan satu SDK TypeScript melayani keempat program. Integrator berinteraksi dengan satu host HTTP dan satu paket NPM terlepas dari program mana yang akhirnya mereka panggil.
1. PDA Otoritas
Setiap program Raydium memiliki tepat satu PDA yang memiliki vault token-nya. Pengguna tidak pernah memegang otoritas vault secara langsung — PDA otoritas adalah satu-satunya penanda tangan yang dapat memindahkan dana keluar, dan hanya menandatangani ketika instruksi program yang valid menyuruhnya. Polanya identik di seluruh produk; seed berbeda:
Beberapa hal mengikuti dari ini:
- Untuk CPMM dan CLMM, PDA otoritas adalah akun global — setiap pool dari tipe itu menggunakannya. Jika Anda melakukan CPI ke CPMM, Anda membutuhkannya sekali, bukan per pool.
- Untuk otoritas per-pool / per-farm, Anda menurunkan PDA dari ID pool/farm. SDK melakukan ini di
getPoolKeys/getFarmKeys; jika Anda mengintegrasikan secara langsung, Anda menurunkan denganfindProgramAddressSync. - Kepemilikan vault tidak dapat diubah. Setelah akun token dibuat dengan PDA otoritas sebagai pemilik, hanya PDA itu — dipanggil oleh program — yang dapat mentransfer keluar. Tidak ada penggantian admin.
products/cpmm/accounts, products/clmm/accounts, products/amm-v4/accounts, products/farm-staking/accounts, products/launchlab/accounts.
2. Akun Admin dan Konfigurasi
CPMM dan CLMM berbagi pola akun konfigurasi yang disebutAmmConfig: akun global kecil, diindeks oleh u16, yang menyimpan tingkat biaya dan tujuan admin yang berlaku untuk seluruh tingkat biaya. Pool mengikat ke konfigurasi saat pembuatan dan tidak pernah mengikat ulang.
- Tingkat biaya bersifat global. Ketika pool mengatakan “ini adalah pool 0,25%”, itu berarti mengikat ke AmmConfig yang
trade_fee_rate-nya adalah 0,25% pada waktu pembuatan. Tidak ada penggantian tingkat per-pool. - Konfigurasi dapat diubah tetapi pool tidak mengikuti. Jika otoritas konfigurasi mengedit AmmConfig, setiap pool yang ada yang terikat ke konfigurasi itu segera mengambil tingkat baru. Ini adalah fitur, bukan bug; ini adalah cara perubahan ekonomi tingkat protokol menyebar tanpa migrasi per-pool.
disable_create_pooladalah tuas penghentian. Ketika tingkat biaya dihentikan, multisig protokol menetapkan flag ini — pool yang ada terus bekerja tetapi tidak ada pool baru yang dapat memilih tingkat tersebut.protocol_owner/fund_owneradalah penanda tangan untuk panggilan pengumpulan biaya. Menetapkannya ke multisig adalah apa yang membatasi penarikan biaya. Mereka BUKAN alamat tujuan untuk biaya itu sendiri; itu adalahprotocol_fee_destination/fund_fee_destinationpada akun yang sama.
AmmConfig — parameter biayanya per-pool, dikodekan keras saat pembuatan. Farm dan LaunchLab memiliki padanan mereka sendiri (FarmConfig, LaunchConfig) yang tercakup dalam bab masing-masing.
Tabel lengkap siapa yang dapat mengubah apa ada di security/admin-and-multisig. Pembagian biaya yang menghadap pengguna saat ini ada di ray/protocol-fees.
3. Pembagian biaya protokol / dana / kreator
Setiap biaya swap CPMM dan CLMM dibagi di antara hingga empat tujuan dalam perjalanan keluar:- Biaya perdagangan terakumulasi ke dalam pool. Biaya dihapus dari sisi input swap dan jumlah pasca-biaya adalah apa yang dilihat oleh matematika produk konstan. Ini adalah apa arti “LP mendapatkan biaya” —
knaik dan begitu juga nilai token per-LP yang tersirat. - Porsi protokol/dana/kreator dikurangi dari akumulasi sisi-LP itu ke akun penghitung per-pool. Mereka duduk di status pool (
protocol_fees_token{0,1},fund_fees_token{0,1}, dll.) sampai seseorang memanggil instruksi pengumpulan yang sesuai. Mereka tidak meninggalkan vault pool sampai saat itu; dari perspektif swap mereka masih “di pool”. - Pengumpulan memindahkannya keluar. Jalur protokol dan dana memerlukan penanda tangan
protocol_owner/fund_ownermasing-masing dariAmmConfig. Biaya kreator CPMM menggunakan jalurCollectCreatorFeeyang ditandatangani kreator atauCollectCreatorFeePermissionless, yang dapat dipicu oleh pembayar apa pun tetapi menetapkan tujuan ke ATA kanonik kreator.
- Persentase pembagian adalah dari biaya perdagangan, bukan dari perdagangan. Biaya perdagangan 0,25% dengan bagian protokol 12% berarti protokol mendapatkan
0,25% × 12% = 0,03%dari perdagangan — bukan 12% dari perdagangan. - Biaya kreator hanya ada di pool yang lulus LaunchLab. Pool CPMM/CLMM standar memiliki pembagian 3 arah (LP / protokol / dana). LaunchLab menambahkan slot keempat yang diarahkan ke siapa pun yang meluncurkan token, dikonfigurasi pada
Initializedan tidak dapat diubah. - AMM v4 hanya membagi dua cara, dikodekan keras per-pool: LP dan protokol. Tidak ada slot dana, tidak ada slot kreator.
- Dana vs protokol — keduanya adalah tujuan treasury protokol, tetapi mereka memiliki penanda tangan berbeda dan penggunaan yang dimaksudkan berbeda.
protocolsecara historis mendanai operasi;fundadalah treasury jangka panjang. Pembagian antara keduanya itu sendiri dapat disesuaikan.
reference/fee-comparison dan ray/protocol-fees.
4. Akun Observasi (Ring Buffer TWAP)
Baik CPMM maupun CLMM mempertahankan akun observasi per pool — ring buffer berukuran tetap dari sampel(timestamp, cumulative_price) yang dapat digunakan kontrak lain untuk menurunkan TWAP yang tahan manipulasi.
- Setiap swap memanggil
update_observation. Program membaca harga saat ini, mengalikan dengan detik yang telah berlalu sejak observasi sebelumnya, dan menambahkannya ke penghitung kumulatif. Entri baru menimpa slot tertua (gaya ring-buffer). - TWAP selama jendela =
(cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start]). Konsumen memilih dua observasi yang mengapit jendela yang diinginkan dan membagi. - Raydium itu sendiri tidak menggunakan TWAP untuk penetapan harga. Matematika AMM membaca cadangan spot secara langsung. Observasi adalah eksternalitas — Raydium membayar biaya menulisnya sehingga kontrak lain dapat membacanya.
- AMM v4 tidak memiliki akun observasi. Ini lebih tua dari desain ObservationState; integrator yang menginginkan TWAP v4 harus menghitung satu off-chain dari riwayat log.
products/cpmm/accounts dan products/clmm/accounts.
5. REST API + SDK + IDL
Permukaan off-chain adalah trio tunggal yang digunakan oleh setiap produk:- REST API —
https://api-v3.raydium.io. Tampilan terindeks yang sebagian besar hanya-baca dari semua status on-chain ditambah mesin kutipan. Satu host, satu skema. - TypeScript SDK —
@raydium-io/raydium-sdk-v2di NPM. Membangun dan menandatangani transaksi untuk setiap program. Berbicara dengan API untuk kutipan/metadata, berbicara dengan RPC Solana untuk penyegaran status pra-tanda tangan. - Registri IDL — IDL Anchor untuk setiap program yang dipublikasikan tinggal di repositori
raydium-idl(satu JSON per program: CPMM, CLMM, LaunchLab). TypeScript SDK menggunakan IDL ini secara internal; klien Rust / Python hilir meregenerasi dari file yang sama.
Kesalahan umum adalah memberi makan output REST API langsung ke transaksi. Jangan — ambil ulang status pool/posisi yang relevan dari RPC Solana di slot yang Anda tandatangani. SDK melakukan ini secara otomatis untuk alur pihak pertama; jika Anda melewati SDK, Anda harus melakukannya sendiri.
Referensi lengkap ada di
sdk-api/, dengan permukaan IDL khususnya di sdk-api/anchor-idl.
6. Indexer dan Feed Harga
REST API diberi makan oleh indexer Raydium sendiri, yang berlangganan log program dari armada RPC Solana dan menulis catatan denormalisasi ke penyimpanan SQL. Dua konsekuensi untuk integrator:- Indexer adalah satu-satunya hal yang “tahu tentang” status lintas-program. Memetakan pool CPMM ke padanannya CLMM, menghitung angka volume 24j di seluruh versi program, mengambil farm yang terkait dengan mint LP — semua itu adalah pekerjaan indexer. Program itu sendiri tidak melakukannya.
- Downtime indexer adalah downtime API. Jika API mengembalikan data basi atau kosong, indexer adalah tersangka. Status on-chain tidak terpengaruh; integrator dengan RPC dan SDK mereka sendiri dapat terus bertransaksi.
priceUsd pada sebagian besar respons pool; ini dihitung off-chain dari snapshot tampilan indexer tentang cadangan pool dan harga referensi yang dikutip (pool USDC sebagai pivot umum). Cukup baik untuk UI; tidak aman digunakan sebagai oracle on-chain. Gunakan TWAP observasi untuk itu.
Apa yang tidak dibagikan
Layak untuk didaftar secara eksplisit, karena pembaca baru sering menganggap lebih banyak berbagi daripada yang ada:- Program tidak memanggil satu sama lain. Swap CPMM tidak pernah melakukan CPI ke CLMM atau AMM v4. Satu-satunya program yang menggabungkan beberapa AMM adalah program AMM Routing — dan itu sendiri tipis, hanya memancarkan CPI ke setiap AMM secara berurutan.
- Tidak ada otoritas upgrade bersama di seluruh program. Setiap program on-chain memiliki kunci upgrade program-nya sendiri (multisig 3/4 ditambah timelock 24j). Mereka tidak terhubung.
- Tidak ada status bersama antara farm dan AMM. Farm tidak tahu LP mana yang dipertaruhkan berasal dari pool CPMM, NFT-mint posisi CLMM, atau token SPL yang tidak terkait. Program farm memperlakukan mint staking sebagai buram.
- Tidak ada ketergantungan oracle. Penetapan harga adalah cadangan on-chain. Tidak ada fallback Pyth/Switchboard; AMM tidak memeriksa oracle sebelum menyelesaikan.
Penunjuk
protocol-overview/architecture— diagram kanonik yang menunjukkan bagaimana potongan-potongan ini terdiri.protocol-overview/versions-and-migration— bagaimana konvensi berkembang di seluruh versi program.security/admin-and-multisig— siapa yang mengontrol kunci di balik AmmConfigs.reference/fee-comparison— matriks tingkat biaya per produk.reference/program-addresses— ID program kanonik.
- Raydium SDK v2 — sumber kebenaran untuk seed PDA, tata letak akun, dan definisi IDL.
- Registri IDL Raydium — IDL Anchor.
- Halaman akun per-produk yang dikutip secara inline di atas.

