For the complete documentation index, see llms.txt. This page is also available as Markdown.

Index Agent Launches

The event to watch

event AgentCoinLaunched(
    address indexed asset,   // the agent's ERC-20
    address indexed creator,
    address pool,
    address numeraire,       // WETH or a tokenized stock
    uint256 initialSupply
);

topic0 = 0x5d474dbccaef0b3274a2302f351854d215f5cb89d8d566861c19668c197670ad

Emitted by the Orbofi factory on every launch. This is the whole discovery step: it carries the token, the creator, the numeraire and the supply in one log, with asset and creator indexed.

All Orbofi factories emit it identically, so a factory upgrade never changes your parsing.

Scope it to the factory addresses

const ORBOFI_FACTORIES = [
  "0x8212F89CAFf7cB72E74008327983B52C909494FF",
].map((a) => a.toLowerCase());

Filter on the emitting contract, not on topic0 alone — an event signature is not an authorisation, and any contract can emit the same topic.

Resolving the pool

AgentCoinLaunched gives you pool. For the V4 pool id — which you need for price and swap tracking — take the Initialize event emitted by the PoolManager in the same transaction:

Store id as the pool id and sqrtPriceX96 as the opening price. Note hooks sits in the data, not the topics.

Alternative: the Airlock event

Orbofi launches also surface as Create on the Doppler Airlock. It is usable but strictly worse: Orbofi shares that Airlock with every other Doppler project on the chain, and Create carries no integrator field — so identifying Orbofi launches means inspecting each transaction's to address, which many indexers do not select by default.

Prefer AgentCoinLaunched.

Backfill

The factory was created at block 40,670,952 — verified on chain; there is no code one block earlier — and its first launch was block 40,689,771. Start your scan there; anything earlier only burns range.

Last updated

Was this helpful?