playniuniu
V2EX  ›  区块链

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

  •  
  •   playniuniu · Jun 7, 2021 · 3711 views
    This topic created in 1806 days ago, the information mentioned may be changed or developed.

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

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

    需要考虑的几个因素,由大到小决定了你最终成交的价格:储备量 A 、B,买卖的数量、手续费,溢价。
    lrj2u
        2
    lrj2u  
       Jun 7, 2021
    @lrj2u #1 第二点说的齿轮是交易所页面上面那个设置的齿轮按钮。
    barbery
        3
    barbery  
       Jun 7, 2021
    直接调用合约查询就好了啊
    playniuniu
        4
    playniuniu  
    OP
       Jun 7, 2021
    @barbery 我看了合约,没找到能提供价格的函数 🤦‍♂️
    playniuniu
        5
    playniuniu  
    OP
       Jun 7, 2021
    @lrj2u 非常感谢,V2 版本的话,可以直接用储备量来算出价格,但是 V3 版本,每个人可以只提供价格区间内的流动性,就不太清楚应该怎么算了
    lrj2u
        6
    lrj2u  
       Jun 7, 2021
    @playniuniu #5 https://liaoph.com/uniswap-v3-3/
    有大佬总结出来了,公式比较多,但原理都有详细解释。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1803 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:15 · PVG 00:15 · LAX 09:15 · JFK 12:15
    ♥ Do have faith in what you're doing.