Chuyển đến nội dung chính

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.

Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →

Transaction API là gì?

Raydium Transaction API (Route V2) là một dịch vụ trên máy chủ giúp xây dựng các giao dịch swap Solana đã được tuần tự hóa mà không cần các ứng dụng khách phải duy trì kết nối RPC hoặc tích hợp toàn bộ SDK Raydium. Điều này giúp đơn giản hóa đáng kể quá trình tích hợp cho:
  • Các giao diện web không thể chạy một RPC client cục bộ
  • Ứng dụng di động có tài nguyên hạn chế
  • Các bot giao dịch không có giao diện
  • Các aggregator và nhà cung cấp ví
Thay vì thực hiện định tuyến pool và xây dựng giao dịch phức tạp trên client, bạn yêu cầu báo giá swap và xây dựng giao dịch từ API của chúng tôi, sau đó ký và phát sóng kết quả bằng bất kỳ RPC Solana nào.

Tổng quan quy trình làm việc

Transaction API chia công việc thành hai giai đoạn:

1. Giai đoạn tính toán: Lấy báo giá

Gọi /compute/swap-base-in hoặc /compute/swap-base-out để nhận kết quả swap dự kiến (hoặc input yêu cầu) dựa trên trạng thái pool hiện tại. Endpoint này chỉ đọc và không yêu cầu bất kỳ ký kết nào:
GET /compute/swap-base-in?inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0
Phản hồi bao gồm:
  • Số lượng output dự kiến
  • Chi tiết tuyến đường (những pool và nguồn thanh khoản nào được sử dụng)
  • Tác động giá

2. Giai đoạn giao dịch: Xây dựng và ký

Sau khi có phản hồi từ compute, chuyển nó (cùng với ví và cấu hình) đến /transaction/swap-base-in hoặc /transaction/swap-base-out:
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..."
}
Phản hồi chứa:
  • Một giao dịch được mã hóa base64 sẵn sàng ký
  • Địa chỉ bảng tra cứu địa chỉ (nếu txVersion=V0)
Ứng dụng khách của bạn sau đó:
  1. Giải mã giao dịch
  2. Ký nó bằng keypair của người dùng
  3. Phát sóng nó qua bất kỳ RPC Solana nào
  4. Chờ xác nhận

Các endpoint tính toán

GET /compute/swap-base-in

Trường hợp sử dụng: Người dùng chỉ định số lượng input, chúng tôi tính toán output. Tham số truy vấn bắt buộc:
  • inputMint – Địa chỉ mint của token bạn gửi
  • outputMint – Địa chỉ mint của token bạn muốn
  • amount – Số lượng input tính bằng lamports (đơn vị nhỏ nhất)
  • slippageBps – Slippage tối đa chấp nhận tính bằng basis points (0–10000)
  • txVersionV0 hoặc LEGACY
Tùy chọn:
  • referrerBps – Nếu bạn có quyền referrer, basis points của output để thu phí referrer

GET /compute/swap-base-out

Trường hợp sử dụng: Người dùng chỉ định output mong muốn, chúng tôi tính toán input yêu cầu. Tham số truy vấn bắt buộc:
  • inputMint, outputMint, amount (output mong muốn), slippageBps, txVersion
Lưu ý: Không có basis points referrer cho base-out (chưa được triển khai).

Các endpoint giao dịch

POST /transaction/swap-base-in

Xây dựng một giao dịch cho một số lượng input cố định. Body bắt buộc:
  • wallet – Địa chỉ ví ký của bạn
  • swapResponse – Toàn bộ đối tượng phản hồi compute
  • txVersion – Phiên bản giao dịch
  • computeUnitPriceMicroLamports – Phí ưu tiên tính bằng micro-lamports
Tùy chọn:
  • wrapSol – Nếu true, gói SOL native cho input
  • unwrapSol – Nếu true, mở gói WSOL thành SOL trong output
  • inputAccount – Token account cho input (bắt buộc nếu không gói SOL)
  • outputAccount – Token account cho output
  • nonceInfo – Nonce bền vững cho ký ngoại tuyến
  • jitoInfo – Tham số gói bảo vệ MEV Jito
  • referrerWallet – Ví referrer để thu phí

