subgraphs icon indicating copy to clipboard operation
subgraphs copied to clipboard

Osmosis - OSMOSIS QA

Open SerenityFund opened this issue 2 years ago • 13 comments

Review Info

Description Info
Subgraph Reviewed https://subgraphs.messari.io/subgraph?endpoint=https://api.thegraph.com/subgraphs/name/corerouter/osmosisdex&tab=protocol
Schema Version 1.3.0
Subgraph Version 1.0.0
Methodology Version 1.0.0
Evidence Spreadsheet https://docs.google.com/spreadsheets/d/1bJ5oC-0HW84huduXLxMMDmCyycNEJKjS/edit?usp=share_link&ouid=104027705798814439445&rtpof=true&sd=true

Metric to Review

TVL

TVL data shows a massive 5-day average discrepancy of more than 11k% with the official website data and Defi Llama data.

Subgraph - TVL (5-day average) Official Website - TVL (5-day average) Absolute difference Difference %
20,886,164,864 176,949,959 20,709,214,905 11,703.43%
Subgraph - TVL (5-day average) Defi Llama - TVL (5-day average) Absolute difference Difference %
20,886,164,864 171,500,179 20,714,664,685 12,078.51%
  • Refer to the sheet 'Protocol'

Daily Volume USD

The daily volume data is showing a high 5-day average discrepancy of -28.5% with the official website data and Defi Llama data.

Subgraph - Volume (5-day average) Official Website - Volume (5-day average) Absolute difference Difference %
11,292,759 15,796,955 -4,504,196 -28.5%
Subgraph - Volume (5-day average) Defi Llama - Volume (5-day average) Absolute difference Difference %
11,292,759 15,794,000 -4,501,241 -28.5%
  • Refer to the sheet 'Protocol'

Revenue

  • Daily total revenue data is not mathematically in line with the data from Defi Llama and Token Terminal, giving a 5-day average discrepancy of -30.90% and -28.08%.
Subgraph - Daily Total Revenue (5-day average) Defi Llama - Daily Total Revenue (5-day average) Absolute difference Difference %
23,653 34,232 -10,579 -30.90%
Subgraph - Daily Total Revenue (5-day average) Token Terminal - Daily Total Revenue (5-day average) Absolute difference Difference %
23,653 32,888 -9,234 -28.08%
  • See the 'Protocol' sheet for more information.

Daily Transaction Count

Daily transaction count data is not mathematically in line with the sum of deposit, withdraw, and swap daily counts in the past five days.

Total Pool Count

The official website data only shows pools up to 926 instead of 1088.

Pool Overview - TVL

  • Three of the top 10 pools in the subgraph data are inactive. These pools' names are Osmosis-724, Osmosis-560, and Osmosis-561.
  • The other seven active pools have large discrepancies ranging from 49.88% to 591,125.05%.
Subgraph - Osmosis-1 Pool TVL Official Website - Osmosis-1 Pool TVL Difference %
$260,362,875 $68,585,239 279.62%
Subgraph - Osmosis-678 Pool TVL Official Website - Osmosis-678 Pool TVL Difference %
$80,226,121 $25,790,501 211.07%
Subgraph - Osmosis-604 Pool TVL Official Website - Osmosis-604 Pool TVL Difference %
$72,276,302 $2,328,586 3003.87%
Subgraph - Osmosis-13 Pool TVL Official Website - Osmosis-13 Pool TVL Difference %
$49,148,538 $8,313 591125.05%
Subgraph - Osmosis-4 Pool TVL Official Website - Osmosis-4 Pool TVL Difference %
$34,373,951 $812,972 4128.18%
Subgraph - Osmosis-704 Pool TVL Official Website - Osmosis-704 Pool TVL Difference %
$17,828,100 $11,894,722 49.88%
Subgraph - Osmosis-6 Pool TVL Official Website - Osmosis-6 Pool TVL Difference %
$17,528,180 $212,526 8147.55%
  • Refer to the sheet "Pool_Overview" for details

Editorials

There are some errors that we've noticed and are not necessarily data errors.

Subgraph data is not updated

  • The latest subgraph data of the Osmosis protocol was from the 23rd of January 2023.

Pool and Events section

  • The pool and events sections cannot be accessed and they are displaying some issues where it says 'Failed to fetch'
  • Refer to the sheets 'Pool_vault_schema', 'Pool_snapshots' and 'Events'.

Please refer to the attached worksheet for more details.

SerenityFund avatar Feb 20 '23 17:02 SerenityFund

@corerouter Osmosis QA here

bye43 avatar Feb 20 '23 21:02 bye43

Thank you very much for the validation. Please find my feedbacks below.

Osmosis Dex is the first DeFi subgraphs for Cosmos blockchain according to my knowledge. The support for Cosmos by The Graph is just rolled out and so far I did not find any important projects using the infrastructure. Just some demo subgraphs from the graph node development team can be found. It causes great challenges for the subgraph development.

  1. For TVL, volume and revenue related data, they all relate with the problem there are not price and accurate token balance data for osmosis dex.

At the beginning , there is not even stable coin on osmosis. So as suggested by @this-username-is-taken I retrieve daily price data from coingecko and use them as baseline price. Once the USDC was introduced into osmosis, I then deduce other coin's price when they swap with each other. In this way, I can get a relatively accurate price data for tokens in osmosis dex.

