请教各位大佬, Uniswap V3 的实时交易价格应该从哪里获得

2021-06-07 15:38:57 +08:00
 playniuniu

求教一下 Uniswap V3 交易的是价格,应该从哪里拿比较合适

一开始是从 https://thegraph.com/explorer/subgraph/uniswap/uniswap-v3

使用如下 gql 语句

{
    pools(
        where: {id_in: ["0x4e68ccd3e89f51c3074ca5072bbac773960dfa36"]}
    ) {
    		token0 {
          symbol
        }
    		token1 {
          symbol
        }
        token0Price
        token1Price
    }
}

获取,如下图所示

但是发现和真正的交易价格有偏差,如下图红圈中的值

感觉真正的交易价格是直接从合约中获取的,所以想请教一下各位大佬,真正的交易价格是怎么获取的

不胜感激

2896 次点击
所在节点    区块链
6 条回复
lrj2u
2021-06-07 15:56:23 +08:00
你没搞懂 amm 机制,api 获取了 A 、B 两个币的储备量,然后用这个储备量获取到价格。
但这个机制下,如果买或卖的数量足够大,也会影响价格,就是说,你想获取准确的价格,必须加上要买卖的数量,还有储备量 A 、B 再做运算。具体公式可以网上搜索。

第二点,交易所的齿轮那里还会给你加上 0.1%左右的溢价,所以跟你 api 获取到的也不准确。

需要考虑的几个因素,由大到小决定了你最终成交的价格:储备量 A 、B,买卖的数量、手续费,溢价。
lrj2u
2021-06-07 15:58:10 +08:00
@lrj2u #1 第二点说的齿轮是交易所页面上面那个设置的齿轮按钮。
barbery
2021-06-07 16:08:40 +08:00
直接调用合约查询就好了啊
playniuniu
2021-06-07 16:20:09 +08:00
@barbery 我看了合约,没找到能提供价格的函数 🤦‍♂️
playniuniu
2021-06-07 16:21:24 +08:00
@lrj2u 非常感谢,V2 版本的话,可以直接用储备量来算出价格,但是 V3 版本,每个人可以只提供价格区间内的流动性,就不太清楚应该怎么算了
lrj2u
2021-06-07 17:46:09 +08:00
@playniuniu #5 https://liaoph.com/uniswap-v3-3/
有大佬总结出来了,公式比较多,但原理都有详细解释。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/781912

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX