Skip to main content
Version: 2.0.0

DODO 智能路由算法

DODO 协议既是流动性供应商,也是流量分销商。流量分销体现在 DODO 在交易端提供了聚合器的功能,可以实现同一网络上两个任意代币之间的交易。智能地从流动性来源中找到最佳的订单路由,为交易者提供最佳的价格和最低的滑点。

DODO 自建路由通过聚合链上各头部交易所的流动性,为用户计算出最优的交易路径;支持在不同协议之间进行拆分,也支持在同一协议内的不同市场深度进行拆分。获得路径后,链上的智能合约将为用户执行交易动作,智能合约中的安全性验证保证了用户的资金安全和报价有效性。

自建路由内有两种策略,一种是线性路由,一种是拆单路由。

线性路由

线性路由指在寻找交易路径的过程中,一交易对只经过一个池子,在此基础上寻找目标代币报价最优的路径,类似于 Uniswap V2 的路由算法。该算法复杂度低,计算速度快,与合约交互少,gas 最省。例如用户需要交易 ETH-USDC,线性路由所找到的最优路径可能为 ETH-USDT-USDC,最终的路径只经过两个池子;这两个池子可能来自不同协议,例如,ETH-USDT 是 Uniswap V3 的池子,USDT-USDC 是 DODO 的池子。 线性路由算法从各个协议收集输入代币、目标代币和通用中间代币相互组合而成的全部池子信息,再通过递归寻找最优路径。

拆单路由

拆单路由指寻找交易路径的过程中,一交易对可能经过不同的池子,用户的资金按最优比例配置到不同池子进行兑换,以使得目标代币报价最优。该算法复杂度高,计算速度不如线性路由,路径与合约交互较多,因此 gas 支出变多,但报价优于线性路由。

同样以交易 ETH-USDC 为例,交易路径所经过的币种可能为 ETH-USDT-USDC,ETH 与 USDT 交易对可能经过两个池子,用户 30% 的 ETH 通过 Uniswap v3 兑换成 USDT,70% 的 ETH 通过 DODO V2 兑换成 USDT,进行下一交易对 USDT-USDC 兑换时,初始的 USDT 是以上两部分 USDT 所得的加和,再以此寻找 USDT-USDC 的最优拆分。为了控制 gas,提高交易成功率,每一交易对兑换时所经过池子不超过三个。

DODO 自建的智能路由算法仍然存在较大优化空间,我们将持续优化路径,支持多代币路径的拆单,以期获得更好的报价。为了给用户提供更好的价格,DODO 持续努力着。