SwapBox V2 接口文档

SwapBox多链资产智能跨链兑换聚合器,包括同链兑换、跨链兑换和跨链Bridge功能。 SwapBox对接了多个兑换通道,能尽量满足用户各种兑换需求。

简言

SwapBox多链资产智能跨链兑换聚合器,包括同链兑换、跨链兑换和跨链Bridge功能。 SwapBox对接了多个兑换通道,能尽量满足用户各种兑换需求。

这里主要说明一下Nerve中继网络兑换通道。该链与其他区块链网络实现跨链兑换,其他链的资产或者Tokens在Nerve链注册并跨链到Nerve链后,在NerveSwap(AMM Swap & Muti-Routing)完成兑换或者直接通过Nerve跨链到目标链。再将成功兑换的资产跨链转出到目标链的账户地址上。

Nerve兑换通道当前已支持(BTC、Ethereum、BSC、Optimism、Arbitrum、Polygon …)EVM系链和非EVM链,未来会根据需要逐渐添加更多跨链支持。

Nerve兑换通道为每个已对接跨链的区块链,在Nerve链上分配了链ID(chainId),并给其链上的资产和Tokens分配了资产ID(assetId)。(注:这里的chainId是Nerve链给其他集成的链在Nerve链上分配的chainId,区别于EVM系链本身的chainId。EVM系链的chainId会在后续接口文档返回说明的nativeId字段描述。)

每条链上的资产或者Tokens,我们都视为一种资产,其中每条链都会有一个主资产,例如Ethereum链上的代币(ETH)。主资产主要用于组装交易时,支付手续费。

我们还提供了SwapBox的js.sdk工具,用户可通过js.sdk组装跨链兑换交易。

请求与返回

Domain : https://swapbox.io

restful访问格式:

添加请求头:

language: en // en英文, cn中文

Content-Type: application/json;charset=UTF-8

Accept: application/json

返回格式:

//成功示例
{
    "code": 0,        //返回码,0表示成功,其余表示失败
    "msg": "成功",     //返回信息
    "data": {         //返回数据
      "xxxx":xxx
    }
}
//错误示例
{
    "code": 1002,
    "msg": "xxxx错误",
    "data": null
}

查询链配置

**详细描述:**查询Nabox当前支持的所有链的配置信息,所有应用,应该在打开DApp时,调用此接口获取链配置(链信息和主资产信息),并缓存在本地。

url: /api/config/chains //get

**参数:**无

返回:链配置列表接口

