Trading API 提供跨去中心化交易所的代币报价、兑换和授权服务,自动选择最优路径完成代币交换。同时支持权益代币交易(RWA / 真实世界资产,包括 Ondo 和 BStock 股票代币)的 RFQ(询价订单)流程。
功能概览
| 功能 | 接口 | 方法 | 描述 |
|---|---|---|---|
| 支持的链 | /api/v1/dex/aggregator/supported/chain | GET | 查询支持的区块链网络 |
| 获取报价 | /api/v1/dex/aggregator/quote | GET | 获取代币兑换报价(支持 SWAP 和 RFQ 两种模式) |
| 执行兑换 | /api/v1/dex/aggregator/swap | GET | 生成兑换交易数据或 RFQ 待签名数据 |
| 一步询价并兑换 | /api/v1/dex/aggregator/quote-and-swap | GET | 单次调用同时获取报价并构造兑换交易(无需 quoteId) |
| 授权交易 | /api/v1/dex/aggregator/approve-transaction | GET | 生成代币授权交易数据 |
| 获取交易状态 | /api/v1/dex/aggregator/history | GET | 通过 txHash 查询 DEX 兑换交易状态 |
| 提交 RFQ 订单 | /api/v1/dex/aggregator/order/submit | POST | 提交已签名的 RFQ 订单(仅权益代币使用) |
| 查询 RFQ 订单状态 | /api/v1/dex/aggregator/order/{orderId} | GET | 轮询 RFQ 订单结算状态 |
执行模式
/quote 响应中的 executionMode 字段决定后续交易流程:
| 模式 | 适用代币类型 | 流程说明 |
|---|---|---|
SWAP | 普通加密货币代币 | 对 /swap 返回的 tx 签名后直接广播到链上 |
RFQ | 权益代币(Ondo、BStock 等) | 对 /swap 返回的 rfq.typedDataToSign 做 EIP-712 签名,通过 /order/submit 提交,轮询 /order/{orderId} |
权益代币交易(RWA)
Trading API 支持代币化权益资产(真实世界资产),包括:
- Ondo 代币(type=1):代币化股票和 ETF(如 NKEon/耐克、NVDAon/英伟达、EEMon/iShares
ETF)。始终通过 3-vendor RFQ(InchFusion + CowSwap + PcsXRfq)路由,所有路由返回
executionMode=RFQ。 - BStock 代币(type=3):交易所上市股票代币(如 PALLon/钯金、TSLAB/特斯拉)。通过 LiquidMesh(SWAP)+ PcsXRfq(RFQ)混合路由,同一次询价可能同时返回一条 SWAP 路由和一条 RFQ 路由。
注意:Ondo 和 BStock 代币集严格互斥,同一个代币只属于其中一种类型。
SWAP 模式流程(普通代币及 BStock LiquidMesh 路由)
Code
Flash API 流程(延迟敏感)
对延迟敏感且已知 vendor 的交易用户,可直接调用 /quote-and-swap,单次请求返回可执行的calldata /
swapTransaction,跳过 /quote 步骤,比上述两步走少一次 HTTP 往返。当前 vendor 参数仅支持
LiquidMesh。
Code
RFQ 模式流程(Ondo 代币及 BStock PcsXRfq 路由)
Code
权益代币交易关键约束
| 约束条件 | 详情 |
|---|---|
userWalletAddress | RFQ 路由时 /quote 必填。该地址将作为 RFQ 订单的接收方。 |
quoteId 有效期 | 30 秒。需在 /quote 后 30 秒内调用 /swap,否则返回 QUOTE_EXPIRED(40401)。 |
| EIP-712 签名 | 对 /swap 返回的 rfq.typedDataToSign 签名,签名钱包须与 userWalletAddress 一致。 |
/approve-transaction 的 vendor | 权益代币必填,从 /quote 响应的 vendorName 字段取值。 |
幂等性(requestId) | 重试 /order/submit 时复用同一 UUID;使用新 UUID 会创建新订单。 |
| 交易时段 | Ondo 代币在美股非交易时段可能不可用(错误码 40367);BStock 同理(40369)。 |
自定义手续费(Add Fee / 分佣)
兑换 API 支持链上原子的自定义手续费(分佣 / 收益分成)能力:按可配置百分比从兑换中扣除一笔手续费,链上原子地打入你指定的钱包地址,其余部分照常走 DEX 路由。适合需要收取平台手续费或与推广方分佣的集成商。
支持的链。 同时支持 EVM 链(BSC、Ethereum、Base 等)与 Solana(CT_501),覆盖
/quote、/swap、/quote-and-swap 以及 Solana 专用的 /swap-instruction。
工作方式。 支持两个方向,由传入的参数决定:
| 方向 | 询价阶段(/quote) | 兑换阶段(/swap、/quote-and-swap) | 效果 |
|---|---|---|---|
FROM_TOKEN | feeSource=FROM_TOKEN | fromTokenReferrerWalletAddress(非空) | 从卖出币种扣 fee,净额送入 DEX 兑换;用户拿到 DEX 全额输出。 |
TO_TOKEN | feeSource=TO_TOKEN | toTokenReferrerWalletAddress(非空) | 输入额全额参与兑换;从买入币种输出扣 fee,用户拿到 DEX 输出扣减手续费后的金额。 |
参数搭配。
/quote:feePercent+feeSource(要么同时传,要么同时省略)。/swap、/quote-and-swap、/swap-instruction:feePercent+fromTokenReferrerWalletAddress/toTokenReferrerWalletAddress中的一个(两个 referrer 地址互斥,二选一)。
限制。 feePercent 为十进制字符串,EVM 链范围 (0, 5]、Solana 链范围
(0, 10],最多 2 位小数(如 "1.5" = 1.5%);超过 2 位小数返回
INVALID_FEE_PERCENT(40466)。referrer 地址格式须符合当前链——EVM 为 0x +
40 位 hex,Solana 为 Base58 公钥,否则返回
INVALID_REFERRER_ADDRESS(40467)。同时传入两个 referrer 地址返回
CONFLICT_REFERRER_PARAMS(40468)。Solana 链要求 referrer 地址已激活(持有少量 SOL 余额),否则返回
REFERRER_NOT_ACTIVATED(40469)。
询价 ↔ 兑换一致性。 使用两步走流程时,/swap 传入的 referrer 地址所隐含的方向与 feePercent
数值必须与该 quoteId 在 /quote 缓存中锁定的一致,否则返回 SWAP_QUOTE_MISMATCH(40462)。
/quote-and-swap Flash API 无前置询价,fee 完全由本次请求决定。
响应回显。 开启手续费时,/quote、/swap、/quote-and-swap、/swap-instruction
的响应会在每条路由 / routerResult
下返回三个字段:feeAmount(扣除的手续费金额,整数字符串)、feeToken(手续费计价币种合约地址)、
actualSwapAmount(实际参与 DEX 兑换的金额)。未开启手续费时三者均为 null。
RFQ 路由。 权益 / RWA 代币(Ondo、BStock)的 RFQ 路由忽略 fee 参数,按无手续费的常规 RFQ 订单执行。