This month in curation #10 | December

This month:

  • Vitalik proposes The Graph as an alternative to Ethereum archive nodes

  • The Graph is coming to both Solana and Cosmos

  • zkSync to be supported

Historical Ethereum Data Access After EIP-4444

  • After years of R&D, Ethereum 2.0 is just around the corner. One of the EIPs being considered for inclusion in Eth 2.0, is EIP-4444 - Bound Historical Data in Execution Clients

  • This Ethereum Improvement Proposal may have huge implications for The Graph. Some key points directly related to EIP-4444 are listed below. Though, I highly recommend reading the full blogpost. The blogpost gives a great overview of The Graph’s approach to verifiability, and the roadmap for removing trust throughout the protocol.

    • EIP-4444 is being heavily discussed in the Ethereum community as it would add history pruning to Ethereum clients. Requiring nodes to store less history would benefit validators by making it easier to sync and verify chain state - unlocking higher gas limits without sacrificing security. Higher gas limits add capacity for rollups, increasing Ethereum’s throughput and reducing transaction costs.

    • It would also support greater decentralization as it would make sure that even as Ethereum state grows, people can continue to validate the chain on consumer grade hardware.

    • This proposal would, however, remove some functionality for Ethereum clients. Nodes would no longer be able to serve requests for historical data once pruned. Yet, many dApps require access to historical data from Ethereum to show past user behavior like user account balances, transactions, votes and similar from the distant past. This is something The Graph community can support.

  • During a recent AMA on Reddit, Vitalik Buterin proposed The Graph protocol as one alternative to Ethereum archive nodes for historical data. Following the AMA, an article titled “The Graph positioned to unshackle Ethereum 2.0 throughput” was published in Yahoo!Finance.

  • If The Graph community wish to work towards this goal, a few adjustments to the roadmap is needed.

    • The community needs to ship an Ethereum Network Subgraph that expose raw blockchain data - like all the blocks, transactions, accounts and logs. See this github issue

    • Secondly, The Graph need to support higher levels of Verifiable Indexing and Verifiable Queries on this raw blockchain data.

    • With these improvements, The Graph Network will be able to ensure that verifiable access to historical Ethereum data is always available through an open marketplace.

Solana Integration

  • StreamingFast are leading the Solana integration for The Graph. This was announced by Alexandre Bourget at the Solana Breakpoint conference in Lisbon. Twitter thread | Solana Breakpoint Presentation | Community Talk #5
    • Solana is a very high throughput chain, which makes it challenging to index. StreamingFast’s firehose instrumentation is the key component that allows The Graph to Index Solana and other high throughput chains.

    • StreamingFast is working with Serum and Solana develeopers to bring The Graph to Solana, improving the Solana development experience.

    • StreamingFast had a working, firehose-instrumented Solana node running before joining The Graph. They are now resuming this work.

    • StreamingFast is aiming to integrate Solana some time during Q1 2022.

Cosmos Integration

  • The Graph is coming to Cosmos, and Figment will be leading the integration. This was announced by Joseph Al Chami during the Cosmoverse conference in Lisbon. Blogpost at | Cosmoverse Presentation | Community Talk #6
    • Cosmos is a network of blockchains that connect using IBC, the Inter-Blockchain Communication protocol. There are currently 20 IBC enabled chains within the ecosystem. At the center of Cosmos is the Cosmos Hub blockchain.

    • The Graph will integrate with multiple blockchains in the Cosmos ecosystem.

zkSync will be the first ZK-Protocol indexed by The Graph

  • ZkSync is a Layer 2 scaling solution on Ethereum that offers low gas and fast transactions. Powered by zero knowledge technology, it promise not to compromise on security. Read the announcement here.

Core Development Update

This forum post details ongoing work and research. Below are some highlights.

  • Graph Node 0.25.0 | Github Release
    • Added support for API version 0.0.6 in the mappings.
    • Added initial support for NEAR subgraphs
    • Added Firehose Blockstream support
    • Added support for a minimum block filter: block: { number_gte: $minBlock }This can be used to ensure that time never travels backward when polling for data in a loop. See polling for updated data in the docs.
    • Added support for _in and _not_in filters when querying Enums

  • File Data Sources | Forum Post | Hackmd
    • This proposal introduces an Availability Chain which tracks the availability of files referenced by subgraphs. It also adds dynamic “file” dataSources to subgraphs.
    • Many subgraphs depend on off-chain data storage protocols. The aim of this proposal is to allow reliable, performant and deterministic indexing of these subgraph.

  • Rust Gateway is live
    • A new, more performant Gateway was rolled out after extensive performance testing. This included improvements in the Indexer Selection Algorithm, and more.

  • GraphQL API
    • There is an ongoing discussion about feature support and versioning, pecifically focusing on the GraphQL API, (which does not currently have versioning).
    • [WIP] Support for filtering and sorting on the basis of child entities | Github Issue
    • [WIP] Add a _changeBlock attribute on all entities. This automatically generated field would contain the blocknumber the entity was last changed. You could, for example, use a filter to only retrieve entities that have been changed since block x.

Governance Updates