Skip to content

Onchain events

If you would rather index Merry Men yourself than poll the Public API, these are the events to watch. Discovering launches is a single event on the factory; trading is standard Uniswap V3.

Index TokenLaunched on the LaunchpadFactory to get every launch (the token, its creator, and its pool) in one event:

event TokenLaunched(
address indexed token,
address indexed creator,
address pool, // the TOKEN/WETH V3 pool
uint256 positionId, // the locked V3 position NFT id
uint256 totalSupply,
uint256 creationFeeWei
);

positionId is the id of the permanently-locked V3 position in the locker. Use it to key locker fee/creator events for this token.

Launches routed through the LaunchDelegate (the EOA-friendly entry point) also emit:

event Launched(address indexed eoa, address indexed token, uint256 positionId);

Every launch is a canonical Uniswap V3 pool, so trades are the standard V3 pool events, no custom decoding:

  • Swap(sender, recipient, amount0, amount1, sqrtPriceX96, liquidity, tick)
  • Mint / Burn / Collect for liquidity operations.

Use TokenLaunched.pool (or UniswapV3Factory.getPool(token, weth, 10000)) to resolve the pool, then subscribe to its Swap events for the trade feed and price updates. See Pricing calculations.

event PositionLocked(uint256 indexed tokenId, address indexed creator);
event CreatorTransferStarted(uint256 indexed tokenId, address indexed creator, address indexed newCreator);
event CreatorTransferred(uint256 indexed tokenId, address indexed oldCreator, address indexed newCreator);
event FeesClaimed(
uint256 indexed tokenId,
address indexed creator,
uint256 amount0, // total collected, per pool asset
uint256 amount1,
uint256 ops0, // ops treasury share
uint256 ops1,
uint256 buyback0, // buyback treasury share
uint256 buyback1
);

FeesClaimed gives you the full split per claim; the creator receives amount − ops − buyback for each asset. CreatorTransferStarted / CreatorTransferred track community takeovers of the fee stream (tokenId here is the position id).

event ContributionRecorded(address indexed token, uint256 wethAmount);
event RoundExecuted(uint256 indexed nonce, uint256 count, uint256 perTokenWeth);
event BurnExecuted(uint256 indexed nonce, address indexed token, uint256 wethSpent);
event FeeSourceSet(address indexed feeSource);

ContributionRecorded is the per-token fee-contribution accounting that drives the merit ranking. Each round emits one RoundExecuted and a BurnExecuted per token bought and burned.

event UpdaterSet(address indexed updater);
event RootUpdated(uint256 indexed epoch, bytes32 root);
event Funded(address indexed from, uint256 amount);
event Claimed(address indexed account, uint256 amount, uint256 totalClaimed);
event Recovered(address indexed token, address indexed to, uint256 amount);

RootUpdated fires each epoch (~6h) with the new cumulative Merkle root; Claimed tracks pull-based referral payouts. See Protocol revenue.

event Listed(uint256 indexed tokenId, address indexed seller, uint256 price);
event PriceUpdated(uint256 indexed tokenId, uint256 price);
event Cancelled(uint256 indexed tokenId, address indexed seller);
event Delisted(uint256 indexed tokenId, address indexed seller);
event Sold(uint256 indexed tokenId, address indexed seller, address indexed buyer, uint256 price, uint256 fee);
event Swept(address indexed token, uint256 amount);