Reference · Ethereum mainnet

Smart contract event signatures and topic0 list

The event signatures the app knows, grouped by kind: each page gives the Solidity declaration, the topic0, which arguments sit in the topics and which in the data, the contracts we list that emit it, and the ready-made rules that alert on it.

Anatomy of a Transfer log

Topics

  • topic00xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efkeccak256("Transfer(address,address,uint256)")
  • topic1from (address)indexed: filterable
  • topic2to (address)indexed: filterable

Data

  • datavalue (uint256)ABI-encoded, decoded with the ABI
Reference

Event signatures by kind

Token standards

ERC-20, ERC-721 and ERC-1155 transfers and approvals, and wrapped ether.

EventProtocolSignaturetopic0Indexed
TransferERC-20 / ERC-721Transfer(address,address,uint256)0xddf252ad…23b3ef2 of 3
ApprovalERC-20 / ERC-721Approval(address,address,uint256)0x8c5be1e5…c3b9252 of 3
TransferSingleERC-1155TransferSingle(address,address,address,uint256,uint256)0xc3d58168…2d0f623 of 5
TransferBatchERC-1155TransferBatch(address,address,address,uint256[],uint256[])0x4a39dc06…c8f7fb3 of 5
ApprovalForAllERC-721 / ERC-1155ApprovalForAll(address,address,bool)0x17307eab…696c312 of 3
DepositWETHDeposit(address,uint256)0xe1fffcc4…c9109c1 of 2
WithdrawalWETHWithdrawal(address,uint256)0x7fcf532c…081b651 of 2

Stablecoins and issued tokens

Issuer events: mints, burns, freezes and blacklists on USDT, USDC and Paxos tokens.

EventProtocolSignaturetopic0Indexed
IssueUSDTIssue(uint256)0xcb8241ad…24176a0 of 1
RedeemUSDTRedeem(uint256)0x702d5967…eb9a440 of 1
AddedBlackListUSDTAddedBlackList(address)0x42e16015…d819dc0 of 1
RemovedBlackListUSDTRemovedBlackList(address)0xd7e9ec6e…24470c0 of 1
DestroyedBlackFundsUSDTDestroyedBlackFunds(address,uint256)0x61e6e66b…d698c60 of 2
BlacklistedUSDCBlacklisted(address)0xffa4e618…a4b8551 of 1
UnBlacklistedUSDCUnBlacklisted(address)0x117e3210…137c4e1 of 1
SupplyIncreasedPaxosSupplyIncreased(address,uint256)0xf5c174d5…a987971 of 2
SupplyDecreasedPaxosSupplyDecreased(address,uint256)0x1b7e1824…1c8a631 of 2
AddressFrozenPaxos V1AddressFrozen(address)0x90811a8e…2036901 of 1
AddressUnfrozenPaxos V1AddressUnfrozen(address)0xc3776b47…5e8b7c1 of 1
FreezeAddressPaxos V2FreezeAddress(address)0x1aa66049…1bc3921 of 1
UnfreezeAddressPaxos V2UnfreezeAddress(address)0x150465b0…339bbe1 of 1
FrozenAddressWipedPaxosFrozenAddressWiped(address)0xfc5960f1…23aede1 of 1

DEX and liquidity

Swaps and new pools on Uniswap V2 and V3.

EventProtocolSignaturetopic0Indexed
SwapUniswap V2Swap(address,uint256,uint256,uint256,uint256,address)0xd78ad95f…59d8222 of 6
SwapUniswap V3Swap(address,address,int256,int256,uint160,uint128,int24)0xc42079f9…bcca672 of 7
PairCreatedUniswap V2PairCreated(address,address,address,uint256)0x0d3648bd…28d0e92 of 4
PoolCreatedUniswap V3PoolCreated(address,address,uint24,int24,address)0x783cca1c…6b71183 of 5

Lending

Supplies, borrows, repayments and liquidations on Aave, Compound and Morpho.

