The Graph Indexer Office Hours #167

Events By Jul 29, 2024 No Comments
TL;DR: In this recap of IOH #167, learn important considerations for the release of Erigon v3.0.0-alpha1, plus the Linea team answers questions about the chain, which is an EVM-compatible ZK rollup that has recently integrated with The Graph.

Opening remarks

Hello everyone, and welcome to episode 167 of Indexer Office Hours!

GRTiQ 178

Catch the GRTiQ Podcast with John Belizaire, CEO of Soluna Holdings, a pioneering developer of green data centers designed for batchable computing, utilizing wasted renewable energy.

Repo watch

The latest updates to important repositories

Execution Layer Clients

  • Erigon New releases:
    • v2.60.4 :
      • This release brings some improvements and bug fixes, allowing for graceful exit from CL downloading stage and contains bug fixes for eth/tracers.
    • v3.0.0-alpha1:
      • Erigon v3 now requires 64GB RAM and Golang 1.21. It supports almost all RPC methods and networks except Mumbai.
      • Key changes include syncing from scratch without re-executing all history, smaller chaindata, and the ability to store state on fast disks and history on cheap disks. Archive Node is the default, with options for Full and Minimal Nodes.
      • Known issues include performance problems and an eth_getLogs field index always being 0.
      • Important: Upgrading from Erigon v2 is not supported; a re-sync is necessary.

Payne added: There are some subgraphs, including Uniswap, that you can’t sync from scratch with Erigon v3, so consider this before you switch. We’re trying to find the root cause. I opened an issue in the Graph Node repo, and I’ll keep you posted.

Issue: [Bug] Some subgraphs can’t be synced under Erigon V3 and OP_Erigon #5558

Regarding the 64GB RAM consumption detail, I don’t think that’s valid. It’s probably a typo. I’m at chain head with Gnosis and I’m using 8GB.

  • sfeth/fireeth: New releases:
    • v2.6.5 :
      • Fixed a bug causing nil transaction receipts in the blockfetcher and another causing hangs in substreams with non-zero first-streamable-blocks, altering their ‘cached’ hashes.
    • v2.6.6
      • Bumped substreams to v1.9.2 to prevent Noop handler from sending outputs with ‘Stalled’ step in cursor, and bumped firehose-core to v1.5.6, adding –reader-node-line-buffer-size flag and increasing its default value from 100M to 200M to handle large blocks on Solana.
  • Nethermind: New release v1.27.1 :
    • This release is a mandatory upgrade for all nodes operating on the Gnosis chain. Please update your node to this version to ensure correct node functionality.
    • This release fixes improperly enabled pre-warming blocks on Aura and OP chains. In a very rare situation, this could cause an issue in block processing.
  • Heimdall: New release v1.0.8-beta :
    • This is a maintenance release for Heimdall, which adds a new /status endpoint to Heimdall’s rest-server.

Announcement about Launchpad Office Hours

The GraphOps team recently decided to merge Launchpad Office Hours (LOH) into Indexer Office Hours to create a cohesive experience and engage more of the community.

LOH updates will be biweekly (as below under Launchpad Stack), plus in-depth segments when needed for those interested in more detailed discussions on infrastructure, Kubernetes, and Launchpad.

Launchpad Stack

Launchpad-charts:

  • New versions of Erigon, Arbitrum-Nitro, Lighthouse, Subgraph-Availability-Oracle charts

Launchpad-namespaces:

  • New stable versions of Ethereum, Gnosis, Polygon, Arbitrum, and Storage namespaces, monitoring Sealed Secrets and Ingress

There are some big changes coming to some of the Launchpad charts that we’ll talk about in the next few weeks.

Protocol watch

Contracts Repository

Open discussion

Note: Content has been lightly edited and condensed.

Chain watch with Linea

Linea is a Layer-2 solution designed to scale Ethereum efficiently. It’s an EVM-compatible zero-knowledge (ZK) rollup that has recently integrated with The Graph.

Resources:

