indexing-multichain

star 0

Use when deploying an indexer across multiple chains. Entity ID namespacing to avoid collisions, chain-specific configuration patterns, and the context.chain runtime API.

enviodev By enviodev schedule Updated 2/25/2026

name: indexing-multichain description: >- Use when deploying an indexer across multiple chains. Entity ID namespacing to avoid collisions, chain-specific configuration patterns, and the context.chain runtime API.

Multichain Indexing

Entity ID Namespacing

Always prefix entity IDs with chainId to avoid collisions across chains:

const id = `${event.chainId}-${event.params.tokenId}`;
context.Token.set({ id, ...tokenData });

Never hardcode chainId = 1 — always use event.chainId.

Chain-specific singleton IDs (e.g., Bundle): ${event.chainId}-1

Chain-Specific Logic

Contract.Event.handler(async ({ event, context }) => {
  const chainId = context.chain.id;

  const config = {
    1: { wrappedNative: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" },
    137: { wrappedNative: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" },
  }[chainId];

  // context.chain.isLive is true when processing real-time blocks
  if (context.chain.isLive) {
    // Live-only logic
  }
});

Config

Global contract definitions + chain-specific addresses:

contracts:
  - name: ERC20
    events:
      - event: Transfer(indexed address from, indexed address to, uint256 value)

chains:
  - id: 1
    contracts:
      - name: ERC20
        address:
          - 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  - id: 137
    contracts:
      - name: ERC20
        address:
          - 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174

Deep Documentation

Full reference: https://docs.envio.dev/docs/HyperIndex-LLM/hyperindex-complete

Install via CLI
npx skills add https://github.com/enviodev/stablecoin-indexer-v3 --skill indexing-multichain
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator