Enjin Relaychain Data: Index ENJ Transfers, Staking, and Extrinsics

Index the Enjin Relaychain's extrinsics, ENJ transfers, and staking calls, delivered to your own database. Real-time and complete historical data, no node to run.


The Enjin Blockchain is purpose-built for games and apps, with NFTs implemented at the protocol level. It is split in two: the Enjin Relaychain, a Substrate network optimized for security, network synchronicity, and block validation, secured by nominated proof-of-stake with staking available from the Enjin Wallet, and the Enjin Matrixchain, where the multi-token, marketplace, and fuel tank pallets live. Indexing Co's Enjin feed follows the Enjin Relaychain. You can read how the team frames it at enjin.io and in the Enjin Relaychain docs.

The Relaychain is where ENJ moves between accounts and where validators and nominators secure the network. In the data, that is a Substrate block with a header and a list of extrinsics: the paraInherent.enter and timestamp.set inherents in every block, plus signed calls such as balances.transferAllowDeath. Indexing Co covers the Enjin Relaychain in a single pipeline, lets you shape those extrinsics into rows, and delivers them to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no node to operate.

Source Enjin Relaychain blocks
Ingest header + extrinsics
Decode pallet.call + args
Transform your JavaScript
Deliver your database

Why Enjin data is hard

Relaychain or Matrixchain? Enjin runs two chains with different jobs. NFT and multi-token activity happens on the Matrixchain, while ENJ transfers, validator staking, and nomination happen on the Relaychain. Knowing which chain holds the data you want is the first decision, and mixing them up gives you empty tables.
Relay Inherents in Every Block Every Relaychain block carries paraInherent.enter, the inherent that brings Matrix Chain candidates into the relay, plus timestamp.set. Many blocks carry nothing else. Filtering that out cheaply without losing signed activity is part of the job.
Large Planck Amounts as Strings ENJ amounts in balances.transferAllowDeath arrive as comma-formatted planck strings that overflow standard integers. They have to be normalized and stored at full precision, or balances drift.
Your Own DB, Not a Hosted API Explorers and wallet views show one account at a time. Treasury tracking, staking analytics, or exchange reconciliation on ENJ means owning the Relaychain history in your own store.

What Indexing Co delivers for Enjin

The DIY Path

Stand up and maintain the Substrate stack yourself.

  • Run an Enjin Relaychain archive node or rent a Substrate RPC.
  • Decode extrinsics against the right runtime metadata per block.
  • Map positional args per call and normalize planck amounts.
  • Build backfill, runtime-upgrade handling, and delivery from scratch.
Indexing Co

One pipeline sources, decodes, and delivers the Enjin Relaychain to your store.

  • Every extrinsic with method, signer, nonce, hash, and decoded args.
  • Shaped by your JavaScript transform, filtered to the calls you need.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No node, no RPC babysitting.

What you can index

Enjin Relaychain data For example
ENJ transfers balances.transferAllowDeath with sender, destination, and amount
Staking and nomination Validator staking and nomination pool extrinsics with signer and args
Signed extrinsics Any pallet.call with its signer, nonce, and args
Block headers Block number, hash, parent hash, and timestamp.set time

A transform, not a subgraph

You write the transform in JavaScript, not AssemblyScript, and change it without re-indexing from block zero. Indexing Co runs your function over each block server-side: pick the extrinsics you care about and return rows for your destination.

// Indexing Co transform: signed calls on the Enjin Relaychain as rows
function transform(block) {
  const results = [];
  const inherents = ['timestamp.set', 'paraInherent.enter'];

  for (const ext of block.extrinsics || []) {
    if (inherents.includes(ext.method)) continue;
    const isTransfer = ext.method.startsWith('balances.transfer');
    results.push({
      chain: block._network,
      block: block.blockNumber,
      extrinsic_hash: ext.hash,
      call: ext.method,
      signer: ext.signer,
      to: isTransfer ? ext.args[0].Id : null,
      amount: isTransfer ? ext.args[1].replace(/,/g, '') : null,
    });
  }
  return results;
}

Enjin with Indexing Co

Run it yourself if

You want full control of infrastructure and have the team to operate an Enjin Relaychain archive node, track runtime metadata, and build backfill and delivery in-house.

Use Indexing Co if

You want ENJ transfers and Relaychain extrinsics delivered to your own database as clean rows, with real-time plus complete history and no node to run.

Get a DemoOpen the Console

Related Reading

FAQ

Is this the Enjin Relaychain or the Enjin Matrixchain?

The Enjin Relaychain. Every block carries the paraInherent.enter inherent that only a relay chain includes. Multi-token, marketplace, and fuel tank activity lives on the Matrixchain, which is a separate chain from this feed. Talk to us if you need Matrixchain data.

What is in each Enjin Relaychain block?

The block number, block hash, and header, plus an array of extrinsics. Each extrinsic carries its index, hash, signer, nonce, method in pallet.call form, and its decoded arguments.

Do I need to run an Enjin node?

No. Indexing Co sources Enjin Relaychain blocks for you, including full history, so you never operate an archive node or track runtime metadata yourself.

How do I handle ENJ amounts?

Amounts arrive in planck as comma-formatted strings. Strip the commas in your transform, as in the example above, and store them as numeric or string columns at full precision.

Where does the Enjin data go?

Into your own destination: PostgreSQL, BigQuery, a warehouse, or a webhook. You define the output schema and own the storage.

Get Started

Index the Enjin Relaychain in minutes. Set up your first ENJ transfer or staking pipeline without running a node.

Get a DemoOpen the Console