[Timestamp 10:38]

Clemens [seelemons on Discord], a solutions architect for DIN (decentralized infrastructure network within Consensus), and Diana, an expert in Linea, joined to answer questions about the newly integrated chain.

Intro to Linea

Clemens: Linea is an L2 ZK EVM with type 2 matching, so we have full EVM equivalence, matching all the way to gas calculation. It’s built on top of Besu, which is built within Consensus and given to the Hyperledger Foundation, with a Java-based consensus and execution layer. The execution layer is Besu and the consensus layer is Teku.

Some of the most attractive features include the equivalence for EVM, so there is no need to switch out or change any of your smart contracts. You can write smart contracts on the L2 as if on the L1, using existing tooling and languages. Also, Linea is connected to Besu, so it is fairly low-level to Java and implemented quite closely.

[Diana experienced some audio challenges and came on the mic at timestamp 42:10. In the meantime, Clemens took some questions.]

Payne | Stake🦑Squid posted: wen Erigon support for Linea?

  • Clemens: I believe we have Geth and Besu, but not sure if Erigon is on our timeline. [Note: Turns out Erigon is supported out-of-the-box.]

Matthew Darwin | Pinax posted: How well does this stack run on bare metal? (no docker). New releases are all published on GitHub?

GitHub resources:

Johnathan | Pinax replied: Linea is using general Geth (go-ethereum).

Johnathan | Pinax posted: Will Linea support a higher Geth version (v1.14.0 or higher)?

  • DianaB posted: No[t] on the roadmap.

Payne: I think the reason they’re asking about that specific version is that features have been added for Firehose support in the upstream Geth, which would help all indexers run the stack better. Besu doesn’t support them.

Matthew Darwin | Pinax posted: There are new tracing features in later Geth (for Firehose).

  • Clemens: We can take note of that to help with The Graph support.

Matthew Darwin | Pinax posted: The StreamingFast team is also working on Erigon v3 Firehose support for another option.

Johnathan shared from the Linea docs: Use a binary distribution: You can install the Hyperledger Besu or Geth client to run a Linea node from a binary distribution.

Archive node sizes

[Timestamp 20:45]

Payne: Do you know the difference in size between the Geth-Linea version and the Besu client?

DianaB posted: Snapshot size?

Payne: Yeah, snapshots or active directory size, basically, like how big is the archive?

Vince posted that it was around 1.2TB a couple of months ago, but I think that’s Geth? Curious how big the Besu client is?

Vince | Nodeify posted: The Linea archive node was 1.2TB on April 2, 2024.

DianaB posted: 1.2 T[B], the Besu archive. Approximately the same as Geth.

Marc-André | Ellipfra posted: Erigon 176GB.

Payne: Marc, does it support Erigon already?

Marc-André: I think so. I have it running. I think it works, yes.

Payne: All right. Well, that’s very encouraging. Is that Erigon v2 or v3?

Marc-André: v2.

Payne: Do you mind sharing the environment variables that you run it with?

Marc-André: Sure, I’ll paste in the chat.

There is an initialization step that needs to be performed first to create the Erigon database.

erigon thorax/erigon:v2.59.3 init --datadir=/home/erigon/.local/share/erigon /config/genesis-mainnet.json

genesis-mainnet.json comes from: https://docs.linea.build/files/besu/genesis-mainnet.json

erigon:
image: thorax/erigon:v2.60.2
command:
--networkid=59144
--db.size.limit=8TB
--bootnodes enode://ca2f06aa93728e2883ff02b0c2076329e475fe667a48035b4f77711ea41a73cf6cb2ff232804c49538ad77794185d83295b57ddd2be79eefc50a9dd5c48bbb2e@3.23.106.165:30303,enode://eef91d714494a1ceb6e06e5ce96fe5d7d25d3701b2d2e68c042b33d5fa0e4bf134116e06947b3f40b0f22db08f104504dd2e5c790d8bcbb6bfb1b7f4f85313ec@3.133.179.213:30303,enode://cfd472842582c422c7c98b0f2d04c6bf21d1afb2c767f72b032f7ea89c03a7abdaf4855b7cb2dc9ae7509836064ba8d817572cf7421ba106ac87857836fa1d1b@3.145.12.13:30303

