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 →

Apa itu Transaction API?

Transaction API Raydium (Route V2) adalah layanan sisi server yang membangun transaksi swap Solana yang terserialisasi tanpa memerlukan klien untuk mempertahankan koneksi RPC atau menggabungkan seluruh SDK Raydium. Ini sangat menyederhanakan integrasi untuk:
  • Frontend web yang tidak dapat menjalankan klien RPC lokal
  • Aplikasi mobile dengan sumber daya terbatas
  • Bot trading tanpa antarmuka
  • Agregator dan penyedia dompet
Alih-alih melakukan perutean pool kompleks dan konstruksi transaksi di klien, Anda meminta kutipan swap dan pembuatan transaksi dari API kami, kemudian menandatangani dan menyiarkan hasilnya menggunakan RPC Solana apa pun.

Ikhtisar Alur Kerja

Transaction API memisahkan perhatian menjadi dua fase:

1. Fase Komputasi: Dapatkan Kutipan

Panggil /compute/swap-base-in atau /compute/swap-base-out untuk menerima output swap yang diharapkan (atau input yang diperlukan) berdasarkan status pool saat ini. Endpoint ini read-only dan tidak memerlukan penandatanganan apa pun:
GET /compute/swap-base-in?inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0
Respons mencakup:
  • Jumlah output yang diharapkan
  • Perincian rute (pool dan sumber likuiditas mana yang digunakan)
  • Dampak harga

2. Fase Transaksi: Bangun dan Tandatangani

Setelah Anda memiliki respons komputasi, teruskan ke /transaction/swap-base-in atau /transaction/swap-base-out (bersama dengan dompet dan konfigurasi):
POST /transaction/swap-base-in
Content-Type: application/json

{
  "wallet": "YourWalletAddress",
  "swapResponse": { ...response from /compute/swap-base-in },
  "txVersion": "V0",
  "computeUnitPriceMicroLamports": "1000",
  "wrapSol": false,
  "unwrapSol": false,
  "inputAccount": "TokenAccount1...",
  "outputAccount": "TokenAccount2..."
}
Respons berisi:
  • Transaksi versioned yang dikodekan base64 siap untuk ditandatangani
  • Alamat tabel pencarian alamat (jika txVersion=V0)
Klien Anda kemudian:
  1. Mendekode transaksi
  2. Menandatanganinya dengan keypair pengguna
  3. Menyiarkannya melalui RPC Solana apa pun
  4. Menunggu konfirmasi

Endpoint Komputasi

GET /compute/swap-base-in

Kasus penggunaan: Pengguna menentukan jumlah input, kami menghitung output. Parameter query yang diperlukan:
  • inputMint – Alamat mint token yang Anda kirim
  • outputMint – Alamat mint token yang Anda inginkan
  • amount – Jumlah input dalam lamport (unit terkecil)
  • slippageBps – Slippage maksimal yang dapat diterima dalam basis poin (0–10000)
  • txVersionV0 atau LEGACY
Opsional:
  • referrerBps – Jika Anda memiliki otoritas referrer, basis poin output untuk dikumpulkan sebagai biaya referrer

GET /compute/swap-base-out

Kasus penggunaan: Pengguna menentukan output yang diinginkan, kami menghitung input yang diperlukan. Parameter query yang diperlukan:
  • inputMint, outputMint, amount (output yang diinginkan), slippageBps, txVersion
Catatan: Tidak ada basis poin referrer untuk base-out (belum diimplementasikan).

Endpoint Transaksi

POST /transaction/swap-base-in

Membangun transaksi untuk jumlah input tetap. Isi yang diperlukan:
  • wallet – Alamat dompet penandatangan Anda
  • swapResponse – Seluruh objek respons komputasi
  • txVersion – Versi transaksi
  • computeUnitPriceMicroLamports – Biaya prioritas dalam mikro-lamport
Opsional:
  • wrapSol – Jika true, bungkus SOL native untuk input
  • unwrapSol – Jika true, buka bungkus WSOL menjadi SOL di output
  • inputAccount – Akun token untuk input (diperlukan jika tidak membungkus SOL)
  • outputAccount – Akun token untuk output
  • nonceInfo – Nonce tahan lama untuk penandatanganan offline
  • jitoInfo – Parameter paket perlindungan MEV Jito
  • referrerWallet – Dompet referrer untuk pengumpulan biaya

POST /transaction/swap-base-out

