智能路由

一个为用户提供更好交易策略的工具

背景

为帮助用户获取更大的兑换收益,SUN.io团队推出智能路由功能。智能路由在SUN.io中扮演着重要的角色:

  1. 最佳价格执行:智能路由可以根据不同的交易对之间的价格差异选择最佳的交易路径,以获取最优的交易价格。这意味着用户可以在交易过程中获得更好的价格执行,从而最大化其交易价值。

  2. 流动性优化:智能路由可以利用不同交易对之间的流动性,来提供更好的交易深度和流动性。通过在多个流动性池之间进行交叉交易,智能路由可以减少滑点(slippage)和市场冲击,从而为用户提供更好的交易体验。

  3. 提高流动性效率:智能路由可以帮助提高流动性效率。通过将流动性从较深的交易对引导到较浅的交易对,智能路由可以帮助提高整体的流动性利用率,使得更多的交易能够得到满足。

原理简介

SUN.io智能路由解算服务通过在服务器上构建合约镜像的模式,实现在SunSwap V1,SunSwap V2,SunSwap V3,PSM,SunCurve上的全图搜索;按照兑换出token数量多少排序,返给用户兑换token最多的三条路径。SUN.io智能路由合约是嵌套合约,通过该合约可调用SUN.io下的SunSwap V1,SunSwap V2,SunSwap V3,PSM,SunCurve的交易池,完成交易。

智能路由合约

主网合约地址:TFVisXFaijZfeyeSjCEVkHfex7HGdTxzF9

nile测试网合约地址:TB6xBCixqRPUSKiXb45ky1GhChFJ7qrfFj

智能路由解算服务

智能路由解算服务url:https://rot.endjgfsv.link/swap/router

与合约交互

我们利用TronWeb与合约交互, 初始化TronWeb实例后, 就能很方便的与线上合约交互。

初始化TronWeb实例
const TronWeb = require('tronweb')
const privateKey = process.env.PRIVATE_KEY
const apiKey = process.env.API_KEY

var tronWeb = new TronWeb({
	fullHost: "https://api.trongrid.io",
	headers: { "TRON-PRO-API-KEY": apiKey },
	privateKey: privateKey,
      })

获取智能路由信息

>>> curl 'https://rot.endjgfsv.link/swap/router?fromToken=TWrZRHY9aKQZcyjpovdH6qeCEyYZrRQDZt&toToken=TG9XJ75ZWcUw69W8xViEJZQ365fRupGkFP&amountIn=100000000000000000&typeList=PSM,CURVE,CURVE_COMBINATION,WTRX,SUNSWAP_V1,SUNSWAP_V2,SUNSWAP_V3'
{"code":0,"message":"SUCCESS","data":[{"amountIn":"0.100000000000000000","amountOut":"0.00340809","inUsd":"0.000552211279796638800000000000000000","outUsd":"102.28490008408047256262147451","impact":"-0.004658","fee":"0.001019799010000000","tokens":["TWrZRHY9aKQZcyjpovdH6qeCEyYZrRQDZt","TGfVzt44kg6ZJ4fUqpHzJy3Jb37YMf8pMH","TGjgvdTWWrybVLaVeFqSyVqJQWjxqRYbaK","TG9XJ75ZWcUw69W8xViEJZQ365fRupGkFP"],"symbols":["SUN","HT","USDD","BTC"],"poolFees":["100","10000","100","0"],"poolVersions":["v3","v3","v3"],"stepAmountsOut":["0.204301041106368782","0.306491628388168604","0.00340809"]},{"amountIn":"0.100000000000000000","amountOut":"0.00315241","inUsd":"0.000552211279796638800000000000000000","outUsd":"94.61133417076900038177793499","impact":"-0.000471","fee":"0.001593109000000000","tokens":["TWrZRHY9aKQZcyjpovdH6qeCEyYZrRQDZt","TYsbWxNnyTgsZaTFaue9hqpxkU3Fkco94a","T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb","TF17BgPaZYbz8oxbjhriubPDsA7ArKoLX3","TG9XJ75ZWcUw69W8xViEJZQ365fRupGkFP"],"symbols":["SUN","WTRX","TRX","JST","BTC"],"poolFees":["0","0","0","10000","0"],"poolVersions":["v2","v2","v1","v3"],"stepAmountsOut":["9.406036","9.406036","5797.537373084257622564","0.00315241"]},{"amountIn":"0.100000000000000000","amountOut":"0.00311306","inUsd":"0.000552211279796638800000000000000000","outUsd":"93.43034692621015170250621534","impact":"-0.000305","fee":"0.001019799010000000","tokens":["TWrZRHY9aKQZcyjpovdH6qeCEyYZrRQDZt","TRz7J6dD2QWxBoumfYt4b3FaiRG23pXfop","TGjgvdTWWrybVLaVeFqSyVqJQWjxqRYbaK","TG9XJ75ZWcUw69W8xViEJZQ365fRupGkFP"],"symbols":["SUN","TUSD","USDD","BTC"],"poolFees":["10000","100","100","0"],"poolVersions":["v3","v3","v3"],"stepAmountsOut":["0.279484570175183752","0.279951568868017126","0.00311306"]}]}

执行交易

  • 交易

    • 名称:swapExactInput( address[], string[], uint256[], uint24[], SwapData)

    • 参数:路径数组,pool的版本数组,相邻pool版本的长度数组,fee率数组,[要兑换金额,兑换出的最小接受额,接受兑换金额地址,deadline]

>>> let contract = await tronWeb.getContract('TQAvWQpT9H916GckwWDJNhYZvQMkuRL7PN')
>>> await router.swapExactInput(
                    ['TWrZRHY9aKQZcyjpovdH6qeCEyYZrRQDZt','TGfVzt44kg6ZJ4fUqpHzJy3Jb37YMf8pMH','TGjgvdTWWrybVLaVeFqSyVqJQWjxqRYbaK','TG9XJ75ZWcUw69W8xViEJZQ365fRupGkFP'],
                    ['v3'],
                    [4],
                    [100,10000,100,0],
                    ['100000000000000000','1', 'TF5MekHgFz6neU7zTpX4h2tha5miPDUj3z',1662825600]
                ).send({feeLimit: 10000 * 1e6,shouldPollResponse: true});

Last updated