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 →
Ringkasan satu paragraf
Program AMM Routing menggabungkan swap multi-hop ke dalam satu transaksi on-chain yang menghubungkan likuiditas lintas pool. Anda menyediakan rute (daftar pool dan mint perantara) dan satu instruksi dengan parameter slippage; router melaksanakan semua N hop secara berurutan, memindahkan output dari satu pool ke input berikutnya. Tidak diperlukan logika router on-chain terpisah untuk perhitungan harga—biaya dan kurva setiap hop ditangani oleh program pool masing-masing melalui CPI—tetapi router mengatur akun dan pergerakan token.Mengapa program router terpisah?
Klien Raydium dan aggregator dapat selalu menyusun swap multi-hop bersama di klien tanpa menggunakan router: bangun N instruksi swap (satu per pool) dan kirimkan dalam satu transaksi. Mengapa, kalau begitu, memiliki program router yang didedikasikan?Alasan menggunakan router
- CPI dari program lain. Jika program Anda sendiri perlu memanggil rute sebagai bagian dari transaksi yang lebih besar (misalnya, pengelola likuiditas yang menukar biaya untuk token target), melakukan CPI ke router lebih bersih daripada menggabungkan N CPI anak dan mengelola semua akunnya di kontrak Anda.
- Status akun atomik. Daftar akun setiap hop divalidasi dalam satu konteks instruksi. Jika status pool perantara rusak atau pernyataan limit-harga gagal, seluruh rute gagal secara atomik tanpa penyelesaian parsial.
- Komposisi instruksi tunggal. SDK dan frontend dapat mewakili rute multi-hop sebagai satu operasi logis, bukan sebagai N instruksi terpisah yang kebetulan berurutan.
Penyusunan sisi klien tetap menjadi standar
Untuk sebagian besar aplikasi, membangun instruksiSwap terpisah untuk setiap pool dan mengirimkannya secara berurutan lebih sederhana, lebih dapat dikomposisi, dan sama validnya. Alur Trade.makeSwapTransaction SDK Raydium dan serupa melakukan persis ini untuk sebagian besar rute.
Router adalah alternatif, bukan pengganti. Gunakan ketika:
- Anda mengimplementasikan program yang perlu routing sebagai bagian dari operasi atomik yang lebih besar.
- Anda membangun aggregator yang menginginkan operasi “kirim rute ini” tunggal.
Cara kerjanya
Instruksi router membawa:- Argumen swap: input tepat (
amount_in,minimum_amount_out) atau output tepat (maximum_amount_in,amount_out). - Spesifikasi rute: daftar
program_id+ akun program-anak untuk setiap hop, secara berurutan. Router membaca akun pertama di setiap grup hop untuk menentukan program mana yang akan dijalankan. - Limit prices (untuk CLMM):
VecDeque<u128>batassqrt_price_x64. Hanya digunakan untuk hop ke pool CLMM; deque kosong adalah kesalahan untuk varian instruksi yang lebih lama.
- Melaksanakan hop pertama: mentransfer
amount_in(atau menghitung input yang diperlukan untuk output tepat) ke vault input pool pertama, memanggil swap pool tersebut, dan mengumpulkan output. - Menghubungkan hop berikutnya: untuk setiap hop N, menggunakan output dari hop N−1 sebagai input untuk hop N.
- Menegakkan slippage: pada setiap hop CLMM, memeriksa
sqrt_priceterhadaplimit_priceyang sesuai; pada hop terakhir, memeriksa total output terhadapminimum_amount_outglobal.
Delegasi penetapan harga dan biaya
Router tidak menghitung harga sendiri. Setiap hop mendelegasikan ke kurva program anak:- AMM v4: menggunakan rumus produk konstan dengan penetapan harga hibrida OpenBook.
- CPMM: menggunakan rumus produk konstan dengan tingkat biaya yang dikonfigurasi.
- CLMM: menggunakan matematika likuiditas terkonsentrasi dengan penetapan harga berbasis tick.
- Stable: menggunakan kurva stable-swap untuk token sejenis.
Kapan menghindari router
- Jumlah hop rendah (1–2 hop). Overhead akun-passing minimal; cukup gunakan dua instruksi swap terpisah.
- Pool non-Raydium. Router hanya tahu tentang empat jenis pool Raydium. Untuk rute yang melintasi program eksternal, susun instruksi di klien Anda.
- Routing bersyarat. Jika Anda perlu melakukan cabang pada harga atau status pool di tengah rute, routing on-chain kurang fleksibel daripada komposisi sisi klien.
Model mental
Pikirkan router sebagai utilitas packing transaksi. Ia mengambil spesifikasi rute Anda dan mengemas ke dalam satu instruksi, satu transaksi, satu anggaran komputasi. Setiap hop secara internal melakukan CPI ke program pool-nya dan menangani matematika kurva di sana. Pekerjaan router adalah melewatkan akun dengan benar, memindahkan token antar hop, dan memeriksa slippage.Selanjutnya
products/routing/accounts— PDA otoritas rute dan pola akun bersama.products/routing/instructions— API instruksi lengkap (semua 10 varian).products/routing/code-demos— contoh membangun rute dalam TypeScript dan Rust mentah.integration-guides/routing-and-mev— strategi lebih luas untuk routing multi-hop.