POST /transaction/swap-base-out

Xây dựng một giao dịch cho một số lượng output cố định. Các tham số giống như base-in, ngoại trừ:
  • Trường referrerInfo hiện đang được ghi chú (chưa được triển khai)

Phần đóng gói phản hồi

Tất cả các endpoint trả về một phần đóng gói chuẩn:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "success": true,
  "version": "V1",
  "data": { ... }
}
Khi lỗi xảy ra, successfalsemsg chứa mã lỗi (ví dụ: REQ_WALLET_ERROR, REQ_SLIPPAGE_BPS_ERROR).

Hình dạng phản hồi giao dịch

Một phản hồi giao dịch thành công trông như sau:
{
  "id": "...",
  "success": true,
  "version": "V1",
  "data": {
    "transaction": "AgABB...",
    "addressLookupTableAddresses": ["Address1...", "Address2..."]
  }
}

Ví dụ tích hợp

Đây là một luồng điển hình dưới dạng pseudocode:
// 1. Lấy báo giá
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. Xác thực báo giá
if (!quote.success) {
  throw new Error(quote.msg);
}

// 3. Xây dựng giao dịch
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. Giải mã và ký
const transaction = VersionedTransaction.deserialize(
  Buffer.from(tx.data.transaction, 'base64')
);
transaction.sign([userKeypair]);

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

Các tham số chính được giải thích

txVersion

  • V0: Giao dịch Solana hiện đại với Address Lookup Tables (ALTs). Kích thước tuần tự hóa nhỏ hơn, phí thấp hơn.
  • LEGACY: Định dạng giao dịch trước ALT. Lớn hơn, nhưng hoạt động với tất cả các endpoint RPC.
Chọn V0 khi có thể; quay lại LEGACY nếu RPC hoặc ví của bạn không hỗ trợ ALTs.

computeUnitPriceMicroLamports

Phí ưu tiên để đưa vào block nhanh hơn. Đặt thành 0 để không có phí ưu tiên, hoặc các giá trị cao hơn (ví dụ: 1000) để cạnh tranh trong các mạng lưới bị tắc nghẽn. Đơn vị là micro-lamports cho mỗi compute unit.

slippageBps

Dung sai slippage tối đa tính bằng basis points. 100 = 1%, 50 = 0,5%.
  • Sử dụng giá trị thấp hơn (ví dụ: 25–50 bps) cho hầu hết các swap ổn định
  • Tăng lên cho các cặp biến động hoặc thanh khoản thấp

wrapSolunwrapSol

  • wrapSol: Nếu true, API gói SOL native của bạn thành WSOL. Không cần inputAccount.
  • unwrapSol: Nếu true, API mở gói WSOL output trở lại SOL native. Không cần outputAccount.
Nếu cả hai đều là false, bạn phải cung cấp các token account rõ ràng.

Các endpoint mạng

MạngMainnetDevnet
Hosttransaction-v1.raydium.iotransaction-v1-devnet.raydium.io
Giao thứcHTTPSHTTPS

Mã lỗi

Các thông báo lỗi phổ biến:
Ý nghĩa
REQ_SLIPPAGE_BPS_ERRORSlippage không hợp lệ hoặc ngoài phạm vi
REQ_INPUT_MINT_ERRORĐịa chỉ input mint không hợp lệ
REQ_OUTPUT_MINT_ERRORĐịa chỉ output mint không hợp lệ
REQ_AMOUNT_ERRORSố lượng không phải là một số hợp lệ
REQ_TX_VERSION_ERRORtxVersion phải là V0 hoặc LEGACY
REQ_WALLET_ERRORĐịa chỉ ví không hợp lệ
REQ_INPUT_ACCOUT_ERRORInput token account bị thiếu hoặc không hợp lệ
REQ_OUTPUT_ACCOUT_ERROROutput token account bị thiếu hoặc không hợp lệ
UNKNOWN_ERRORLỗi phía máy chủ; kiểm tra tham số yêu cầu của bạn

Xem thêm