^^ stripped common parameters

Clemens: There’s a Dune dashboard for Linea:

  • Erigon 176GB
  • Geth 2.2TB

Payne: The difference between Erigon and Geth is like night and day. I’m really curious how much it’s going to improve when you run it with Erigon v3 because it also cuts the size requirements in more than half I think, around of third of the actual size, so it will be around 60GB.

Marc, I see that you’re using the canonical Erigon version, not the OP [Optimism] one, so I guess it’s fully compatible with Erigon, which is very surprising. You don’t normally see L2s this compatible out of the gate.

Marc-André: Honestly, I was a bit surprised at how simple it was to get it running.

Vince | Nodeify posted: I guess Erigon will have to be added to the InfraDAO Linea Guide.

Payne: Vince, I can add it to the InfraDAO docs later today or tomorrow because I need to set one up anyway.

Marc-André | Ellipfra posted: The fact that we can benefit from Erigon with just a few extra flags says a lot about the level of EVM compatibility Linea achieved. It’s impressive.

InfraDAO

Clemens: How long has InfraDAO been around?

[Timestamp 30:12]

Slimchance: InfraDAO started around three years ago. It was before the MIPs program and it’s already been two years since it started. The program concluded in the spring of 2023.

We don’t have an official roadmap, but we are working on R&D projects, extensive testing and reporting on new chains and new data services, and decentralizing components in The Graph ecosystem. Some are already decentralized. We are looking to be a backup for network components and ancillary components that are necessary for the network to function, and we are looking to decentralize that by having InfraDAO and other teams have their own instances.

For example, there have been some issues with IPFS over the past few days that some of you have noticed, and InfraDAO, Pinax, and other teams are working on improving that.

Matthew from Pinax has been working closely with us on the chain integration process making sure new chains are ready to be added to The Graph Network with indexing rewards. We looked at Linea and make sure everything was working before we moved it through the integration process and sent the report to The Graph Council for voting.

Matthew Darwin | Pinax posted: Johnathan | Pinax will be working on IPFS from the Pinax side.

Why choose Besu?

[Timestamp 42:10]

DianaB: It was the easiest way for us to proceed and deliver faster because Besu is in our ecosystem and we have a tight collaboration. It was easy for us to tell them what we need, what we need to develop, and for them to deliver.

Linea priorities

Clemens: Is there anything you can add about the interoperability with more clients or faster syncing?

DianaB: We support them, but not by design. They just work. More client diversity within the Linea network is not yet on the roadmap. Currently there are other priorities like decentralization, and client diversity will come later. This will not break current compatibility so that if you have an Erigon node, you will still be able to sync.

Clemens: I think right now most of the sequencers and validators of L2s are centralized. Is that what you mean by decentralization?

DianaB: Yes, I’m referring to block production or block validation.

[Timestamp 45:27]

Marc-André | Ellipfra posted: Presumably Geth and Erigon can sync the chain, but they cannot produce blocks.

Clemens: There’s a comment that the block production is done on the Besu side and then Geth and Erigon would sync to the chain.

DianaB: Yes. We had an altered version of Geth at the very beginning that was doing what Besu is doing now, but it was not vanilla Geth. With vanilla Geth, you would be able to retrieve the data from new blocks. If you are an RPC provider and you have an archive node, that’s enough right? And I’m thinking mostly of how the size of the archives can grow. It can become increasingly hard to manage.

Upcoming changes to Linea

[Timestamp 49:09]

Clemens to DianaB: Are you working on anything fun or interesting for upcoming releases?

DianaB: During the summer, things are quiet and we’re not really rolling out changes right now.

