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 →
Model penyebaran program
Setiap program Solana tinggal di sebuahPubkey. Bytecode program disimpan dalam akun executable yang dimiliki oleh BPF Upgradable Loader (BPFLoaderUpgradeab1e11111111111111111111111).
Penyebaran program terdiri dari tiga akun:
- Akun Program: akun metadata kecil di ID program. Pemilik: BPF Upgradable Loader.
- Akun ProgramData: menyimpan bytecode sebenarnya. Diturunkan sebagai
[program_id, "programdata"]. - Akun Buffer (sementara): menyimpan bytecode baru selama peningkatan. Dibuang setelah peningkatan.
security/admin-and-multisig.
Memverifikasi program yang dikerahkan
Untuk mengonfirmasi apa yang ada di chain cocok dengan apa yang ada di sumber yang disetujui audit:Anchor: kerangka di atas Solana
Program Solana mentah adalah fungsi Rust dengan tanda tangan ini:- Menghasilkan secara otomatis discriminator 8-byte deterministik untuk setiap instruksi dan tipe akun.
- Memvalidasi batasan akun (pemilik, seeds, writable, signer, mint-matches, token-program-matches) sebelum kode Anda berjalan.
- Menghasilkan IDL — berkas deskripsi antarmuka yang digunakan klien untuk memanggil program.
- Dilengkapi dengan perpustakaan klien Rust, TypeScript, dan Python.
Discriminator 8-byte
Setiap akun Anchor dan setiap instruksi Anchor dimulai dengan discriminator 8-byte — 8 byte pertama dari SHA-256 dari string tetap:getProgramAccounts yang menghitung semua akun dari tipe tertentu.
Kesalahan
Program Anchor mendefinisikan kesalahan melalui#[error_code]:
reference/error-codes.
IDL
Berkas Anchor IDL (Interface Description Language) adalah deskripsi JSON dari program: instruksi, akun, tipe, kesalahan, dan acara. Ini setara dengan ABI Ethereum. Raydium menerbitkan IDL untuk semua program Anchor. Ambil secara langsung dari on-chain:src/raydium/*/idl/*.json.
Struktur IDL
Menghasilkan klien dari IDL
CLI Anchoranchor menghasilkan tipe TypeScript dan Rust:
Ketika IDL adalah teman Anda
Jika Anda ingin membangun integrasi khusus yang tidak melalui SDK Raydium:- Ambil IDL (langsung dari on-chain atau dari sumber SDK).
- Cari instruksi yang Anda inginkan (misalnya,
swap_base_input). - Konstruksikan data instruksi: discriminator 8-byte + argumen yang dikodekan.
- Lewatkan akun dalam urutan yang ditentukan IDL.
sdk-api/anchor-idl untuk contoh kerja.
Program pra-Anchor: AMM v4 dan Farm v3/v5
Program ini mendahului Anchor. Mereka menggunakan:- Pengiriman instruksi manual: tag
u8dalaminstruction_datadengan pernyataanmatch. - Validasi akun manual:
if accounts[0].owner != &expected_program { ... }. - Argumen instruksi yang diserialisasi Borsh: tidak ada discriminator, hanya
instruction_data[1..]. - Layout melalui
#[repr(C, packed)]: tata letak biner struct C.
Mekanik peningkatan program
Hanyaupgrade_authority ProgramData yang dapat meningkatkan. Langkah-langkahnya:
- Kompilasi bytecode baru.
- Tuliskan ke akun buffer (
solana program write-buffer). - Kirim instruksi peningkatan:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - Runtime secara atomik mengganti bytecode program dengan isi buffer.
security/admin-and-multisig.
Membuat program tidak dapat diubah
Upgrade authority dapat diatur keNone, di mana program menjadi selamanya tidak dapat diubah. Raydium belum melakukan ini untuk produk apa pun — tim mempertahankan kemampuan untuk mendorong perbaikan keamanan. Trade-off: pengguna harus mempercayai proses multisig + timelock.
Program dan sewa
Menyebarkan program mengkonsumsi lamport yang bebas sewa:- Program 50 KB: ~0,35 SOL dalam sewa.
- Program 200 KB: ~1,4 SOL dalam sewa.
solana program close) mengembalikan lamport. Program Raydium tetap aktif dan tidak dijadwalkan untuk ditutup.
Program Anchor untuk debugging
Output log
Makromsg! Anchor menulis ke log transaksi. Simulasikan transaksi untuk melihat log:
- Pemanggilan program (
Program CPMMoo8... invoke [1]). - Panggilan
msg!dari kode program. - Konsumsi unit komputasi (
consumed 137842 of 400000 compute units). - Keberhasilan atau kesalahan program.
Kode kesalahan
Jika program Anchor melempar, log menampilkan:SlippageExceeded). Referensi silang dengan array errors IDL.
Lihat reference/error-codes untuk tabel kesalahan lengkap Raydium.
Ketidakcocokan tata letak akun
Jika Anda melewatkan akun yang salah di slot yang salah, makro validasi akun Anchor mengembalikan kesalahan seperti:ErrorCode Anchor); kesalahan ≥6000 adalah kode khusus program.
Penunjuk
solana-fundamentals/account-model— cara program memiliki akun.solana-fundamentals/pdas-and-cpis— PDA seperti yang dideklarasikan Anchor.sdk-api/anchor-idl— mengambil dan menggunakan IDL Raydium.reference/program-addresses— ID program.reference/error-codes— referensi kode kesalahan.security/admin-and-multisig— kontrol upgrade-authority.
- Buku Anchor.
- Penyebaran program Solana.
- IDL Raydium (diterbitkan di SDK
src/raydium/*/idl/*.json).


