Hemi Data: Index Bitcoin-Aware EVM Contracts and Tunnels

Index Hemi's contract events, tunnel flows, and decoded transactions in one pipeline, delivered to your own database. Real-time and complete historical data, no node to run.


Hemi treats Bitcoin and Ethereum as two halves of one supernetwork, a modular Layer 2 whose virtual machine can read Bitcoin state directly. The hVM embeds a full Bitcoin node inside an EVM, so a Solidity contract on Hemi can observe Bitcoin's UTXO set, confirmations, and headers without an external oracle. Proof-of-Proof consensus periodically commits Hemi's state into Bitcoin transactions, anchoring the chain to Bitcoin's security, and Tunnels move BTC and Bitcoin-native assets in and out of the chain. The team frames it as Bitcoin programmability with Ethereum tooling at hemi.xyz.

For an indexer, that is the twist. To your code Hemi reads as an EVM chain: Solidity contracts, EVM addresses, ABIs, logs, and traces all behave the way you expect, so Hemi data is fully claimable through a standard EVM pipeline. The difference is what those contracts react to, namely Bitcoin state surfaced through hVM precompiles, plus the deposit and withdrawal flows that run through the Bitcoin Tunnel. Indexing Co covers Hemi in a single pipeline, decodes the raw chain into the shape you want, and delivers it to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no node to operate.

Source Hemi L2 blocks
Ingest blocks, logs, traces
Decode ABIs to events
Transform your JavaScript
Deliver your database

Why Hemi data is hard

Bitcoin-Aware Contract Logic Hemi contracts call hVM precompiles to read Bitcoin's UTXO state, confirmations, and headers, then emit EVM events off the back of that. To make sense of the dataset you often need to correlate an emitted log with the Bitcoin condition that triggered it, which a plain EVM scraper that only sees the log never captures.
Tunnel Deposits and Withdrawals The Bitcoin Tunnel mints representative tokens on Hemi after BTC confirmations and burns them on the way out. Reconstructing who tunneled what, when, and through which custody flow means decoding the tunnel contracts carefully rather than treating them as generic transfers.
Proof-of-Proof Anchoring Cadence Proof-of-Proof miners commit Hemi state into Bitcoin on their own cadence, so finality and the timeline of confirmations are tied to Bitcoin block times rather than Hemi's. A dataset that ignores that anchoring rhythm misrepresents when activity actually became Bitcoin-secured.
Your Own DB, Not a Hosted API Generic RPC endpoints and hosted query APIs leave you rate-limited and renting someone else's schema. Powering a BTCFi app or analytics workload on Hemi means owning the data in your own store, shaped the way your product queries it.

What Indexing Co delivers for Hemi

The DIY Path

Stand up and maintain the whole stack yourself.

  • Run a Hemi node or wire up a third-party RPC.
  • Fetch and decode logs, traces, and receipts against the right ABIs.
  • Reconstruct tunnel flows and Proof-of-Proof anchoring by hand.
  • Build backfill, reorg handling, and real-time delivery from scratch.
Indexing Co

One pipeline sources, decodes, and delivers Hemi to your store.

  • Hemi contract events, token transfers, and decoded txs in a single pipeline.
  • Decoded data, shaped by your JavaScript transform.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No node, no RPC babysitting.

What you can index

EVM data type On Hemi, for example
Contract events and logs hVM-triggered events, BTCFi lending borrows and liquidations
Token transfers (ERC-20, ERC-721) Tunneled BTC representations, stablecoin payments, NFT mints
Decoded transactions and traces Bitcoin Tunnel deposits and withdrawals, hBK contract calls
Protocol and account state Liquid-staking positions, pool reserves, HEMI and veHEMI balances

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: decode the logs you care about and return rows for your destination.

// Indexing Co transform: reshape each block into rows for your database
function transform(block) {
  const results = [];
  const signatures = [
    'event Transfer(address indexed from, address indexed to, uint256 value)'
  ];

  for (const tx of block.transactions || []) {
    for (const log of tx.receipt?.logs || []) {
      const event = utils.evmDecodeLogWithMetadata(log, signatures);
      if (!event) continue;
      results.push({
        chain: block._network,
        block: Number(block.number),
        tx_hash: tx.hash,
        contract_address: log.address?.toLowerCase(),
        from: event.decoded.from,
        to: event.decoded.to,
        value: event.decoded.value,
      });
    }
  }
  return results;
}

Hemi with Indexing Co

Run it yourself if

You want full control of node infrastructure and have the team to operate a Hemi node, decode tunnel and hVM-aware contracts, track Proof-of-Proof anchoring, and build backfill and reorg handling in-house.

Use Indexing Co if

You want Hemi contract events, tunnel flows, and decoded transactions delivered to your own database, with real-time plus complete history and no infrastructure to run.

Get a DemoOpen the Console

Related Reading

FAQ

Do I need to run a Hemi node?

No. Indexing Co sources Hemi blocks, logs, and traces for you, including full historical data, so you never operate a node or babysit an RPC endpoint.

Is Hemi data indexed as EVM data?

Yes. Hemi runs an EVM, so contracts, addresses, ABIs, logs, and traces are all standard and fully claimable through a normal EVM pipeline. The Bitcoin-aware part lives inside the contracts, which read Bitcoin state through hVM precompiles, and Indexing Co decodes the events those contracts emit.

Can I index the Bitcoin Tunnel and BTCFi protocols?

Yes. Point a pipeline at the tunnel contracts or any Hemi protocol, from liquid staking and lending to your own deployments, and we decode deposits, withdrawals, and events against the right ABI.

Where does the Hemi data go?

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

Can I get complete historical Hemi data?

Yes. We backfill from your chosen start block and merge it with real-time data, so your Hemi dataset is gap-free from genesis forward if you want it.

Get Started

Index Hemi in minutes. Set up your first Hemi contract or tunnel pipeline without running a node.

Get a DemoOpen the Console