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 →
Halaman ini adalah referensi instruksi otoritatif untuk program AMM Routing. Untuk contoh kode, lihat
products/routing/code-demos. Untuk penjelasan kesalahan, lihat reference/error-codes.Ringkasan instruksi
| Tag | Discriminator | Eksak | Varian |
|---|---|---|---|
| 0 | SwapBaseInWithUserAccount | Input | Legacy |
| 1 | SwapBaseOutWithUserAccount | Output | Legacy |
| 5 | CreateSyncNative | — | Utilitas |
| 6 | CloseTokenAccount | — | Utilitas |
| 8 | SwapBaseIn | Input | Saat Ini |
| 9 | SwapBaseOut | Output | Saat Ini |
- Eksak: jumlah mana yang ditetapkan oleh pemanggil (Input = exact-input
amount_in; Output = exact-outputamount_out). - Varian: Instruksi Legacy memerlukan
limit_pricesdeque yang tidak kosong bahkan jika tidak ada hop CLMM dalam rute. Instruksi Saat Ini (8 / 9) memperlakukanlimit_priceskosong sebagai “tidak ada pemeriksaan”, yang merupakan jalur yang disarankan untuk kode baru.
SwapBaseIn) atau tag 9 (SwapBaseOut) kecuali Anda memiliki alasan khusus untuk memanggil varian Legacy.
Instruksi swap saat ini (direkomendasikan)
Ini adalah titik masuk yang harus digunakan oleh kode baru. Struktur argumen sama dengan varian Legacy tetapilimit_prices dapat kosong.
SwapBaseIn (tag 8)
Swap multi-hop dengan input-eksak. Pemanggil menetapkan amount_in; router menjalankan hop-by-hop dan menegaskan bahwa jumlah akhir mencapai atau melampaui minimum_amount_out.
Argumen
- Pemanggil menandatangani dengan
user_input_ata. user_input_ata.amount >= amount_in.- Setiap ATA pengguna intermediate ada dan dimiliki oleh pemanggil.
- Jika ada hop yang merupakan CLMM dan Anda menginginkan penegakan terikat harga, berikan satu entri
limit_pricesper hop CLMM.
- Saldo
user_input_ataberkurang sebesaramount_in. - Saldo
user_output_atameningkat sebesar ≥minimum_amount_out. - Setiap ATA intermediate dibiarkan tanpa perubahan bersih (rute menggunakan apapun yang dihasilkannya satu hop sebelumnya).
ExceededSlippage— output akhir <minimum_amount_out.InvalidInput— rute kosong, akun tidak terformat, ataupool_programtidak didukung.SqrtPriceX64— harga hop CLMM bergerak di luar bataslimit_pricesyang disediakan (hanya ketikalimit_pricestidak kosong).
SwapBaseOut (tag 9)
Swap multi-hop dengan output-eksak. Pemanggil menetapkan amount_out; router menegaskan bahwa input aktual tidak melebihi maximum_amount_in.
Argumen
- Pemanggil menandatangani dengan
user_input_ata; saldo>= maximum_amount_in(kasus terburuk). - Setiap ATA intermediate dan output ada.
user_input_ataberkurang sebesar jumlah aktual yang diperlukan (≤maximum_amount_in).user_output_atameningkat sebesaramount_outsecara tepat.
ExceededSlippage— input yang diperlukan melebihimaximum_amount_in.InvalidInput,SqrtPriceX64— seperti untuk tag 8.
Instruksi swap legacy
Varian yang lebih lama ini masih dapat dipanggil pada program aktif dan didokumentasikan di sini untuk kelengkapan. Lebih suka tag 8 / tag 9 untuk kode baru; kedua varian Legacy di bawah memerlukanlimit_prices deque yang tidak kosong bahkan ketika tidak ada hop CLMM yang terlibat, yang membuatnya sulit untuk digunakan.
SwapBaseInWithUserAccount (tag 0)
Swap multi-hop dengan input-eksak, identik dalam bentuk ke tag 8 tetapi dengan persyaratan limit_prices yang lebih ketat.
Argumen
SwapBaseIn (tag 8). Semua slot intermediate harus berupa ATA yang dimiliki oleh pemanggil.
Kondisi pra-eksekusi
- Pemanggil menandatangani dengan
user_input_ata. user_input_ata.amount >= amount_in.- Semua ATA pengguna intermediate ada dan dimiliki oleh pemanggil.
limit_pricestidak kosong (satu entri per hop CLMM; isi dengan nilai placeholder jika tidak ada hop CLMM yang terlibat).
- Saldo
user_input_ataberkurang sebesaramount_in. - Saldo
user_output_atameningkat sebesar ≥minimum_amount_out.
ExceededSlippage.InvalidInput—limit_priceskosong ditolak pada varian Legacy ini.SqrtPriceX64.
SwapBaseOutWithUserAccount (tag 1)
Swap dengan output-eksak, varian Legacy yang sesuai dengan SwapBaseOut (tag 9).
Argumen
- Pemanggil menandatangani dengan
user_input_ata. user_input_ata.amount >= maximum_amount_in.- Semua ATA pengguna intermediate ada dan dimiliki oleh pemanggil.
limit_pricestidak kosong.
user_input_ataberkurang sebesar jumlah aktual yang diperlukan (≤maximum_amount_in).user_output_atameningkat sebesaramount_outsecara tepat.
ExceededSlippage.InvalidInput.SqrtPriceX64.
Instruksi utilitas
CreateSyncNative (tag 5)
Buat (jika tidak ada) dan sinkronkan ATA wSOL dalam satu langkah. Nyaman ketika membungkus SOL secara inline bersama swap.
Argumen
- Membuat
user_wsol_atajika belum ada. - Mentransfer
amountlamports dari saldo SOL asli penandatangan ke ATA. - Memanggil
SyncNativepada ATA sehingga saldo tokennya mencerminkan lamports baru.
InvalidOwner— pemilikuser_wsol_atabukan penandatangan.
CloseTokenAccount (tag 6)
Tutup akun token dan kembalikan rentnya ke dompet tujuan. Berpasangan dengan CreateSyncNative: setelah swap leg wSOL, panggil CloseTokenAccount untuk memulihkan rent yang mendukung ATA wSOL.
Argumen — tidak ada.
Akun
- Menutup
token_account_to_close. - Mentransfer saldo lamports yang bebas rent (~0.00203928 SOL di mainnet untuk akun SPL Token vanilla) ke
destination_for_rent. - Akun token harus memiliki saldo token nol.
InvalidOwner— pemanggil bukan pemilik ATA.- Saldo akun token tidak nol.
Ke mana selanjutnya
products/routing/code-demos— membangun setiap instruksi ini dalam TypeScript.products/routing/accounts— kunci dispatch per-AMM dan tata letak akun per-hop.reference/error-codes— daftarRouteErrorlengkap.