Membangun transaksi untuk jumlah output tetap. Parameter yang sama dengan base-in, kecuali:
  • Bidang referrerInfo saat ini dikomentari (belum diimplementasikan)

Amplop Respons

Semua endpoint mengembalikan amplop standar:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "success": true,
  "version": "V1",
  "data": { ... }
}
Saat error, success adalah false dan msg berisi kode error (misalnya, REQ_WALLET_ERROR, REQ_SLIPPAGE_BPS_ERROR).

Bentuk Respons Transaksi

Respons transaksi yang berhasil terlihat seperti:
{
  "id": "...",
  "success": true,
  "version": "V1",
  "data": {
    "transaction": "AgABB...",  // Base64-encoded transaction
    "addressLookupTableAddresses": ["Address1...", "Address2..."]  // For V0 only
  }
}

Contoh Integrasi

Berikut adalah alur khas dalam pseudocode:
// 1. Get quote
const quote = await fetch(
  'https://transaction-v1.raydium.io/compute/swap-base-in?' +
  'inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0'
).then(r => r.json());

// 2. Validate quote
if (!quote.success) {
  throw new Error(quote.msg);
}

// 3. Build transaction
const tx = await fetch(
  'https://transaction-v1.raydium.io/transaction/swap-base-in',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      wallet: userWalletAddress,
      swapResponse: quote,
      txVersion: 'V0',
      computeUnitPriceMicroLamports: '1000',
      inputAccount: userInputTokenAccount,
      outputAccount: userOutputTokenAccount,
    }),
  }
).then(r => r.json());

// 4. Decode and sign
const transaction = VersionedTransaction.deserialize(
  Buffer.from(tx.data.transaction, 'base64')
);
transaction.sign([userKeypair]);

// 5. Send via RPC
const rpc = new Connection('https://api.mainnet-beta.solana.com');
const sig = await rpc.sendTransaction(transaction);
await rpc.confirmTransaction(sig);

Parameter Utama Dijelaskan

txVersion

  • V0: Transaksi Solana modern dengan Address Lookup Tables (ALTs). Ukuran serialisasi lebih kecil, biaya lebih rendah.
  • LEGACY: Format transaksi pre-ALT. Lebih besar, tetapi berfungsi dengan semua endpoint RPC.
Pilih V0 jika memungkinkan; jatuh kembali ke LEGACY jika RPC atau dompet Anda tidak mendukung ALTs.

computeUnitPriceMicroLamports

Biaya prioritas untuk penyertaan blok yang lebih cepat. Atur ke 0 untuk tidak ada biaya prioritas, atau nilai yang lebih tinggi (misalnya, 1000) untuk bersaing di jaringan yang ramai. Unit adalah mikro-lamport per unit komputasi.

slippageBps

Toleransi slippage maksimal dalam basis poin. 100 = 1%, 50 = 0,5%.
  • Gunakan nilai yang lebih rendah (misalnya, 25–50 bps) untuk swap yang paling stabil
  • Tingkatkan untuk pasangan volatile atau likuiditas rendah

wrapSol dan unwrapSol

  • wrapSol: Jika true, API membungkus SOL native Anda menjadi WSOL. Tidak perlu inputAccount.
  • unwrapSol: Jika true, API membuka bungkus WSOL output kembali ke SOL native. Tidak perlu outputAccount.
Jika keduanya false, Anda harus menyediakan akun token eksplisit.

Endpoint Jaringan

JaringanMainnetDevnet
Hosttransaction-v1.raydium.iotransaction-v1-devnet.raydium.io
ProtocolHTTPSHTTPS

Kode Error

Pesan error umum:
KodeArti
REQ_SLIPPAGE_BPS_ERRORSlippage tidak valid atau di luar jangkauan
REQ_INPUT_MINT_ERRORAlamat mint input tidak valid
REQ_OUTPUT_MINT_ERRORAlamat mint output tidak valid
REQ_AMOUNT_ERRORJumlah bukan angka yang valid
REQ_TX_VERSION_ERRORtxVersion harus V0 atau LEGACY
REQ_WALLET_ERRORAlamat dompet tidak valid
REQ_INPUT_ACCOUT_ERRORAkun token input hilang atau tidak valid
REQ_OUTPUT_ACCOUT_ERRORAkun token output hilang atau tidak valid
UNKNOWN_ERRORError sisi server; periksa parameter permintaan Anda

Lihat Juga