Skip to main content

evmDecoder

Decode smart contract events as a pipe.
evmDecoder<T>(config: EvmDecoderConfig<T>): Transformer
Parameters:
  • range: Block range { from: number | 'latest', to?: number } (required)
  • contracts: Array of contract addresses or factory (required)
  • events: Map of event names to ABI objects (required)
  • profiler: Profiler config { id: string } (optional)
  • onError: Error handler (optional)
Example:
import { evmDecoder, commonAbis } from "@subsquid/pipes/evm";

const decoder = evmDecoder({
  range: { from: 20000000, to: 20100000 },
  contracts: ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],
  events: {
    transfer: commonAbis.erc20.events.Transfer,
  },
});

await source.pipe(decoder).pipeTo(target);

Configuration

Range

{ range: { from: 20000000, to: 20100000 } }
{ range: { from: 'latest' } }
{ range: { from: 20000000 } }

Contracts

Array of addresses or a factory() result.

Events

Map event names to ABI objects. Use commonAbis.erc20.events.* or ABIs from @subsquid/evm-typegen.
Only ERC20 ABIs are in commonAbis. For other standards, use @subsquid/evm-typegen to generate ABIs.

Decoded Event Structure

Decoded events include event, block, timestamp, contract, rawEvent, and optional factory for factory-created contracts.