I understand that querying for data on Ethereum is a pain in the neck and that The Graph indexes events so that developers can more easily get their most precious blockchain data.

However, I'm not sure I follow why The Graph can be described as decentralised (as they claim). It seems they abstract the process of retrieving data stored on a server by putting GraphQL in between.

Could someone explain?


It is server-based and topologically similar to a caching strategy.

A purist might disagree, but an argument can be made that it is perfectly fine to use any sort of caching strategy (e.g. etherscan) subject to a few conditions.

Users should be able to verify results independently, if they want to. This implies transparency. The cache should emit transaction hashes, addresses, etc. that users will need if they want to verify query results. If there will be service or API that emits facts about the blockchain, it should take care that all of its claims are auditable.

From a user perspective, it shouldn't make any difference which valid copy of the cache is used. If the app backend is operating without reintroduction of centralized privilege then it should be theoretically possible for a user to stand up their own local cache and use that, if they want to. The app design should allow that, so take care to avoid subconsciously reintroducing dependency.

In my opinion, an app developer will want to take care to accommodate alternative deployment scenarios if they wish to claim that the potential for application decentralization isn't compromised by their implementation decisions. If the app is said to be decentralized, then prove there are no centralized dependencies at the application level.

In my opinion, one can use something like Graph as a backing data layer and still enable decentralization, provided there is a clear path to using the system without reliance on the offered server(s). It may be advantageous to create a business model that incentivizes third parties to stand up nodes and compete. In this way, the original app architect can demonstrate that the system doesn't depend on business continuity. Food for thought.

If there's going to be a server, a user can consider if that server is a necessity or a convenience.

Hope it helps.

| improve this answer | |
  • Since when are answers on this platform inclusive of opinion? The Graph is centralized promising one day to be decentralized. All you have to do is look at the history of the world and you will see that any entity that holds a centralized position not only does not give up that position but does everything in their power to consolidate that position. At least that's my opinion. The original question exposed the Emporer's complete lack of clothing. – Thomas Jay Rush May 7 '19 at 21:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.