跳轉到主要內容

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.

本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →

什麼是交易 API?

Raydium 交易 API(Route V2)是一項伺服器端服務,可建構序列化的 Solana 交換交易,無需用戶端維護 RPC 連線或整合完整的 Raydium SDK。這大幅簡化了以下情境的整合:
  • 無法執行本地 RPC 用戶端的網頁前端
  • 資源受限的行動應用程式
  • 無介面交易機器人
  • 聚合器與錢包提供商
無須在用戶端執行複雜的池路由與交易建構,你可以向我們的 API 請求交換報價與交易建構,然後使用任何 Solana RPC 簽署並廣播結果。

工作流程概覽

交易 API 將工作分為兩個階段:

1. 計算階段:取得報價

呼叫 /compute/swap-base-in/compute/swap-base-out 以根據當前池狀態接收預期交換輸出(或所需輸入)。此端點為唯讀,不需要任何簽署:
GET /compute/swap-base-in?inputMint=EPjF...&outputMint=So111...&amount=1000000&slippageBps=50&txVersion=V0
回應包含:
  • 預期輸出金額
  • 路由明細(使用了哪些池與流動性來源)
  • 價格滑點

2. 交易階段:建構與簽署

取得計算回應後,將其(連同錢包和配置)傳遞至 /transaction/swap-base-in/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..."
}
回應包含:
  • Base64 編碼的已版本化交易,準備簽署
  • 地址查詢表地址(如果 txVersion=V0)
你的用戶端接著:
  1. 解碼交易
  2. 使用使用者的金鑰對簽署
  3. 透過任何 Solana RPC 廣播
  4. 等待確認

計算端點

GET /compute/swap-base-in

使用情景:使用者指定輸入金額,我們計算輸出。 必要的查詢參數
  • inputMint – 你要傳送的代幣鑄造地址
  • outputMint – 你要接收的代幣鑄造地址
  • amount – 輸入金額(最小單位 lamports)
  • slippageBps – 最大可接受滑點(基點,0–10000)
  • txVersionV0LEGACY
選用
  • referrerBps – 如果你有推薦人授權,作為推薦人費用收取的輸出基點數

GET /compute/swap-base-out

使用情景:使用者指定所需輸出,我們計算所需輸入。 必要的查詢參數
  • inputMintoutputMintamount(所需輸出)、slippageBpstxVersion
注意:base-out 不支援推薦人基點(尚未實現)。

交易端點

POST /transaction/swap-base-in

為固定輸入金額建構交易。 必要的請求體
  • wallet – 你的簽署錢包地址
  • swapResponse – 完整計算回應物件
  • txVersion – 交易版本
  • computeUnitPriceMicroLamports – 優先費用(微 lamports)
選用
  • wrapSol – 如為真,為輸入包裝原生 SOL
  • unwrapSol – 如為真,在輸出中解包 WSOL 為 SOL
  • inputAccount – 輸入代幣帳戶(若不包裝 SOL 則必需)
  • outputAccount – 輸出代幣帳戶
  • nonceInfo – 離線簽署用的持久 nonce
  • jitoInfo – Jito MEV 保護捆綁參數
  • referrerWallet – 推薦人錢包以收取費用

POST /transaction/swap-base-out

為固定輸出金額建構交易。 參數與 base-in 相同,除了:
  • referrerInfo 欄位目前已註解(尚未實現)

回應信封

所有端點都會傳回標準信封:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "success": true,
  "version": "V1",
  "data": { ... }
}
發生錯誤時,successfalsemsg 包含錯誤代碼(例如 REQ_WALLET_ERRORREQ_SLIPPAGE_BPS_ERROR)。

交易回應結構

成功的交易回應看起來像這樣:
{
  "id": "...",
  "success": true,
  "version": "V1",
  "data": {
    "transaction": "AgABB...",  // Base64 編碼的交易
    "addressLookupTableAddresses": ["Address1...", "Address2..."]  // 僅用於 V0
  }
}

整合範例

以下是虛擬代碼中的典型流程:
// 1. 取得報價
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. 驗證報價
if (!quote.success) {
  throw new Error(quote.msg);
}

// 3. 建構交易
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. 解碼並簽署
const transaction = VersionedTransaction.deserialize(
  Buffer.from(tx.data.transaction, 'base64')
);
transaction.sign([userKeypair]);

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

關鍵參數說明

txVersion

  • V0:現代 Solana 交易,具有地址查詢表 (ALT)。序列化大小較小,費用較低。
  • LEGACY:ALT 前交易格式。較大,但適用於所有 RPC 端點。
盡可能選擇 V0;如果你的 RPC 或錢包不支援 ALT,則回退到 LEGACY

computeUnitPriceMicroLamports

優先費用,以加快區塊包含。設置為 0 表示無優先費用,或設置為更高值(例如 1000)以在擁擠的網路中競爭。單位為每計算單位的微 lamports。

slippageBps

最大滑點容限(基點)。100 = 1%,50 = 0.5%。
  • 對大多數穩定交換使用較低值(例如 25–50 bps)
  • 對波動或低流動性代幣對增加

wrapSolunwrapSol

  • wrapSol:如為真,API 將你的原生 SOL 包裝為 WSOL。不需要 inputAccount
  • unwrapSol:如為真,API 在輸出中將 WSOL 解包為原生 SOL。不需要 outputAccount
如果兩者都為假,你必須提供明確的代幣帳戶。

網路端點

網路主網開發網
主機transaction-v1.raydium.iotransaction-v1-devnet.raydium.io
協定HTTPSHTTPS

錯誤代碼

常見的錯誤訊息:
代碼含義
REQ_SLIPPAGE_BPS_ERROR滑點無效或超出範圍
REQ_INPUT_MINT_ERROR輸入鑄造地址無效
REQ_OUTPUT_MINT_ERROR輸出鑄造地址無效
REQ_AMOUNT_ERROR金額不是有效數字
REQ_TX_VERSION_ERRORtxVersion 必須為 V0 或 LEGACY
REQ_WALLET_ERROR錢包地址無效
REQ_INPUT_ACCOUT_ERROR輸入代幣帳戶遺失或無效
REQ_OUTPUT_ACCOUT_ERROR輸出代幣帳戶遺失或無效
UNKNOWN_ERROR伺服器端錯誤;檢查你的請求參數

另見