Closed wxf4150 closed 3 years ago
价格接口:
如果要从thegraph接口看到更加接近时实的价格,需要考虑以下因素:
目前thegraph价格接口,应该可以做到时实价/最低/最高价格同uniswap-info"同步";即使做到了和uniswap-info"同步",但是上面两项延迟导致,页面看到的价格,肯定有在2分钟左右的延迟.如果这个就是需求想要的,就无需过多讨论了.
这个需要使用监听合约事件收到的价格.这个价格时实性很高.eth链一有相应的事件,马上会通过特定的websocket推送过来. 在页面应用上,可以使用websocket接收oracle推送过来的价格,让价格实时动起来.
这方面,这么考虑的,USD锚定美元价格,以1:1兑换,无需过多考虑USD价格和美元间"万分之几,千分之几"的误差,直接当做美元价格使用.
uniswap-info显示的价格:计算过程是这样的,它先把token换算成所能代表的eth的数量,然后使用这个"数量"乘以"uniswap-以太坊价格","uniswap-以太坊价格"又是thegraph通过计算uniswap系统中WETH关联的 usdt/usdc/dai的关系计算出的价格.
合约监听到的价格:仅是usd-pair中相应token同usd数量比.
这两种价格计算方式差异很大,不存在直接换算关系,换算完也不会相等,无需换算.
需要事先了解并约定这些内容.要不然全都被当成bug了.
价格接口:
价格延迟问题
如果要从thegraph接口看到更加接近时实的价格,需要考虑以下因素:
目前thegraph价格接口,应该可以做到时实价/最低/最高价格同uniswap-info"同步";即使做到了和uniswap-info"同步",但是上面两项延迟导致,页面看到的价格,肯定有在2分钟左右的延迟.如果这个就是需求想要的,就无需过多讨论了.
时实价格
这个需要使用监听合约事件收到的价格.这个价格时实性很高.eth链一有相应的事件,马上会通过特定的websocket推送过来. 在页面应用上,可以使用websocket接收oracle推送过来的价格,让价格实时动起来.
合约事件监听到的token的价格是USD价格,不是美元价格.
这方面,这么考虑的,USD锚定美元价格,以1:1兑换,无需过多考虑USD价格和美元间"万分之几,千分之几"的误差,直接当做美元价格使用.
"合约监听到的价格"同"uniswap-info显示美元价格"的区别:
uniswap-info显示的价格:计算过程是这样的,它先把token换算成所能代表的eth的数量,然后使用这个"数量"乘以"uniswap-以太坊价格","uniswap-以太坊价格"又是thegraph通过计算uniswap系统中WETH关联的 usdt/usdc/dai的关系计算出的价格.
合约监听到的价格:仅是usd-pair中相应token同usd数量比.
这两种价格计算方式差异很大,不存在直接换算关系,换算完也不会相等,无需换算.