DEX API

跨链兑换#

获取跨链兑换所需的交易数据。

请求地址#

GET https://www.okx.com/api/v5/dex/cross-chain/build-tx

请求参数#

参数类型必传描述
fromChainIdString源链 ID (如1: Ethereum,更多可查看链 ID 列表)
toChainIdString目标链 ID (如1: Ethereum,更多可查看链 ID 列表)
fromTokenAddressString询价币种合约地址 (如0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
toTokenAddressString目标币种合约地址 (如TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8)
amountString币种询价数量 币种询价数量
(数量需包含精度,如授权 1.00 USDT 需输入 1000000,授权 1.00 DAI 需输入 1000000000000000000),币种精度可透过币种列表取得
sortInteger跨链路径选择

0 代表默认路径,是预计获得数量最多的路径

1 代表综合最优路径,是综合计算获得数量、网络费用、滑点、跨链桥费后的最优路径

2 代表最快路径,是耗时最少的路径
slippageString滑点限制,最小值:0.002,最大值:0.5。(如:0.005代表你接受这笔交易最大 0.5%滑点,0.5 就代表你接受这笔交易最大 50%的滑点)
1. 如果只通过跨链桥把同一个token X 从A链跨到b链,推荐滑点设定0.002
2. 如果除了通过跨链桥把token X 从A链跨到b链,还涉及到其他币别转换,推荐滑点设定0.01-0.025,实际滑点设置需同时考量币别交易量
userWalletAddressString用户钱包地址,AA钱包地址暂不支持跨链交易 (如0x6f9ffea7370310cd0f890dfde5e0e061059dcfd9)
allowBridgeArray指定该跨链桥是否包含在路径里面 (如[211,235])
denyBridgeArray指定该跨链桥是否不包含在路径里面 (如[211,235])
receiveAddressString用于自定义设置目标币种的接收地址,如果未设置则返回用户发送交易的钱包地址。TRON, SUI 以及其他非EVM链,需要设置自定义接收地址。 (如:0x3f6a3f57569358a512ccc0e513f171516b0fd42a)
feePercentString发送到分佣地址的询价币种数量百分比 最小百分比:0 最大百分比:3
referrerAddressString分佣地址 (如:0x6f9ffea7370310cd0f890dfde5e0e061059dcfd9)
收取分佣费用的 fromToken 地址。使用 API 时,可结合 feePercent 设置佣金比例。
注意:
1. 对于EVM:此处不支持涉及打包币对的交易,例如 ETH 和 WETH 的交易
2. 对于Solana:分佣地址需提前存入一些SOL进行激活。
priceImpactProtectionPercentageString(可选,默认值为 90%) 允许的价格影响百分比 (介于 0 和 1.0 之间)。

当用户设置了 priceImpactProtectionPercentage 后,如果估算的价格影响超过了指定的百分比,将会返回一个错误。例如,如果 PriceImpactProtectionPercentage = .25 (25%),任何价格影响高于 25% 的报价都将返回错误。

这是一个可选开启的功能,默认值为 0.9。当百分比被设置为 1.0 (100%) 时,此功能将被禁用,也就是说,每一笔交易都会被允许通过。

注意:当我们无法计算价格影响时,我们会返回 null,并且价格影响保护也会被禁用。
onlyBridgeboolean仅通过跨链桥完成跨链交易,不涉及源链兑换以及目标链兑换。
memoString你可以自定义 /build-tx 中携带的参数,数据编码为长度固定为 64 字节、128 个字符长度的 16 进制字符串,并可通过 /status API 查询。

响应参数#

参数类型描述
fromTokenAmountString询价币种的兑换数量
(数量需包含精度,如 1.00 USDT 则为 1000000)
toTokenAmountString目标币种的兑换数量
(数量需包含精度,如 1.00 USDT 则为 1000000)
minmumReceiveString目标币种的最小兑换数量 (兑换价格达到滑点限制的极限值时,目标币种的兑换数量)
routerObject跨链桥基础信息
bridgeIdInteger跨链桥 ID (如:211)
bridgeNameString跨链桥名称 (如: cBridge)
otherNativeFeeString部分跨链桥会额外收取一定数量的源链主网币,作为跨链桥手续费,并不是所有跨链桥都会收取该部分费用。目前收取该费用的跨链桥有 Stargate、Wanchain、Arbitrum 官方桥、zkSync Era 官方桥、Linea 官方桥。 使用该三方桥需支付otherNativeFee才能完成交易。
crossChainFeeString跨链桥收取的费用,一般为稳定币或者WETH
crossChainFeeTokenAddressString跨链桥费币种信息(如:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE 代表主网代币地址)
txObject交易上链所需的数据信息
dataString上链 inputData 数据
fromString用户钱包地址 (如:0x6f9ffea7370310cd0f890dfde5e0e061059dcfd9)
toString欧易 DEX router 合约地址 (如:0x6dc1fb08decf9f95a01222baa359aa0e02e07716)
valueString与合约交互的主链币数量 (wei) (如:0)
gasLimitStringgas费用限额 (交易的gas (单位:wei)。如果该值太低,无法实现报价,则会返回错误信息) (如:50000)
gasPriceString以 wei 位单位的 Gas price (如:110000000)
maxPriorityFeePerGasStringEIP-1559:每单位 gas 优先费用的推荐值 (如:500000000)
randomKeyAccountArray随机私钥账户参数并不是每次交易都需要。仅在某些特殊交易(例如使用CCTP桥进行代币跨链)时,才会生成和返回这个随机私钥账户。提供此参数时,您必须使用它与用户的钱包私钥一起进行多签操作,以确保交易的安全和顺利完成。点击此处查看多签示例
signatureDataArray如果返回此参数,则代表该交易需要额外的签名数据。开发者应将此参数作为交易签名的输入之一,并确保其在签名过程中正确应用。

请求示例#

shell
curl --location --request GET 'https://www.okx.com/api/v5/dex/cross-chain/build-tx?amount=15&fromChainId=324&toChainId=42161&fromTokenAddress=0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4&toTokenAddress=0xff970a61a04b1ca14834a43f5de4533ebddb5cc8&slippage=0.07&userWalletAddress=0x22497668Fb12BA21E6A132de7168D0Ecc69cDF7d&feePercent=1&referrerAddress=0x3f6a3f57569358a512ccc0e513f171516b0fd42a' \
--header 'OK-ACCESS-PROJECT: 86af********d1bc' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z'

响应示例#

200
{
  "code":0,
  "msg":"",
  "data":
  [
    {
      "fromTokenAmount": "1000000000000",
      "router": {
          "bridgeId": 235,
          "bridgeName": "swft",
          "crossChainFee": "4.67131461",
          "otherNativeFee": "1.50000000",
          "crossChainFeeTokenAddress": "0x6b175474e89094c44da98b954eedeac495271d0f"
      },
      "toTokenAmount": "1000000000000",
      "minmumReceive": "1000000000000",
      "tx":{
          "data":"0xc748673057861a797275cd8a068abb95a902e8de",
          "from":"0x6dc1fb08decf9f95a01222baa359aa0e02e07716",
          "to":"0x6dc1fb08decf9f95a01222baa359aa0e02e07716",
          "value":0,
          "gasLimit":"442621",
          "gasPrice":"3192374970",
          "maxPriorityFeePerGas":"3599"
          "randomKeyAccount":["xxxxxxx0x6dc1fb08decf9f95a01222baa359aa0e02e079999"]
      }
    }
  ]
}