gnosis / dex-subgraph

dFusion subgraph
https://thegraph.com/explorer/subgraph/gnosis/dfusion
MIT License
15 stars 10 forks source link

Price volume is not correctly calculated #54

Closed anxolin closed 4 years ago

anxolin commented 4 years ago

The volume doesn't seems alright. If we analyse for example batch: 5310430

https://thegraph.com/explorer/subgraph/gnosis/protocol:

{
  prices(first: 5, where: {
    batchId: "5310430", token: "6"
  }) {
    id
    token {
      id
    }
    batchId
    priceInOwlNumerator,
    priceInOwlDenominator,
    volume
  }
}

It reports a volume of 297548861:

{
  "data": {
    "prices": [
      {
        "batchId": "5310430",
        "id": "6-5310430",
        "priceInOwlDenominator": "2500000000000000000000000000000000",
        "priceInOwlNumerator": "2507581595656347927551286599724287",
        "token": {
          "id": "6"
        },
        "volume": "297548861"
      }
    ]
  }
}

I understand the volume should be 297.58 GUSD: image

We should review how this is being calculated.

Note: GUSD has 2 decimals.

anxolin commented 4 years ago

@W3stside this might help you understand the issue.

These are the trades for the batch of the example above:

Date,Reverted,Batch Id,Trader Address,Order Id,Price SELL/BUY,Price BUY/SELL,Sell Volume,Sell Token,Buy Volume,Buy Token,Sell Token Address,Buy Token Address,Transaction
2020-06-25T23:50:00,,5310430,0x0fc611d5d90ca9e038882905ea605d0feef87db2,4,1.0030336245,0.9969755504,297.58,GUSD,298.482746,USDC,0x056fd409e1d7a124bd7017459dfea2f387b6d5cd,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x4f50d47d20380172746527bbeaa274940c38efac,41,1.0097414249,0.9903525549,0.00024794363251486,DAI,0.000250358956795644,sUSD,0x6b175474e89094c44da98b954eedeac495271d0f,0x57ab1e02fee23774580c119740129eac7081e9d3,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x0b8d3abb07291a74845a75aca47eb9d6a3ef19cf,42,1.0002046826,0.9997953592,297.519103,USDT,297.58,GUSD,0xdac17f958d2ee523a2206206994597c13d831ec7,0x056fd409e1d7a124bd7017459dfea2f387b6d5cd,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x0841ff0eb875a73ad26ea7a3eb182e8b99abe539,94,0.8536430609,1.1714498081,95.149010896189680142,DMG,81.223292909603619751,DAI,0xed91879919b71bb6905f23af0a68d231ecf87b14,0x6b175474e89094c44da98b954eedeac495271d0f,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x64e482233ca8bbfcd7fbcc670808fa0eb09c5cc3,112,1.0000000117,0.9999999882,1.796888978824351967,OWL,1.796889,USDC,0x1a5f9352af8af974bfc03399e3767df6370d82e4,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0xc3f0938caf88d548188907fcbe34d948cff6d001,0,1.0097414249,0.9903525549,294.633809768244255663,DAI,297.503962905289833547,sUSD,0x6b175474e89094c44da98b954eedeac495271d0f,0x57ab1e02fee23774580c119740129eac7081e9d3,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0xba98b69a140c078746219d0bbf0bb3b923483374,23,0.8536430609,1.1714498081,249.999999484566035858,DMG,213.410764802273150772,DAI,0xed91879919b71bb6905f23af0a68d231ecf87b14,0x6b175474e89094c44da98b954eedeac495271d0f,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x70a6c2ae96073a2be3c4e6f83a46b2559421b657,0,1.1494253027,0.8699999883,300.279635,USDC,345.149010380755716,DMG,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,0xed91879919b71bb6905f23af0a68d231ecf87b14,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0xa5a69107816c5e3dfa5561e6b621dfe6294f6e5b,119,1.0000500488,0.9999499536,297.504213264246629191,sUSD,297.519103,USDT,0x57ab1e02fee23774580c119740129eac7081e9d3,0xdac17f958d2ee523a2206206994597c13d831ec7,https://etherscan.io/tx/0x99def836f13b97f25557b78a03496bbefdfa4de0de5233bb22b488987325f266
2020-06-25T23:50:00,,5310430,0x6a38aa8403469b4349ec5d5d6e6e18e64f276f50,0,0.9945111311,1.0055191628,0.619043,USDC,0.615645154158643422,DAI,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,0x6b175474e89094c44da98b954eedeac495271d0f,https://etherscan.io/tx/0xdfa7dd6c8adedade4f05a42b40ce667c2a7ce901496004a75ad5acad053ac23c

What I understand the price should be doing is adding all the sell volumes for that token in that batch:

i.e. If, for a given batch, there's to trades that sell 5 DAI and 20 DAI, at price 1.1, we should see 25 DAI of volume at 1.1 for that batch