The Graph Indexer Office Hours #181

Events By Nov 01, 2024 No Comments
TL;DR: The open discussion focused on Blast, an Ethereum L2 based on the OP Stack:
- Blast offers native yield for ETH and stablecoins, automatically rebasing account balances.
- Gas revenue sharing allows dApps to claim gas fees spent on their contracts.
- Running a Blast node is similar to other OP Stack chains, with some specific requirements and considerations.

Opening remarks

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

GRTiQ 192

Catch the GRTiQ Podcast with Steve (Namwoong) Kim, co-founder at Four Pillars, a global blockchain research firm based in Seoul, South Korea.

Four Pillars is influential throughout the blockchain space, known for its deep knowledge and research of key infrastructure and unique tech emerging in web3.

Repo watch

The latest updates to important repositories

Repo watch notes now include the date of release and urgency indicator & reason.

Execution Layer Clients

  • Erigon New release v2.60.9:
    • Date: 2024-10-25 14:46:50 UTC
    • The latest release, 2.60.9, introduces a breaking change by restricting OS/Arch support to Linux arm64 and specific amd64 versions.
    • Additionally, it includes multiple improvements and bug fixes aimed at enhancing performance and resolving known issues, particularly around memory management and RPC errors.
    • Urgency indicator: Yellow
    • Urgency reason: Includes improvements and bug fixes but is not necessarily critical.

Consensus Layer Clients

Information on the different clients

  • Teku: New release 24.10.3:
    • Date: 2024-10-28 22:50:45 UTC
    • This release (24.10.3) includes bug fixes and networking improvements, such as enhanced block production compatibility and clean-up of old beacon states.
    • There are no breaking changes; however, upgrading is advised for optimal performance.
    • Urgency indicator: Yellow
    • Urgency reason: Important updates for performance stability.
  • Nimbus: New release v24.10.0:
    • Date: 2024-10-29 07:22:23 UTC
    • Nimbus v24.10.0 includes performance boosts and stability fixes, particularly improving execution payload block hash verification and validator client scalability.
    • While generally low-urgency, administrators should prioritize updating if the beacon REST API is exposed externally.
    • Urgency indicator: Yellow
    • Urgency reason: Important improvements, but not immediately critical.

Graph Stack

  • Indexer Service & Tap Agent (RS): New release indexer-tap-agent-v1.3.0:
    • Date: 2024-10-23 21:58:37 UTC
    • Version 1.3.0 adds a counter trigger for RAV requests and includes bug fixes to improve request handling. No critical updates are present in this release.
    • Urgency indicator: Yellow
    • Urgency reason: Important for performance, but not critical.

Launchpad Stack

Launchpad-charts:

  • New chart versions released with enhanced features and bug fixes:
    • graph-node-0.5.6
    • We have changed the access mode for some of the pods to be a [“ReadWriteOnce”] pod, and you will need to add that value to override the default for specific charts.

calinah | GraphOps posted: This will cause some breaking changes in charts as specified. Canary versions are already out. To avoid breaking changes, specify volumeClaimSpec: accessModes: [“ReadWriteOnce”] or recreate your sts.

Launchpad-namespaces:

  • New stable versions of Polygon, Graph, Arbitrum

Issues:

Protocol watch

The latest updates on important changes to the protocol

Forum Governance

Contracts Repository

Project watch

Graph Node update

Graph Node release coming soon. We’re waiting for some final integration tests to be complete, and then we’re going to publish.

Indexer Service TypeScript to be deprecated

The ecosystem is deprecating indexer service TypeScript in favor of the new indexer service written in Rust.

On Wednesday, December 4, at 9:00 AM Pacific Time (PT), the gateway will start enforcing Indexer Service TypeScript deprecation. Indexers still running Indexer Service TypeScript will not be eligible to serve queries.

Paka shared this meme during his presentation.

Your next steps

  1. See the official announcement with related instructions and documentation: Discord announcement.
  2. Start migrating today, if you haven’t already done so.
  3. If you have any questions or encounter any issues during the process, please visit the #indexer-software channel on Discord or message Gustavo (@gustavo) at Semiotic Labs or Paka (@paka | E&N) at Edge & Node for assistance.

