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 (required)
  • 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" }),
});
Multiple factories:
const factoryInstance = factory({
  address: [
    "0x1f98431c8ad98523631ae4a59f267346ea31f984", // Uniswap V3
    "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", // Uniswap V2
  ],
  event: factoryAbi.events.PoolCreated,
  parameter: "pool",
  database: factorySqliteDatabase({ path: "./pools.sqlite" }),
});
The address parameter now supports arrays to track contracts from multiple factories simultaneously.
Bugfix: factory.address now correctly represents the factory contract address (not the child contract address). This ensures accurate identification of which factory created each contract.

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.

portalSqliteCache

Create SQLite cache for Portal responses.
portalSqliteCache(config: { path: string }): PortalCache
Example:
import { portalSqliteCache } from "@subsquid/pipes/portal-cache/node";

const cache = portalSqliteCache({ path: "./cache.sqlite" });
Import from @subsquid/pipes/portal-cache/node instead of @subsquid/pipes/portal-cache.

commonAbis

Pre-defined ABIs for standard contracts.
import { commonAbis } from "@subsquid/pipes/evm";

// ERC20 Events
commonAbis.erc20.events.Transfer;
commonAbis.erc20.events.Approval;

// ERC20 Functions
commonAbis.erc20.functions.transfer;
commonAbis.erc20.functions.approve;
commonAbis.erc20.functions.name;
commonAbis.erc20.functions.symbol;
commonAbis.erc20.functions.decimals;
commonAbis.erc20.functions.balanceOf;
commonAbis.erc20.functions.totalSupply;
commonAbis.erc20.functions.allowance;
Currently, only ERC20 ABIs are available in commonAbis. For ERC721 and other token standards, use @subsquid/evm-typegen to generate custom ABIs from your contract JSON files.

pipe-ui

Web-based monitoring dashboard for pipeline visualization and performance metrics. See the Pipe UI reference for complete documentation.

Next Steps