Langsung ke konten utama

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 →

Tata letak akun: user ATAs di seluruh rute

Setiap varian swap yang diaktifkan merutekan token antara melalui ATAs yang dikendalikan pengguna. Pengguna memiliki input ATA, setiap ATA antara, dan output ATA akhir. Tidak ada akun token antara yang dimiliki router/bersama di permukaan aktif. Properti:
  • Pengguna memiliki satu ATA per token antara.
  • Pengguna menyediakan setiap ATA dalam daftar akun.
  • Setiap ATA antara harus sudah ada (inisialisasi dengan CreateSyncNative untuk wSOL, atau melalui program SPL Associated Token Account untuk mint lainnya, sebelum routing).
  • Router mentransfer keluar dari satu ATA dan masuk ke vault pool berikutnya pada setiap hop.
  • Setiap ATA antara mengakhiri setiap rute dengan saldo yang sama dengan awal — rute mengkonsumsi apa pun yang dihasilkan hop sebelumnya.
Contoh alur untuk rute USDC → SOL → STEP:
Accounts list:
  [
    USDC_input_ata (user, signer),
    SOL_intermediate_ata (user),
    STEP_output_ata (user),
    token_program,

    amm_program_1, *amm1_accounts,    // hop 1: USDC → SOL
    amm_program_2, *amm2_accounts,    // hop 2: SOL → STEP
  ]

Hop 1: USDC_input_ata → AMM1 → SOL_intermediate_ata
Hop 2: SOL_intermediate_ata → AMM2 → STEP_output_ata

Tata letak akun per hop

Akun setiap hop diteruskan berturut-turut. Router mengidentifikasi program child dengan membaca akun pertama dalam blok hop setiap hop (ID program), kemudian mengirim ke handler yang benar. Untuk setiap hop, router mengharapkan akun yang dikelompokkan sebagai:
[
  program_id,         // Identifies which pool program (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // All accounts required by that pool's swap instruction
]
Akun child bervariasi berdasarkan tipe pool:

Hop AMM v4

Sekitar 18 akun: pool, authority, vaults, mints, akun pasar OpenBook (disimpan dalam daftar akun untuk kompatibilitas mundur meskipun integrasi OpenBook AMM v4 tidak lagi aktif), program token. Lihat products/amm-v4/accounts untuk daftar lengkap.

Hop CPMM

Sekitar 11–13 akun: state pool, authority, vaults (2), mints (2), program token, system program, associated token program. Lihat products/cpmm/accounts.

Hop CLMM

Sekitar 15+ akun: pool, tick arrays, vaults, mints, observation state, signer, program token. Lihat products/clmm/accounts.

Hop Stable

Mirip dengan AMM v4. Lihat products/stable/accounts.

Alur token dan kepemilikan ATA

  • Pemanggil menandatangani dengan user_input_ata.
  • Pemanggil harus memiliki semua input, ATA antara, dan output. Router akan menolak transaksi jika pemilik ATA antara mana pun bukan penandatangan.
  • Saldo user_input_ata pemanggil harus cukup untuk input hop pertama (amount_in untuk tag 0 / 8, atau maximum_amount_in untuk tag 1 / 9).
  • Setiap ATA antara harus sudah ada on-chain. Jika tidak, buat sebelumnya — biasanya melalui program SPL Associated Token Account, atau dengan CreateSyncNative (tag 5) untuk ATA wSOL.

Instruksi CreateSyncNative

Jika Anda perlu merutekan melalui SOL terbungkus dan tidak ingin membuat dan menyinkronkan ATA wSOL secara manual, gunakan CreateSyncNative (tag 5):
CreateSyncNative(amount)
Ini membuat ATA wSOL di bawah dompet pemanggil, mentransfer amount SOL ke dalamnya melalui System Program, dan menyinkronkannya dalam satu instruksi. Berguna untuk menginisialisasi ATA wSOL baru sebelum routing.

Instruksi CloseTokenAccount

Setelah rute selesai, Anda mungkin ingin menutup ATA antara apa pun — paling umum ATA wSOL — untuk merebut kembali rent. Gunakan CloseTokenAccount (tag 6):
CloseTokenAccount
Token account harus memiliki saldo token nol sebelum ditutup; router tidak akan mengosongkannya secara otomatis untuk Anda.

Ke mana selanjutnya