However, in osmosis, someone can deposit one coin, for example ATOM, into a liquidity pool such as ATOM/WETH, as liquidity. It is called "Join Swap Extern Amount In" transaction. The problem is in the log for the transaction, it just show how much ATOM is deposited into the pool in the beginning but did not show how ATOM and WETH are swapped, and their respective amount added into the pool as liquidity, as shown in the sample log at https://bigdipper.live/osmosis/transactions/20845D9BA3C17158C660D7EE9BD97755055B49D8C01ABB54E4FAC77BF86384FE Meanwhile, there are not eth_call supported for cosmos subgraph to retrieve the inputTokenBalance change from the block chain.

As a result, I can only compute the resulting inputTokenBalance change by myself. It looks the previous computation causes the TVL and volume problems for some pools. I just came out another solution and initial test shows it has better result.

  1. For Daily Transaction Count, the google sheet shows status is ok, so I assume the result is fine.

  2. For total pool count, the problem will be fixed.

  3. For the problem of Subgraph data is not updated. currently the host service only support data for osmosis chain up to 7.9M blocks, as shown in the status pages for all osmosis subgraph. image

  4. According to some Pool and Events sections can not be retrieved at https://subgraphs.messari.io/, I can successfully query such data at https://thegraph.com/hosted-service/subgraph/corerouter/osmosisdex, as shown below. So I think it is because there are some missmatch between the subgraph and validation portal's query graphQL. We may need to involve the validation portal's developers into the loop in order to fix the problem. image

The current fix right now is tested in some pools. Once the result is ok, I will deploy the new version to sync the whole osmosis dex transactions. However, as the subgraph will index all the osmosis chain from block 0, it may takes weeks to fully sync. The whole develop-test-develop process is very slow due to the slow syncing speed for osmosis chain by the host service.

Meanwhile, given the limited functionality of cosmos subgraph and infrastructure support of The Graph host service for cosmos block chain, I am afraid the non-EVM osmosis dex subgraph, based on new delivered The Graph support for cosmos block chain, may be very difficult, even impossible, to reach the same level data accuracy comparable with EVM subgraph.

Thank you very much for your work again.

corerouter avatar Feb 21 '23 06:02 corerouter

@corerouter Thanks for the comprehensive write-up looks like to me the majority of the issues are around TVL, but there should be a fix in place for that? When you deploy the new deployment with the fixes do you mind doing uploading the link here?

bye43 avatar Feb 23 '23 02:02 bye43

Thanks for the comprehensive write-up looks like to me the majority of the issues are around TVL, but there should be a fix in place for that? When you deploy the new deployment with the fixes do you mind doing uploading the link here?

@bye43 No problem. It may takes weeks as the osmosis subgraph on host service is very slow right now. Thank you very much for your understanding.

corerouter avatar Feb 23 '23 05:02 corerouter

@corerouter Is the deployment link above the same one for the updated version. If not, do you mind sharing just so we can track the syncing % to re-QA ASAP? Thanks!

bye43 avatar Mar 30 '23 09:03 bye43

@corerouter Is the deployment link above the same one for the updated version. If not, do you mind sharing just so we can track the syncing % to re-QA ASAP? Thanks!

Yes. It is the same one. I just checked it and found the latest fix has finished syncing. The TVL data in the latest version improve a lot in terms of accuracy but still somehow off. (The subgraph shows total TVL about 591M while the dapp shows TVL at about 163M. I will be able to dig deeper into it early next week to see whether I can still make some progress on this issue. Thanks!

corerouter avatar Mar 30 '23 13:03 corerouter

@corerouter Any update on the TVL issue here?

bye43 avatar Apr 20 '23 16:04 bye43

@corerouter Any update on the TVL issue here?

It looks like the method used in EVM subgraph to add up inputTokenAmount and then totalValueLocked does not accurately matches with data shown at osmosis stats pages at https://info.osmosis.zone/

I tried to solve it by querying the current pool's token amount directly with querying interface provided by osmosis chain from time to time in the subgraph, which is similar with EVM chain's contract call. Whether or not the feature is supported by cosmos subgraph remains an unknown issue. This question was asked in cosmos channel of The Graph discord several weeks ago, but so far it does not receive any positive confirmation from the team.

Meanwhile, I am also making some changes on the input token amount and total value locked tracking and then test it. Once there is any positive result, I will update in this issue. Thanks!

corerouter avatar Apr 21 '23 12:04 corerouter

@corerouter Just checking on this again, if you need anything on our side let us know!

bye43 avatar May 15 '23 18:05 bye43

A test fix was deployed and is syncing at https://thegraph.com/hosted-service/subgraph/corerouter/osmosis?version=pending now.

The problem now is related with USD denominated TVL and volume data. The USD value for osmos and cosmos token in this subgraph comes from coingecko and then other coins' price derive from them as there are not USDC and USDT stable coin before, which creates a lot of mess here. I would suggest to have a price lib for osmosis as same as for other chain such as Ethereum and Arbitrum. Then this subgraph will get token price by calling the price lib. It can isolate problem better and will also make it easier to deduce USD denominated TVL and volume data.

corerouter avatar May 16 '23 10:05 corerouter

@corerouter Thanks for the update! @steegecs @harsh9200 any thoughts on supporting a price library for cosmos?

cc: @dmelotik for visibility

bye43 avatar May 16 '23 13:05 bye43

@harsh9200 is probably better suited to answer this, I am not sure that Cosmos can be integrated into the pricing library with existing methods.

steegecs avatar May 16 '23 21:05 steegecs

@bye43 I will get back to you on this after doing some research on osmosis.

harsh9200 avatar May 17 '23 21:05 harsh9200