Skip to main content

factory

Track dynamically created contracts.
factory(config: FactoryConfig): Factory
Parameters:
  • address: Factory contract address or array of addresses (required)
  • event: Factory creation event ABI or filtered event object (required)
    • Simple format: AbiEvent<T> - Capture all factory events
    • Filtered format: { event: AbiEvent<T>, params: {...} } - Filter by indexed parameters
  • parameter: Extract child address (event) => string (required)
  • database: Factory database instance (required)
Example:
import { factory, factorySqliteDatabase } from "@subsquid/pipes/evm";

const factoryInstance = factory({
  address: "0x1f98431c8ad98523631ae4a59f267346ea31f984",
  event: factoryAbi.events.PoolCreated,
  parameter: "pool",
  database: factorySqliteDatabase({ path: "./pools.sqlite" }),
});
Filtered factory events:
factory({
  address: "0x1f98431c8ad98523631ae4a59f267346ea31f984",
  event: {
    event: factoryAbi.events.PoolCreated,
    params: {
      token0: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH
    },
  },
  parameter: "pool",
  database: factorySqliteDatabase({ path: "./weth-pools.sqlite" }),
});
Only indexed event parameters can be used in the params object.

factorySqliteDatabase

Create SQLite factory database.
factorySqliteDatabase(config: { path: string }): FactoryDatabase
Example:
import { factorySqliteDatabase } from "@subsquid/pipes/evm";

const db = factorySqliteDatabase({ path: "./factories.sqlite" });
No longer requires await - returns the database instance synchronously.