Talk about TAP

From the chat:

Vince | Nodeify: I heard lingering things about problems with TAP, is that gonna be prod-ready by Dec 4?

  • Paka: From what I’m hearing from the Semiotic team and seeing from others, I do think so. Any feedback that this date may be too early would be helpful.

pili | GraphOps: Would be nice to have Gustavo from Semiotic in the upcoming IOHs for Q&A.

  • Abel: I’m happy to put that together.

Vince | Nodeify: Specifically a problem with large indexers with lots of receipts. Marc-André | Ellipfra, gold star or nah?

  • Marc-André | Ellipfra: It’s mostly there, but I’ve been having issues with invalid receipts, and some general performance problems. Gustavo is on top of things, iterating quickly with fixes.
  • Vincent | Data Nexus: For what it’s worth, we haven’t had any issues with TAP recently.

pili | GraphOps: New badges have been added to GraphSeer’s indexer profiles to show the TAP migration status of indexers.

An example of the new badges on GraphSeer that show an indexer is TAP ready.

Marc-André | Ellipfra: I’m probably wasting a certain proportion of query fees, unfortunately, but it’s for a good cause.

  • pili | GraphOps: But you have a green badge on GraphSeer.
  • Marc-André | Ellipfra: Worth it!

Questions about Graphcast [14:02]

Pierre | Chain-Insights.io posted: What is Graphcast, what does it do, and what is the roadmap?

Graphcast SDK is a decentralized, distributed peer-to-peer (P2P) communication tool that enables users across the network to exchange information in real time. It is designed to overcome the high cost of signaling or coordination between blockchain participants by enabling off-chain communication (gossip/cheap talk).

pili: Graphcast is there for indexers to use. We’re [GraphOps] maintaining the Subgraph Radio, and we’re working on some dependency updates for Grafana dashboards. If you have any feature requests, please share them in the Graphcast/Subgraph Radio Discord channel: 💬︱graphcast.

pili | GraphOps: Graphcast docs and workshops/demos here: Subgraph Radio playlist.

Catherine | Pinax posted: The Graph Indexer Office Hours #139 covered Graphcast.

Questions about Allocation Optimizer [15:12]

Pierre | Chain-Insights.io posted: What are the automation for indexing and allocations automation (except indexer-tools-v3 from @Vincent | Data Nexus) that are available? What is their status (active, inactive)?

Paka: In 2025, we want to put some more energy into improving the allocation optimizer experience for query fees. Right now, it’s limited to optimizing for indexing fees, but we really want to streamline the process for indexers to chase query fees. We’re in the early stages of thinking about that. The next step would be a tighter integration with indexer agent to streamline allocation management operations more.

Allocation optimizer for indexing fees is largely in maintenance mode. I’ve submitted some PRs recently to remove hosted service mentions, but there’s not really active development happening there. There is a variety of indexers using it to get pretty good results on the network, so I’d encourage checking that out if you’re interested.

Open discussion [17:19]

Blast

Blast has full protocol support on The Graph Network (Chain Integrations Tracking Doc). Here is the Blast guide for indexers.

Nereid, Developer Relations at Blast, joined IOH to talk about the Ethereum L2 based on the OP Stack.

View the presentation slides

  • Much of the content below is taken from the slides with additional context added from the discussion. Some comments have been condensed or lightly edited.

You can reach Nereid at:

Some links for more on Blast:

Nereid: You might be wondering where the name Nereid comes from. When I joined the Blast team, I was asked to choose a pseudonym that was moon-themed. All the top-tier moons were already taken, so I saw Nereid, which looked cool enough.

Turns out it’s a moon of Neptune, and I subsequently found out that it’s also the name of these sea nymphs from Greek mythology. They hang out in the ocean and help sailors who are on troublesome seas, which ends up being an appropriate fit for DevRel work.

Overview

What Is Blast? [20:05]

Blast is an Ethereum L2 based on the OP Stack. We’ve made some modifications to the execution layer client to enable some of these unique features.