{
"id": 376,              
"nativeId": 1,                  //EVM系链的chainId
"chain": "Ethereum",            //链简称
"chainName": "Ethereum",        //链全名
"prefix": "0x",                 //地址格式前缀
"chainId": 101,                 //Nerve链给其他对接的链分配的chainId
"chainType": 2,  //链类型: 1 NERVE系, 2 EVM系, 3 TRON, 4 COSMOS,5 BTC
"icon": "https://files.nabox.io/icon/Ethereum.png",        //链Logo
"rpcUrl": "https://eth1.lava.build/",                      //默认节点RPC地址
"apiUrl": null,                                            //默认节点API地址
"scanUrl": "https://etherscan.io/",                        //浏览器地址
"bridge": 1,                                               //是否支持跨链Bridge
"swap": 1,                                                 //是否支持兑换
"sort": 1,
"status": 1,
"configs": {                                               //链上额外配置
	"multiCallAddress": "0x6899aa1……", //EVM系 MultiCall合约地址
	"crossAddress": "0xc707e0854d……",  //NerveSwap通道注册跨链的多签合约地址
},
mainAsset:{……},                //主资产信息,详细属性资产配置接口
recommendAssets:[……],         //推荐资产列表,详细属性资产配置接口
"rpcUrlList": [……],            //节点RPC-URL列表
"apiUrlList": [……]             //默认节点API服务接口URL列表

查询兑换资产列表

详细描述:查询SwapBox支持的当前链可兑换资产列表,其中只有参数chain为必传。

当需要查询单一资产(币种)时,NULS和NERVE链的资产是通过chainId和assetId来唯一锁定一个资产,其他链(例如EVM链),查询主代币时,assetId传1即可;其余erc20token,传参数contractAddress查询。

参数bridge:默认为”false”,当只需要查询可以使用跨链桥兑换时,该值传“true”。例如ETH链的USDT,跨链到BSC上USDT。通过Bridge的兑换方式,不受滑点影响。

url: /api/config/asset //post

参数:

{
    "chain": "BSC",         //链简称
    "bridge": "false",      //是否只查询能走bridge跨链桥的资产,默认false
    "chainId": 0,           //NULS和Nerve链资产chainId
    "assetId": 0,           //NULS和Nerve链资产assetId
    "contractAddress":""    //合约资产地址
}

返回:资产信息列表

{
"id": 174595,
"nativeId": 56,                //EVM系链的原chainId
"chain": "BSC",                //链简称
"chainType": 2,                //链类型:1 Nerve系,2 EVM系,3 TRON系,4 COSMOS系
"chainId": 102,                //Nerve链给其他对接的链分配的chainId
"assetId": 1,                  //资产ID, EVM链的主资产ID固定值为1,其余Token为0
"contractAddress": "",         //Token合约地址,EVM链的Token需填写,代币则不用填写
"decimals": 18,                //资产小数位
"assetName": "BNB",
"symbol": "BNB",
"assetType": 1,                //资产类型: 1 主资产,2 Token资产
"icon": "https://files.nabox.io/icon/BNB.png",      //资产Logo
"nerveChainId": 9,
"nerveAssetId": 25,
"nulsCross": true,
"status":1,
"sort": 0,
"source": "NerveSwap",         //资产数据来源
"bridgeInfoList":[……]          //可跨链的其他链对应资产信息
}

查询兑换通道路由(支持本链兑换和跨链兑换)

详细描述:根据用户输入的链和兑换资产信息,路由各个通道可以兑换的路径,并返回路由信息。如果参数的fromChain和toChain一样,就是本链兑换

url: /api/swap/route //post

参数:

{
"dex": "",     //Swap渠道方: NerveSwap, DODO, MetaPath, OKX, Owlto, Orbiter, 为空时查询所有渠道的路由
"fromChain": "NERVE",    //发起链
"toChain": "NERVE",      //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,              //发起链资产的chainId
"assetId": 1,              //发起链资产的id, EVM链的主资产该值需填写1,其余Token为0
"contractAddress": "",     //发起链资产的合约地址,若是代币,此字段不填
"swapChainId": 1,          //目标链兑换资产的chainId
"swapAssetId": 1,          //目标链资产的ID, EVM链的代币该值需填写1,其余Token为0
"swapContractAddress": "", //目标链资产的合约地址,若是代币,此字段不填
"amount": "10.25",         //发起资产数量
"slippage": "0.5"          //滑点
}

返回值:路由通道列表

{
"dex": "NerveSwap",                 //渠道方名称
"channel": "NerveSwap",             //渠道方通道名称
"icon": "https://files.nabox.io/icon/nerve-icon.png",    //渠道方Logo
"best": 1,                          //是否为最优选路由   1是, 0否
"orderId": "4bab-2ad2……"            //订单号,创建订单时使用
"priceImpact": "0",                 //价格影响
"approveAddress": ""                //dex授权合约地址
"fromTokenAmount": 10,              //发起资产数量
"toTokenAmount": "0.33641594",      //预计可兑换数量
"minReceiveAmount": "0.33473386",   //至少可兑换数量
"txHash": "1db57ebcc9d21d383a1502f4c1cef4……", //交易Hash
"txHex": "3f000795e965243735653264313466……",  //未签名交易Hex串
"from": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",
"to": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",
"fee": "0",                         //兑换手续费
"feeSymbol": "NVT",                 //兑换手续费符号
"crossFee": "1.2",                 //跨链手续费,一般为发起链主资产,或USDT
"crossFeeSymbol": "NVT",            //跨链手续费符号
"swapType": 1,                      //1:Swap, 2:Liquidity, 3:Bridge  
"dodoCrossRoute": {}                //DODO跨链通道返回的路由信息,后续接口会作为参数 
}

生成兑换交易(支持本链兑换和跨链兑换)

详细描述:根据用户输入的通道信息,链信息和兑换资产信息,生成未签名的发起链交易txHex。

url: /api/swap/tx/encode //post

参数:

{

"dex": "NerveSwap",       //渠道方名称
"channel": "NerveSwap",   //渠道方通道名称
"fromChain": "NERVE",     //发起链
"toChain": "NERVE",       //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,            //发起链资产的chainId
"assetId": 1,            //发起链资产的ID, EVM链和Tron链的代币该值需填写1,其余Token为0
"contractAddress": "",   //发起链资产的合约地址,若是代币,此字段不填
"swapChainId": 1,        //目标链兑换资产的chainId
"swapAssetId": 1,        //目标链资产的ID, EVM链和Tron链的代币该值需填写1,其余Token为0
"swapContractAddress": "", //目标链资产的合约地址,若是代币,此字段不填
"amount": "10.25",         //发起资产数量
"slippage": "0.5"          //滑点
"dodoCrossRoute": {        //dodo跨链通道的路由信息, 只有当渠道方是dodo时必传
		"encodeParams": {      //route接口返回的路由信息,encodeParams属性
      "amount": "string",
      "depositContract": "string",
      "fromAddress": "string",
      "fromChainId": 0,
      "sign": "string",
      "toAddress": "string",
      "toChainId": 0,
      "tokenAddress": "string"
    } 
  }
}

返回值:未签名交易txHex

{
"dex": "NerveSwap",       //渠道方名称
"channel": "NerveSwap",   //渠道方通道名称
"orderId": "",            //交易订单号
"txData": "",             //未签名交易txHex
"from": "",               //交易发起地址
"to": "",                 //交易接收地址
"value": ""               //此次交易,用户需要发起的金额
}

提交兑换订单

详细描述:根据用户输入的链和兑换资产信息,检查合法性并创建订单。

url: /api/swap/tx/save //post

参数:

{
"orderId": "4bab-2ad2……" //订单号,路由接口返回的订单号
"channel": "",           //兑换通道, 为空时查询所有通道的路由
"platform": "",          //NERVE通道,渠道方配置,默认为空
"platformToken":"",      //渠道方token,当platform不为空时,必须传对应渠道方的token
"fromChain": "NERVE",    //发起链
"toChain": "NERVE",      //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,              //发起链资产的chainId
"assetId": 1,              //发起链资产的ID, EVM链的代币该值需填写1,其余Token为0
"contractAddress": "",     //发起链资产的合约地址
"swapChainId": 1,          //目标链兑换资产的chainId
"swapAssetId": 1,          //目标链资产的ID, EVM链的代币该值需填写1,其余Token为0
"swapContractAddress": "", //目标链资产的合约地址
"amount": "10.25",         //发起资产数量
"toTokenAmount": "97.113", //预计能够兑换到的金额
"slippage": "0.5",         //滑点
"crossFee": "0.003"        //跨链手续费,NerveSwap通道跨链时需要传此参数
}

返回:订单详情

{
"createDate": "2024-03-08 13:59:51",            //订单创建时间
"updateDate": "2024-03-08 13:59:51",
"versionId": 0,
"id": 3,
"orderId": "5b5abad9-0894-43a7-950a-d593e20c8113",  //订单号
"channel": "DODO",                                  //兑换通道
"platform": "",                                     //NerveSwap兑换渠道
"txHash": null,                                     //交易hash
"nerveTxHash": null,                                //NerveSwap通道链上兑换交易Hash
"crossTxHash": null,                                //目标链地址接收兑换资产交易Hash
"fromChain": "BSC",
"fromAddress": "0x3b9A2911530a8FD6B3C7265E7d84117D70df845F",
"toChain": "BSC",
"toAddress": "0x3b9A2911530a8FD6B3C7265E7d84117D70df845F",
"chainId": 102,
"assetId": 1,
"contractAddress": "",
"decimal": 18,
"symbol": "BNB",
"assetIcon": "https://files.nabox.io/icon/BNB.png",
"swapChainId": 102,
"swapAssetId": 0,
"swapContractAddress": "0x8cd6e29d3686d24d3c2018cee54621ea0f89313b",
"swapDecimal": 8,
"swapSymbol": "NULS",
"swapAssetIcon": "http://nassets.oss-us-west-1.aliyuncs.com/NULS_1.png",
"amount": "0.0001",                        //发起资产金额
"slippage": "0.5",                         //滑点
"toTokenAmount": "0.001",                  //实际兑换金额
"fee": "0",                                //兑换手续费
"crossFee": "0",                           //NerveSwap通道跨链手续费
"crossFeePrice": null,
"swapType": 0,                //1:swap, 2:liquidity, 3:bridge     
"swapChildType": 0,
"pairAddress": null,
"status": 0,          //1:用户已发送交易, 2:处理中, 3:兑换成功, 4:兑换失败
"nerveStatus": 0,
"ipUrl": ""
}

更新订单交易Hash

详细描述:订单创建后,前端需要对路由接口返回的未签名的交易txHex进行签名并广播, 广播成功后,将交易hash更新到订单上

url: /api/swap/tx/hash/update //post

参数:

{
    "orderId": "4bab-2ad2……",             //订单号
    "txHash": "0x0795e96524373565……"      //广播后的交易Hash
	  "partnerOrderId": "123"               //合作方通道交易订单号, 非必传
}

返回:订单详情

查询Bridge通道路由(跨链Bridge)

详细描述:根据用户输入的链和发起链资产信息,路由通道可以Bridge的路径,并返回路由信息。

url: /api/bridge/route //post

参数:

{
"channel": "",           //兑换通道, 为空时查询所有通道的路由
"fromChain": "NERVE",    //发起链
"toChain": "NERVE",      //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,              //发起链资产的chainId
"assetId": 1,              //发起链资产的ID, EVM链的代币该值需填写1,其余Token为0
"contractAddress": "",     //发起链资产的合约地址
"amount": "10.25",         //发起资产数量
"slippage": "0.5"          //滑点
}

返回值:路由通道列表

{
"channel": "NERVE",                 //通道名称
"icon": "https://files.nabox.io/icon/nerve-icon.png",    //通道Logo
"best": 1,                          //是否为最优选路由   1true, 0false
"orderId": "4bab-2ad2……"            //订单号,创建兑换订单时使用
"priceImpact": "0",                 //价格影响
"approveAddress": ""                //授权合约地址
"fromTokenAmount": 10,              //发起资产数量
"toTokenAmount": "0.33641594",      //预计可兑换数量
"minReceiveAmount": "0.33473386",   //至少兑换数量
"txHash": "1db57ebcc9d21d383a1502f4c1cef4……", //交易Hash
"txHex": "3f000795e965243735653264313466……",  //未签名交易hex串
"from": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",
"to": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",
"fee": "0",                         //兑换手续费
"feeSymbol": "NVT",                 //兑换手续费符号
"swapType": 1,                      //1:Swap, 2:Liquidity, 3:Bridge  
"dodoCrossRoute": {}                //DODO跨链通道返回的路由信息,后续接口会作为参数 
}

生成Bridge交易(跨链Bridge)

详细描述:根据用户输入的通道信息,链信息和兑换资产信息,生成未签名的发起链交易txHex。

url: /api/bridge/tx/encode //post

参数:

{
"channel": "",           //兑换通道, 为空时查询所有通道的路由
"fromChain": "NERVE",    //发起链
"toChain": "NERVE",      //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,            //发起链资产的chainId
"assetId": 1,            //发起链资产的ID, EVM链和Tron链的代币该值需填写1,其余Token为0
"contractAddress": "",   //发起链资产的合约地址
"amount": "10.25",         //发起资产数量
"slippage": "0"          //滑点
}

返回值:未签名交易txHex

{
"channel": "",           //兑换通道
"orderId": "",           //交易订单号
"txData": "",            //未签名交易txHex
"from": "",              //交易发起地址
"to": ""                 //交易接收地址
}

提交Bridge订单

详细描述:根据用户输入的链和兑换资产信息,检查合法性并创建订单。

url: /api/bridge/tx/save //post

参数:

{
"orderId": "4bab-2ad2……" //订单号,路由接口返回的订单号
"channel": "",           //兑换通道, 为空时查询所有通道的路由
"platform": "",          //NERVE通道,渠道方配置,默认为空
"platformToken":"",      //渠道方Token,当Platform不为空时,必须传对应渠道方的Token
"fromChain": "NERVE",    //发起链
"toChain": "NERVE",      //目标链
"fromAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",    //发起链地址
"toAddress": "NERVEepb6G7qU3rC61x2Ruv3YPFdsHQ4ncyfp8",      //目标链地址
"chainId": 9,              //发起链资产的chainId
"assetId": 1,              //发起链资产的ID, EVM链的代币该值需填写1,其余Token为0
"contractAddress": "",     //发起链资产的合约地址
"amount": "10.25",         //发起资产数量
"toTokenAmount": "97.113", //预计能够兑换到的金额
"slippage": "0",           //滑点
"crossFee": "0.003"        //跨链手续费,NerveSwap通道跨链时需要传此参数
}

返回:订单详情

{
"createDate": "2024-03-08 13:59:51",            //订单创建时间
"updateDate": "2024-03-08 13:59:51",
"versionId": 0,
"id": 3,
"orderId": "5b5abad9-0894-43a7-950a-d593e20c8113",  //订单号
"channel": "DODO",                                  //兑换通道
"platform": "",                                     //NerveSwap兑换渠道
"txHash": null,                                     //交易Hash
"nerveTxHash": null,                                //Nerve通道链上兑换交易Hash
"crossTxHash": null,                                //目标链地址接收兑换资产交易Hash
"fromChain": "BSC",
"fromAddress": "0x3b9A2911530a8FD6B3C7265E7d84117D70df845F",
"toChain": "BSC",
"toAddress": "0x3b9A2911530a8FD6B3C7265E7d84117D70df845F",
"chainId": 102,
"assetId": 1,
"contractAddress": "",
"decimal": 18,
"symbol": "BNB",
"assetIcon": "https://files.nabox.io/icon/BNB.png",
"swapChainId": 102,
"swapAssetId": 0,
"swapContractAddress": "0x8cd6e29d3686d24d3c2018cee54621ea0f89313b",
"swapDecimal": 8,
"swapSymbol": "NULS",
"swapAssetIcon": "http://nassets.oss-us-west-1.aliyuncs.com/NULS_1.png",
"amount": "0.0001",                        //发起资产金额
"slippage": "0.5",                         //滑点
"toTokenAmount": "0.001",                  //实际兑换金额
"fee": "0",                                //兑换手续费
"crossFee": "0",                           //NerveSwap通道跨链手续费
"crossFeePrice": null,
"swapType": 0,                //1:Swap, 2:Liquidity, 3:Bridge     
"swapChildType": 0,
"pairAddress": null,
"status": 0,        //1:用户已发送交易, 2:处理中, 3:兑换成功, 4:兑换失败
"nerveStatus": 0,
"ipUrl": ""
}

更新订单交易Hash

详细描述:订单创建后,前端需要对路由接口返回的未签名的交易txHex进行签名并广播, 广播成功后,将交易hash更新到订单上

url: /api/bridge/tx/hash/update //post

参数:

{
    "orderId": "4bab-2ad2……",             //订单号
    "txHash": "0x0795e96524373565……"      //广播后的交易Hash
	  "partnerOrderId": "123"               //合作方通道交易订单号, 非必传
}

返回:订单详情

查询Swap和Bridge订单交易列表

详细描述:根据订单时间倒叙查询用户的所有兑换订单交易记录

url: /api/swap/txs/query //post

参数:

{
    "page": 1,                     //页数, 默认第一页
    "limit": 10,                   //每页显示条数, 默认10条,最大值20条
    "chain": "Ethernum",           //用户当前连接的链(必填)
    "address": "0xc707e0854d……",   //用户地址(必填)
    "swapType": 0, //交易类型:默认0查询所有, 1:Swap, 2:Liquidity, 3:Bridge                   
    "status": 0    //订单状态:默认0查询所有, 1:处理中,2:成功,3:失败
}

返回:订单交易列表

查询Swap和Bridge订单交易详情

详细描述:根据订单号查询兑换交易详情

url: /api/swap/tx/query //post

参数:

{
    "orderId": "4bab-2ad2……"       //交易订单号
}

返回:订单详情

Last updated