求教一下 Uniswap V3 交易的是价格,应该从哪里拿比较合适
一开始是从 https://thegraph.com/explorer/subgraph/uniswap/uniswap-v3
使用如下 gql 语句
{
pools(
where: {id_in: ["0x4e68ccd3e89f51c3074ca5072bbac773960dfa36"]}
) {
token0 {
symbol
}
token1 {
symbol
}
token0Price
token1Price
}
}
获取,如下图所示
但是发现和真正的交易价格有偏差,如下图红圈中的值
感觉真正的交易价格是直接从合约中获取的,所以想请教一下各位大佬,真正的交易价格是怎么获取的
不胜感激
1
lrj2u 2021-06-07 15:56:23 +08:00
你没搞懂 amm 机制,api 获取了 A 、B 两个币的储备量,然后用这个储备量获取到价格。
但这个机制下,如果买或卖的数量足够大,也会影响价格,就是说,你想获取准确的价格,必须加上要买卖的数量,还有储备量 A 、B 再做运算。具体公式可以网上搜索。 第二点,交易所的齿轮那里还会给你加上 0.1%左右的溢价,所以跟你 api 获取到的也不准确。 需要考虑的几个因素,由大到小决定了你最终成交的价格:储备量 A 、B,买卖的数量、手续费,溢价。 |
3
barbery 2021-06-07 16:08:40 +08:00
直接调用合约查询就好了啊
|
4
playniuniu OP @barbery 我看了合约,没找到能提供价格的函数 🤦♂️
|
5
playniuniu OP @lrj2u 非常感谢,V2 版本的话,可以直接用储备量来算出价格,但是 V3 版本,每个人可以只提供价格区间内的流动性,就不太清楚应该怎么算了
|
6
lrj2u 2021-06-07 17:46:09 +08:00
|