Events
03 / 06

What to index, in lifecycle order

Eight events cover the whole life of a token: launch, every trade and its fee, the creator claiming, graduation, the pool, and the lock. Each row has the exact signature and a copyable topic0 for your log filter.

  1. Launch

    One event on the factory. Everything else keys off the curve address it gives you.

    • 01TokenLaunchedFactory

      A new token and its bonding curve are deployed. token, curve and creator are indexed.

      TokenLaunched(address token, address curve, address creator, address quoteAsset, string name, string symbol, string metadataURI, string subjectHandle)
      topic00x1bfe686d55245af5e3e3e2eba4841252eae92b2135761fa063c34661cf0d3985
  2. Trade

    Per curve. Index by the address set you learned from TokenLaunched.

    • 02BuyCurve

      Every curve buy. quoteIn is gross, fee is the slice the FeeCollector took.

      Buy(address buyer, uint256 quoteIn, uint256 tokensOut, uint256 fee)
      topic00xbeae048c6d270d9469f86cf6e8fedda3c60ad770f16c24c9fc131c8e9a09101d
    • 03SellCurve

      Every curve sell. quoteOut is net of fee.

      Sell(address seller, uint256 tokensIn, uint256 quoteOut, uint256 fee)
      topic00x846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc0
    • 04FeeCollectedFeeCollector

      Emitted alongside each Buy and Sell. asset is the zero address for the native coin.

      FeeCollected(address curve, address creator, address asset, uint256 platformFee, uint256 creatorFee)
      topic00xf51d4f85b9c67a6999073394e680d7eaba2ae56553370c00088941bf662f6b52
  3. Claim

    The creator wallet pulls. Nothing is pushed.

    • 05CreatorFeeClaimedFeeCollector

      A creator, or the agent holding the creator wallet, pulled accrued fees.

      CreatorFeeClaimed(address creator, address asset, uint256 amount)
      topic00x2b9a4b971a1b7ec880d82d754dfc29969048892f65278be59641f7f7161cf714
  4. Graduate

    Three events, three contracts, one block. Curve trading stops, the pool takes over.

    • 06GraduatedCurve

      The curve hit its threshold and handed reserves to the migrator. Curve trading stops here.

      Graduated(address token, uint256 quoteMigrated, uint256 tokensMigrated)
      topic00x1c858049e704460ab9455025be4078f9e746e3fd426a56040d06389edb8197db
    • 07PoolCreatedMigrator

      The Uniswap V3 pool exists. Route post-graduation trades here.

      PoolCreated(address token, address pool, uint256 quoteLiquidity, uint256 tokenLiquidity)
      topic00xd569a23a8cff45c641c5d5e4fb55b5e15e918f9acf0fc42b4909adc31f5f806c
    • 08PositionLockedLP Locker

      The LP position NFT is inside the locker. The locker has no withdrawal function.

      PositionLocked(address token, uint256 tokenId)
      topic00x2cabb2a2973327d5863ceb4707e9441851243897e86d587ee35943599752eb54

Buy and Sell are emitted by each curve, so index them by address set: every curve address you learned from TokenLaunched. FeeCollected on the FeeCollector carries the curve address indexed, which gives you per-token fee totals without touching the curves.

topic0 is keccak256(signature). Recompute with viem's toEventSelector() if you want to check a value before trusting it. The three graduation events land in the same block; after Graduated the curve rejects trades and the pool from PoolCreated takes over, covered on the next page.