DODO 文档中心

API响应字段说明#

字段json类型描述
resAmountnumber询价后收到的代币数量(浮点数,带有小数点)
resPricePerToTokennumber被卖出的代币数量与被购买的代币数量的比率
resPricePerFromTokennumber被购买的代币数量与被卖出的代币数量的比率
priceImpactnumber也称为价格偏移。将此数字乘以100转换为百分比。高价格偏离是由报价价格池中的流动性不足引起的。
useSourcestring询价结果的来源识别
targetDecimalsnumber将要接收的代币的小数位数
targetApproveAddrstring用户需要授权DODOApprove合约访问他们的代币进行兑换。如果出售的代币是燃料代币(例如BNB或MATIC上的ETH),则此参数为空。
tostringDODORouteProxy地址
datastringABI数据,可直接使用
routeDatastring交易执行的路径细节

模拟响应#

{
    "status": 200,
    "data": {
        "resAmount": 41.777131132002744,
        "resPricePerToToken": 2.3936540707888985,
        "resPricePerFromToken": 0.4177713113200274,
        "priceImpact": 0.0032237773057670273,
        "useSource": "dodoV1AndV2AndUni",
        "targetDecimals": 18,
        "targetApproveAddr": "0x6D310348d5c12009854DFCf72e0DF9027e8cb4f4",
        "to": "0x39E3e49C99834C9573c9FC7Ff5A4B226cD7B0E63",
        "data": "...",
        "msgError": "",
        "routeData": "{\"subRouteTotalPart\":100,\"subRoute\":[{\"midPathPart\":100,\"midPath\":[{\"fromToken\":\"0xe06bd4f5aac8d0aa337d13ec88db6defc6eaeefe\",\"toToken\":\"0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270\",\"oneSplitTotalPart\":100,\"poolDetails\":[{\"poolName\":\"SushiSwap V2\",\"pool\":\"0x014ac2a53aa6fba4dcd93fde6d3c787b79a1a6e6\",\"poolPart\":100}]}]}]}",
        "value": "0",
        "id": "252046ac3d000a61571aca9eee9f3509",
        "rpcCounter": 6
    }
}

开发者需要注意#

当priceImpact过大时,需要提示用户或限制用户交易。

Price Impact原理详解#

假设一定数量的token0(token0Amount)可以兑换为token1Amount的token1,每个token0(token0Price)的价格计算为token1Amount / token0Amount。

不同的路径具有不同的流动性深度;某些路径具有较好的深度,而其他路径则没有。

随着token0Amount的增加,对路径深度的要求也增加,从而导致token0Price的下降。这种价格下降的偏离被称为priceImpact。

当路径具有异常良好的深度时,token0Price的变化可以忽略不计,例如priceImpact为0.00001。相反,当路径深度较差时,token0Price的变化可以很大,例如priceImpact为0.9。

DODO前端最佳实践#

价格偏移警告#

价格偏移超过5%(0.05)触发对用户的警告,价格偏移超过15%(0.15)触发对用户的错误信息。

执行前处理#

在发送交易之前,使用eth_estimateGas进行预执行,以提高交易成功加入区块链的概率,并显示任何错误消息。

如何获取交易结果#

通过RPC方法获取交易执行状态。

使用DODO的子图服务检索订单详细信息和历史订单。