This Month in Graph Indexing - August 2021 Edition

:newspaper: This Month in Graph Indexing - August Edition :newspaper:

Welcome to This Month in Graph Indexing where we look back at the last month and highlight the most interesting happenings in The Graph Indexer community.

:dizzy: ChainSafe awarded a grant by The Graph Foundation for Filecoin integration. :dizzy:

Adding Filecoin support to The Graph will allow subgraph developers to build subgraphs that index data from Filecoin blocks and actors.

The grant will leverage ChainSafe’s expertise within the Filecoin ecosystem. As official implementers of the Filecoin spec in Rust (“Forest”), a mining participant on the Filecoin network, as well as being one of the first inductees to the Filecoin MinerX fellowship, ChainSafe possesses an intimate familiarity with the core codebase and holds key relationships with the folks over at Protocol Labs and the Filecoin Foundation.

Additionally, ChainSafe has leveraged both the IPFS and Filecoin stack to launch products like ChainSafe Files and Storage, which provide intuitive front-end UI’s to interact with the otherwise sophisticated technology.

:small_red_triangle:The number of Subgraphs that have migrated towards the decentralized protocol keeps growing :small_red_triangle:

We’ve been witnessing a continuous growth in numbers of protocols that have decided to leverage the power of the decentralized network of The Graph and have migrated their subgraphs to let 150+ indexers do the job that the hosted service is doing now.

Depending on their network signal, this allows them to have extremely high redundancy and lower latency compared to the centralized solution developed and maintained by Edge and Node, known as the legacy explorer (or hosted service).

Indexers can now allocate towards those subgraphs in proportion to their signal in order to serve data to all the subgraph consumers, but also to reap indexing rewards and query fees.

The subgraphs that have migrated thus far, are the following:

  • Sushi Exchange
  • Pickle Finance
  • Synthetix
  • Radicle
  • 0x Exchange
  • Yearn Vaults

…and many others

:headphones: Chris Remus, an Indexer at The Graph, kickstarted a healthy and much needed discussion around decentralization in a recent GRTiQ Podcast :headphones:

The Podcast from the last days of July had Chris Remus as a guest, an Indexer at The Graph, where he talked about the need for decentralization, and the implications of centralization in networks as a whole.

This generated a brilliant pre-proposal around the subject on the Forum, where a number of network participants have debated and voted for solutions to combat stake centralization, which later on evolved into a proposal written by Oliver Zerhusen.

It is worth mentioning that attempts to kickstart discussions around the same topic have been made in the past, but at that time, it didn’t lead anywhere. Given that the protocol was much younger back then, let’s hope that this time around, things are going to change for the better.

:exploding_head: Dennison Bertram managed to build a proof of concept of a Blockchain inside a Subgraph :exploding_head:

This basically acts like a containerized blockchain that runs inside a Subgraph, as Dennison explained in his Tweets. This being a proof of concept for now, it’s missing a lot of features that real blockchains have, such as nonces, protection, etc but as he said, the point of it is to prove that it’s possible! People can play around with it in the legacy explorer.

This is massive, because it makes you wonder where would The Graph head towards, in the future. :slightly_smiling_face:

:bulb: The 6th Core Dev meeting has taken place this month :bulb:

Previously known as the Protocol Town Hall, the Core Dev Meeting focuses on all things protocol and GIPs. In this month’s call, we’ve had StreamingFast Figment and Semiotic AI discussing about their work in the protocol.

Semiotic AI is building a reinforcement learning AI in order to better price the queries based on their complexity. The research produced by Semiotic AI is a step toward rewarding pro social behavior during protocol negotiations. This is achieved by opening a dialogue between two neural network agents tasked with a simple negotiation. Depending on the factors – such as negative or positive reinforcement – decided by Semiotic AI, agents are trained to negotiate. Prosocial agents are trained to maximize benefit, but never at the cost of other network participants.

:fire: StreamingFast is opensourcing their Firehose stack :fire:

Following their RFC release earlier this month, StreamingFast is beginning to opensource their Firehose stack. Firehose is a files-based and streaming-first approach to processing blockchain data.

The goal of the Firehose is to provide a way to index blockchain data which:

  • is capable of handling high throughput chains (network bound)
  • increases linear indexing performances
  • increases backfilling performance & maximize data agility by enabling parallel processing
  • reduces risks of non-deterministic output
  • improves testability and developer experience when iterating on subgraphs
  • simplifies the operations of an indexer by relying on flat data files instead of live processes like an archive node
  • reduces the need for RPC calls to nodes

GitHub - streamingfast/playground-ethereum-firehose: Firehose setup for Ethereum

:dagger: First indexer slashed on mainnet :dagger:

After a very thorough investigation lead by another indexer on the network, Oraclegen disputed Minatofund for malicious behavior.

The disputed indexer decided to take advantage of the current implementation of the Arbitration Charter and manipulated a number of subgraphs in order to gain financial advantage over other indexers whilst also prohibiting them to join them by deprecating the subgraphs.

The Arbitration team decided that the disputed indexer showed a pattern of behavior that was intended purely to capture rewards without providing the intended value of an indexer on the network. Indeed, the disputed indexer themselves has been transparent in their intentions stating that “we did think that the exception rule can be used to create an exclusive environment just like described below.”

The Arbitrators then concluded to accept the dispute, thus the indexer in question getting slashed for a total amount of 82,867 GRT.

As a note for any delegators reading this, slashing only occurs on the indexer’s self stake, so your funds are safe. :slightly_smiling_face:

Nevertheless, this has marked the first ever slash on Graph’s mainnet. So then, what lessons should we learn from this? The network has eyes everywhere, and it’s unlikely that an economical attack can go unnoticed for too long.

:bug: Critical vulnerability exploited in GETH nodes that haven’t upgraded :bug:

On Tuesday, Aug 24th, the Go Ethereum team, also known as GETH, released a patch to a high severity vulnerability. Due to the fact that a large number of Ethereum nodes didn’t upgrade to the latest release, someone decided to exploit this vulnerability at block 13,107,518 which essentially forked off a large part of the nodes.

At the time of writing, there are over 40% of the GETH nodes still on an older version, and being actively exploited. In November, the Ethereum network saw a similar disturbance after users failed to upgrade to the latest Geth release, version 1.10.X. At the time, Geth developers said the event was due to a lack of communication about the urgency of the upgrade.

Luckily, most miners have upgraded in time, so the correct chain is also the longest.

After ETH mainnet GETH vulnerability was exploited, other malicious actors started attacking other EVM chains such as BSC and Polygon.

If you haven’t done so, upgrade your Ethereum Nodes as soon as possible and avoid broadcasting any transactions unless you are 100% sure the nodes are on the canonical chain.

The exploit only affected GETH and Erigon clients, whilst OpenEthereum clients remained unaffected, for now, although it’s highly recommended to upgrade to the latest versions of each:

  • Geth v1.10.8+
  • Erigon v2021.08.04+
  • OpenEthereum v3.3.0-rc.7