EventProtocolSignaturetopic0Indexed
SupplyAave V3Supply(address,address,address,uint256,uint16)0x2b627736…73ba613 of 5
WithdrawAave V3Withdraw(address,address,address,uint256)0x3115d144…24f9f73 of 4
BorrowAave V3Borrow(address,address,address,uint256,uint8,uint256,uint16)0xb3d08482…d7dce03 of 7
BorrowAave V2Borrow(address,address,address,uint256,uint256,uint256,uint16)0xc6a89830…019d9b3 of 7
RepayAave V3Repay(address,address,address,uint256,bool)0xa534c8db…7840513 of 5
LiquidationCallAaveLiquidationCall(address,address,address,uint256,uint256,address,bool)0xe413a321…0052863 of 7
SupplyCompound V3Supply(address,address,uint256)0xd1cf3d15…ae424e2 of 3
WithdrawCompound V3Withdraw(address,address,uint256)0x9b1bfa7f…cad8eb2 of 3
SupplyCollateralCompound V3SupplyCollateral(address,address,address,uint256)0xfa56f7b2…04e1f43 of 4
WithdrawCollateralCompound V3WithdrawCollateral(address,address,address,uint256)0xd6d480d5…ba9e163 of 4
AbsorbDebtCompound V3AbsorbDebt(address,address,uint256,uint256)0x1547a878…f4f62f2 of 4
AbsorbCollateralCompound V3AbsorbCollateral(address,address,address,uint256,uint256)0x9850ab1a…f9412e3 of 5
SupplyMorpho BlueSupply(bytes32,address,address,uint256,uint256)0xedf88704…a30fe03 of 5
WithdrawMorpho BlueWithdraw(bytes32,address,address,address,uint256,uint256)0xa56fc0ad…f58fbf3 of 6
BorrowMorpho BlueBorrow(bytes32,address,address,address,uint256,uint256)0x57095454…d42a433 of 6
RepayMorpho BlueRepay(bytes32,address,address,uint256,uint256)0x52acb05c…ccaa093 of 5
LiquidateMorpho BlueLiquidate(bytes32,address,address,uint256,uint256,uint256,uint256,uint256)0xa4946ede…a67e413 of 8

NFT sales, names and staking

Seaport sales, ENS registrations and Lido stakes.

EventProtocolSignaturetopic0Indexed
OrderFulfilledSeaportOrderFulfilled(bytes32,address,address,address,(uint8,address,uint256,uint256)[],(uint8,address,uint256,uint256,address)[])0x9d9af8e3…cb6f312 of 6
NameRegisteredENSNameRegistered(string,bytes32,address,uint256,uint256,uint256,bytes32)0xc2240194…2e08a52 of 7
SubmittedLidoSubmitted(address,uint256,address)0x96a25c8c…1d1d1a1 of 3

Governance

Proposals and votes on Governor contracts.

EventProtocolSignaturetopic0Indexed
ProposalCreatedStandardProposalCreated(uint256,address,address[],uint256[],string[],bytes[],uint256,uint256,string)0x7d84a626…ebd5e00 of 9
VoteCastStandardVoteCast(address,uint256,uint8,uint256,string)0xb8e13888…7ddda41 of 5
VoteCastWithParamsStandardVoteCastWithParams(address,uint256,uint8,uint256,string,bytes)0xe2babfba…eb87121 of 6

Proxies and ownership

Upgrades, admin changes and ownership transfers.

EventProtocolSignaturetopic0Indexed
UpgradedEIP-1967 proxyUpgraded(address)0xbc7cd75a…5c2d3b1 of 1
AdminChangedEIP-1967 proxyAdminChanged(address,address)0x7e644d79…c9798f0 of 2
OwnershipTransferredOwnableOwnershipTransferred(address,address)0x8be0079c…6457e02 of 2
Not listed?

Compute any event's topic0

Paste a signature: the topic0 and the selector appear as you type.

Signature, topic0 or selector
Names, indexed and spaces are fine: the tool builds the canonical form.
Try:
Explained

What is an event signature?

An event signature is the event's name followed by its parameter types in brackets, with no spaces and no parameter names: Transfer(address,address,uint256). Contracts declare events in Solidity and emit them as logs; the signature is what identifies the event in those logs.

The keccak-256 hash of the signature is the event's topic0. Every log of a normal event carries it as its first topic, so explorers, indexers and alert rules find an event by filtering logs on topic0.

Explained

Topics and data: where each argument sits

A log has up to four topics and a data field. topic0 is the signature hash; each indexed argument takes the next topic, up to three; every other argument is ABI-encoded in the data. Indexed arguments can be filtered cheaply; arguments in the data have to be decoded first.

An indexed string, bytes, array or struct is stored as its keccak-256 hash, so the value itself can't be read back from the log. Each page below lists which arguments are indexed and where every value sits.

FAQ

Frequently asked questions

How is an event's topic0 calculated?

topic0 = keccak256 of the canonical signature, e.g. keccak256("Transfer(address,address,uint256)") = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. Parameter names and the indexed keyword are not part of it.

Why do ERC-20 and ERC-721 Transfer events share a topic0?

Both are Transfer(address,address,uint256), so the hash is the same. They differ in what is indexed: ERC-721 also indexes the token id, so its logs carry four topics and empty data.

Can two different events have the same topic0?

Only if they have the same name and parameter types: the hash covers nothing else. That is why a topic0 alone doesn't tell you which contract emitted a log; the log's address does.

What if my event isn't listed?

Paste its signature into the topic0 calculator on this page, or its whole ABI into the ABI explorer. Any event can still be used in an alert rule: add the contract and paste the signature.

Keep exploring

More tools

Get an alert when a contract emits any of them

Pick the contract, pick the event, add conditions. The Beta plan is free, no credit card.