Data · v0, live

Data layer

Index any Elysium contract. Holders, events, webhooks, snapshots.

Indexer

connecting
Contracts—
Events—
Transfers—
Holders—
Lag—
Head block—
Safe block—head - 12
Indexed—

Register a contract

Keyless, 5/min per IP. ERC-20 and ERC-721 auto-detected; others need an ABI.

Custom ABI

Optional for ERC-20 and ERC-721, where it adds extra events. Required for anything else.

Recently registered

Serves

Holders preview

No live contract

Holders show once a contract finishes backfill.

Snapshot to CSV

Full holder list at a block. Paste and run.

curl
curl -s -o holders.csv "http://127.0.0.1:8787/v1/contracts/0xa24326d9bcbd110c918dcf386472441b9347cbf6/snapshot?format=csv"
cli
charon snapshot 0xa24326d9bcbd110c918dcf386472441b9347cbf6 --csv --out holders.csv

&block=N for a past block. At or below the safe block the file is final.

Verify a webhook

Signed x-charon-signature: t=<unix>,v1=<hmac> over ${t}.${rawBody}. Verify the raw body; the SDK checks the HMAC and the 300 s window.

ts · @charon/sdk
import express from "express";
import { verifySignature } from "@charon/sdk";

const app = express();

// Keep the raw bytes: the signature covers them exactly.
app.post("/hooks/charon", express.raw({ type: "application/json" }), async (req, res) => {
  const ok = await verifySignature(
    process.env.CHARON_WEBHOOK_SECRET!, // the whsec_... shown once at creation
    req.body,                            // Buffer = Uint8Array
    req.get("x-charon-signature"),
  );
  if (!ok) return res.status(401).end();

  const delivery = JSON.parse(req.body.toString("utf8"));
  // delivery.id is stable across retries: dedupe on it. Answer 2xx within 10 s.
  console.log(delivery.type, delivery.event?.name, delivery.event?.blockNumber);
  res.status(200).end();
});

app.listen(3000);

Keyboard shortcuts

  • Automatega
  • New automationgn
  • Inboxgi
  • Terminalgt
  • Builder Padgp
  • Hook Studiogs
  • Explorege
  • Hooksgh
  • Data layergd
  • Rewardsgw
  • Operatorsgk
  • Agentsgm
  • Docsgo
  • Recipesgr
  • Runs, protocol-widegu
  • Homegg
  • Terminal drawerctrl+`
  • This list?
  • Closeesc