I’m going to highlight these two features:

Both of these features give builders on Blast access to new ways of monetizing their projects.

Native Yield [21:57]

Account balances on Blast earn yield without requiring any action from users. ETH, WETH, and USDB are automatically rebasing.

Supported Tokens

  • ETH, WETH → (Blast) ETH
  • DAI, USDC, USDT → USDB

How It Works

  1. Bridged ETH is staked on Ethereum with a yield provider, e.g., Lido.
  2. An equivalent amount of (Blast) ETH is credited on Blast.
  3. Daily yield reports distribute yield to accounts on L2.
  4. On withdrawal, (Blast) ETH is burned, ETH is unstaked and released to the user.
High-level overview of how the system works on Blast.

A common criticism that I hear about native yield is that Lido and these other protocols are things that anybody can tap into. You can stake your ETH directly with Lido, you don’t need Blast to do that. That is true, but in reality, there’s a ton of what we call resting ETH sitting around that is not earning the yield that it could be for one reason or another. One place is ETH stuck in DAO treasuries or something like that. If you have your ETH in a multisig, it’s not earning any yield for you.

A barrier to entry is that you do need some DeFi knowledge to stake with Lido. It’s not huge, but it’s going to block some new users.

Another interesting case is LP (liquidity pool) possession, so if you’re providing liquidity to a liquidity pool, the funds you have there aren’t earning ETH for you, but the way native yield works on Blast opens up the possibility for you to get yield on that while you’re already getting the benefits of providing liquidity.

Yield providers are flexible in that they can be swapped out if another protocol comes along that offers better yield. In the future, we’re also hoping to see some Blast native yield providers, so homegrown protocols on Blast that can offer yield to the entire ecosystem.

Native Yield (continued)

Native yield works for all accounts on Blast. By default, EOAs (externally owned accounts) automatically earn yield. Smart contract (SC) accounts must opt in by configuring their yield mode.

Yield Modes

  • AUTOMATIC – Balances are automatically rebasing. EOA default.
  • VOID – Yield is disabled. SC default.
  • CLAIMABLE – Yield can be manually claimed by Governor.
    • You can configure a Governor, another account to which you’re delegating the right to claim that yield.

Account Model [29:58]

We’ve made some changes to our execution layer client, forking OP Geth in order to support native yield and gas revenue sharing.

When I said earlier that yield reported to the L2 gets distributed out to all accounts, this is the actual mechanism that makes that possible.

balance = sharePrice * shares + remainder

Native Yield Use Cases [32:15]

Native yield is a way for teams to access revenue that they otherwise wouldn’t, and we’ve seen some cool experimentation with this feature. Here are a few examples:

Gas Revenue Sharing [36:38]

On Blast, dApps can claim the gas fees that users spend on their contracts.

This gives dApps access to the benefits of running their own app-chain without additional infrastructure costs.

Protections against abuse:

  • Immediately you’re able to claim 50% of the L2 execution costs associated with your dApp. Over a period of about 30 days, that gas matures and you’re able to get 100% of it.
  • This is to prevent situations where a malicious developer could eat up our entire block space and then immediately get a refund in the gas.

Running a Blast Node [39:21]

Nereid: How many indexers here have experience working with other OP Stack chains and running nodes for Optimism or Base?

  • Pierre | Chain-Insights.io: I do Optimism and Base archive nodes.
  • Matthew Darwin | Pinax: We run OP stack chains. 😉
  • Marc-André | Ellipfra: We pretty much all do.
  • Pierre | Chain-Insights.io: Using OP-Reth and OP-Node.
  • Johnathan | Pinax: Pinax supports Optimism, Base, Boba, Minato, Unichain, Mode, Zora…

Nereid: The process of running a Blast node is pretty much identical so it should be super familiar.

Because Blast is based on the OP Stack, running a Blast node will be a familiar process to anyone with experience running Optimism or other OP Stack nodes, e.g. Base.

Nereid: Because of the modifications we made to the execution client, we don’t follow the update schedule of Optimism and the other OP Stack chains. So it’s important that if you’re going to run a Blast node, you tune in or subscribe to some of the channels (Blast Developer Discord: #announcements channel) where we make announcements on upcoming upgrades. We’re currently still on Ecotone, which is the upgrade where EIP-4844 or blobs was introduced.

From the chat:

Vince | Nodeify: Weekly snapshots, bless you sir.

Matthew Darwin | Pinax: No Docker. 😉 3TiB is not big. 😉

Hardware Requirements [43:45]

Requirements will vary depending on actual usage/load.

Ballpark, this is what we recommend:

  • CPU: 8vCPUs
  • MEMORY: 32 GB
  • STORAGE:
    • 4TB disk space for GETH data
    • If using a snapshot, you will need an additional ~3TB to decompress
    • 3,000 IOPS and 125 MiB/s throughput, e.g., AWS GP3 volume

Load Balancing [45:11]

When running multiple nodes for redundancy, use a load balancer. Some options include:

  1. Build and run proxyd.
  2. Use nginx (see below for example configuration).
  3. Use a managed load balancer like AWS Application Load Balancer.
Example configuration for nginx.

Tips & Common Issues [46:43]

  • Avoid using snap sync, insufficient peers make this unreliable.
  • Use an L1 Beacon RPC that maintains historical blob data.
    • Ankr, Chainstack, Conduit, Nirvana Labs, QuickNode, dRPC
  • Having an archive node can get you out of a jam.
  • Use the correct value for l1.rpckind for faster syncing.
    • alchemy, quicknode, infura, parity, nethermind, debug_geth, erigon, basic, any, standard

Getting Support [49:39]

  • Blast Developer Discord
    • Open a ticket
    • Check out #infrastructure channel
    • Office Hours: Second Thursday each month @ 12 PM PT / 7 PM UTC
    • #announcements channel
    • Subscribe to channels to ensure you get important upgrade announcements.
  • Developer Announcements Telegram: @blastdevannouncements
  • Documentation

Full Stack Chain [54:00]

Nereid: Right now, the user experience when you’re doing stuff on-chain is fragmented; right? You need to get a wallet, fund that wallet, and then navigate to all these different dApps. The idea of the full stack chain is to have all this bundled up in one experience, so we want to be able to onboard users quickly. The Blast app is going to have a built-in on-ramp, and you’ll have access to a wallet, and all of the dApps in the ecosystem will be accessible there.

We’re really trying to make it easy for new users to come online and start experimenting in the Blast ecosystem, as well as a great user experience for people who already have experience.

Q&A

Vince | Nodeify: Curious about the decision on being an L2 and not just a rollup, seems like an app chain, no?

  • Nereid: It’s not quite an app chain. I mean, we have a bunch of projects building on Blast, and a way of viewing it is like an app chain for everybody, right, because we have this gas revenue sharing. Some dApps that might want to roll their own app chain can simply deploy on Blast and get some of the same benefits.

Mickey | The Graph | E&N: We still need Blast indexing rewards? IIRC

  • Nereid: Right. I believe that is the case.
  • Vincent | Data Nexus: Yes, only Blast is enabled, but subgraphs are deployed under blast-mainnet.
  • Matthew Darwin | Pinax: Hopefully The Council will fix that soon.
  • Read the Discord message regarding corrected Blast indexing rewards: Discord announcement.

Vince | Nodeify: Just to clarify, are the snapshots archive?

  • Nereid: Correct, the snapshots are archive. We don’t have testnet snapshots at the moment.

Pierre | Chain-Insights.io: What are the current needs for subgraph(s)? Is this something that needs to be indexed? Indexing Account Balances

  • Nereid: Not sure how to answer that. I remember there was a while back when the incentives weren’t turned on for Blast, and I’m not actually sure of the status of that now. But in general, dApps need indexing solutions. dApps are always looking for a better experience indexing so they have access to the data they need in the dApps.

Pierre | Chain-Insights.io: Any plans for validators on Blast?

  • Nereid: I’m glad you asked that. We don’t have any specific plans, but just as a general statement, we’re on this path to progressive decentralization and that’s something that we’ll be looking at in the future.

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 *