One important thing is that we have nodes that are in charge of trace generation and currently this is handled by an altered version of Geth that we have, which is soon going to be replaced by Besu nodes. We are moving to using more and more Besu. We will still keep the compatibility with Geth, and we are running Geth “edge” nodes that are publicly available for people to retrieve the new blocks and connect to the Linea network. Or you can run your own node. We will have that for Besu and Geth.

Clemens: Are there any docs on the edge nodes?

DianaB: Yes, there are. They are currently being updated, and I’ll share a link once they’re ready. They’ll be ready soon.

We do have some other nodes, but we are preparing some brand new nodes that are in multiple regions so that you can have a very good link to your location.

Geth for Linea

[Timestamp 52:24]

Payne: It would be really nice if either of you could chat with the team that’s maintaining the Geth part. Maybe they can get it updated to the 1.14.0 version, so we can get better support for Firehose. I know you are moving toward using Besu, but it would really help us.

DianaB: It would be interesting to see how you use it and what are the requirements that you need. Yeah, we can definitely reach out and propose this support of the Geth client.

Payne: Do you know if there’s a different version for Geth to support Linea or is it like Matthew and Marc are typing in the chat, that you don’t need a specific version of Geth.

DianaB: No, you don’t.

Payne: Okay, so if it’s just a canonical version of Geth, then it’s already there. Same thing with Erigon, which is awesome.

DianaB: We personally didn’t test Erigon, but if you tell me it works, then great!

Matthew Darwin | Pinax posted: Sounds to me based on the discussion, that out-of-box Geth should just work?

Marc-André | Ellipfra posted: Maybe normal Geth would work for Firehose.

Matthew Darwin | Pinax posted: Exactly. Johnathan | Pinax can test it.

Johnathan | Pinax posted: We already using normal Geth for Linea Firehose.

Vincent | Data Nexus posted: We’re running the canonical version of Geth as per their docs. v1.13.15 at the moment.

Payne: I’m super excited for any chain that supports Erigon out-of-the-box—it’s just perfect.

Marc-André | Ellipfra posted: I have 5 subgraphs synced on Linea with Erigon.

Vincent | Data Nexus replied: Is there anyone else syncing those with subgraph radio to check against POI divergences?

Marc-André | Ellipfra replied: Good point.. yeah we should be doing that. We’re quite a few on QmbERCRD5JRwKNY4tGic9FMSXoxK3N2Dm1fTFTH4kxwFQY .

Payne: One thing Vincent pointed out is that we need to be careful of subgraph divergences and if there’s any different data between Geth, Besu, and Erigon when you sync the subgraphs. That’s something we can test and report back.

Vincent | Data Nexus posted: We have Linea Geth running but haven’t hooked it up to our indexer stack yet, so if not, we can be the ones to test.

Other requirements?

[Timestamp 54:54]

DianaB: Are there any other requirements that you would like to get from Linea in terms of diversity or Erigon?

Payne: With the support of Erigon by default, we will also have access to the trace filters that are built into Erigon, so assuming those work, we should be all good. Linea is already more diverse than any other chains we’ve added lately, so in terms of client diversity, it’s just perfect since it supports native Geth and Erigon.

Payne: Are there any snapshots publicly available to be downloaded for the Besu client?

DianaB: Not yet, as far as I know, no. I don’t think it would be much work on our end; we already have them. Would be a nice feature.

Payne: It would be really nice to have them. Sometimes you just need a quick check between different clients without having to wait for 2–3 weeks to sync from scratch. It’d be nice to have it downloaded once in a while to have it stored locally.

The fact that it’s compatible out-of-the-box with Erigon and Geth makes it so easy to run. And I guess everyone here should run and support Linea just because of the size… you can fit it on a USB drive!

Author

We're a web3 service provider specializing in blockchain indexing operations. Our mission is to enable creators to achieve their true potential with web3 technology. We want to help developers reliably access blockchain data in a consistent format so you can create amazing experiences for your applications.

No Comments

Leave a comment

Your email address will not be published. Required fields are marked *