V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
playniuniu
V2EX  ›  区块链

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

  •  
  •   playniuniu · 184 天前 · 646 次点击
    这是一个创建于 184 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    使用如下 gql 语句

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

    获取,如下图所示

    001.png

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

    002.png

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

    不胜感激

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

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

    需要考虑的几个因素,由大到小决定了你最终成交的价格:储备量 A 、B,买卖的数量、手续费,溢价。
    lrj2u
        2
    lrj2u  
       184 天前
    @lrj2u #1 第二点说的齿轮是交易所页面上面那个设置的齿轮按钮。
    barbery
        3
    barbery  
       184 天前
    直接调用合约查询就好了啊
    playniuniu
        4
    playniuniu  
    OP
       184 天前
    @barbery 我看了合约,没找到能提供价格的函数 🤦‍♂️
    playniuniu
        5
    playniuniu  
    OP
       184 天前
    @lrj2u 非常感谢,V2 版本的话,可以直接用储备量来算出价格,但是 V3 版本,每个人可以只提供价格区间内的流动性,就不太清楚应该怎么算了
    lrj2u
        6
    lrj2u  
       184 天前
    @playniuniu #5 https://liaoph.com/uniswap-v3-3/
    有大佬总结出来了,公式比较多,但原理都有详细解释。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1321 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:32 · PVG 07:32 · LAX 15:32 · JFK 18:32
    ♥ Do have faith in what you're doing.