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.
Topics
- topic00xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efkeccak256("Transfer(address,address,uint256)")
- topic1from (address)indexed: filterable
- topic2to (address)indexed: filterable
Data
- datavalue (uint256)ABI-encoded, decoded with the ABI
Event signatures by kind
51 events
Token standards
ERC-20, ERC-721 and ERC-1155 transfers and approvals, and wrapped ether.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| Transfer | ERC-20 / ERC-721 | Transfer(address,address,uint256) | 0xddf252ad…23b3ef | 2 of 3 |
| Approval | ERC-20 / ERC-721 | Approval(address,address,uint256) | 0x8c5be1e5…c3b925 | 2 of 3 |
| TransferSingle | ERC-1155 | TransferSingle(address,address,address,uint256,uint256) | 0xc3d58168…2d0f62 | 3 of 5 |
| TransferBatch | ERC-1155 | TransferBatch(address,address,address,uint256[],uint256[]) | 0x4a39dc06…c8f7fb | 3 of 5 |
| ApprovalForAll | ERC-721 / ERC-1155 | ApprovalForAll(address,address,bool) | 0x17307eab…696c31 | 2 of 3 |
| Deposit | WETH | Deposit(address,uint256) | 0xe1fffcc4…c9109c | 1 of 2 |
| Withdrawal | WETH | Withdrawal(address,uint256) | 0x7fcf532c…081b65 | 1 of 2 |
Stablecoins and issued tokens
Issuer events: mints, burns, freezes and blacklists on USDT, USDC and Paxos tokens.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| Issue | USDT | Issue(uint256) | 0xcb8241ad…24176a | 0 of 1 |
| Redeem | USDT | Redeem(uint256) | 0x702d5967…eb9a44 | 0 of 1 |
| AddedBlackList | USDT | AddedBlackList(address) | 0x42e16015…d819dc | 0 of 1 |
| RemovedBlackList | USDT | RemovedBlackList(address) | 0xd7e9ec6e…24470c | 0 of 1 |
| DestroyedBlackFunds | USDT | DestroyedBlackFunds(address,uint256) | 0x61e6e66b…d698c6 | 0 of 2 |
| Blacklisted | USDC | Blacklisted(address) | 0xffa4e618…a4b855 | 1 of 1 |
| UnBlacklisted | USDC | UnBlacklisted(address) | 0x117e3210…137c4e | 1 of 1 |
| SupplyIncreased | Paxos | SupplyIncreased(address,uint256) | 0xf5c174d5…a98797 | 1 of 2 |
| SupplyDecreased | Paxos | SupplyDecreased(address,uint256) | 0x1b7e1824…1c8a63 | 1 of 2 |
| AddressFrozen | Paxos V1 | AddressFrozen(address) | 0x90811a8e…203690 | 1 of 1 |
| AddressUnfrozen | Paxos V1 | AddressUnfrozen(address) | 0xc3776b47…5e8b7c | 1 of 1 |
| FreezeAddress | Paxos V2 | FreezeAddress(address) | 0x1aa66049…1bc392 | 1 of 1 |
| UnfreezeAddress | Paxos V2 | UnfreezeAddress(address) | 0x150465b0…339bbe | 1 of 1 |
| FrozenAddressWiped | Paxos | FrozenAddressWiped(address) | 0xfc5960f1…23aede | 1 of 1 |
DEX and liquidity
Swaps and new pools on Uniswap V2 and V3.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| Swap | Uniswap V2 | Swap(address,uint256,uint256,uint256,uint256,address) | 0xd78ad95f…59d822 | 2 of 6 |
| Swap | Uniswap V3 | Swap(address,address,int256,int256,uint160,uint128,int24) | 0xc42079f9…bcca67 | 2 of 7 |
| PairCreated | Uniswap V2 | PairCreated(address,address,address,uint256) | 0x0d3648bd…28d0e9 | 2 of 4 |
| PoolCreated | Uniswap V3 | PoolCreated(address,address,uint24,int24,address) | 0x783cca1c…6b7118 | 3 of 5 |
Lending
Supplies, borrows, repayments and liquidations on Aave, Compound and Morpho.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| Supply | Aave V3 | Supply(address,address,address,uint256,uint16) | 0x2b627736…73ba61 | 3 of 5 |
| Withdraw | Aave V3 | Withdraw(address,address,address,uint256) | 0x3115d144…24f9f7 | 3 of 4 |
| Borrow | Aave V3 | Borrow(address,address,address,uint256,uint8,uint256,uint16) | 0xb3d08482…d7dce0 | 3 of 7 |
| Borrow | Aave V2 | Borrow(address,address,address,uint256,uint256,uint256,uint16) | 0xc6a89830…019d9b | 3 of 7 |
| Repay | Aave V3 | Repay(address,address,address,uint256,bool) | 0xa534c8db…784051 | 3 of 5 |
| LiquidationCall | Aave | LiquidationCall(address,address,address,uint256,uint256,address,bool) | 0xe413a321…005286 | 3 of 7 |
| Supply | Compound V3 | Supply(address,address,uint256) | 0xd1cf3d15…ae424e | 2 of 3 |
| Withdraw | Compound V3 | Withdraw(address,address,uint256) | 0x9b1bfa7f…cad8eb | 2 of 3 |
| SupplyCollateral | Compound V3 | SupplyCollateral(address,address,address,uint256) | 0xfa56f7b2…04e1f4 | 3 of 4 |
| WithdrawCollateral | Compound V3 | WithdrawCollateral(address,address,address,uint256) | 0xd6d480d5…ba9e16 | 3 of 4 |
| AbsorbDebt | Compound V3 | AbsorbDebt(address,address,uint256,uint256) | 0x1547a878…f4f62f | 2 of 4 |
| AbsorbCollateral | Compound V3 | AbsorbCollateral(address,address,address,uint256,uint256) | 0x9850ab1a…f9412e | 3 of 5 |
| Supply | Morpho Blue | Supply(bytes32,address,address,uint256,uint256) | 0xedf88704…a30fe0 | 3 of 5 |
| Withdraw | Morpho Blue | Withdraw(bytes32,address,address,address,uint256,uint256) | 0xa56fc0ad…f58fbf | 3 of 6 |
| Borrow | Morpho Blue | Borrow(bytes32,address,address,address,uint256,uint256) | 0x57095454…d42a43 | 3 of 6 |
| Repay | Morpho Blue | Repay(bytes32,address,address,uint256,uint256) | 0x52acb05c…ccaa09 | 3 of 5 |
| Liquidate | Morpho Blue | Liquidate(bytes32,address,address,uint256,uint256,uint256,uint256,uint256) | 0xa4946ede…a67e41 | 3 of 8 |
NFT sales, names and staking
Seaport sales, ENS registrations and Lido stakes.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| OrderFulfilled | Seaport | OrderFulfilled(bytes32,address,address,address,(uint8,address,uint256,uint256)[],(uint8,address,uint256,uint256,address)[]) | 0x9d9af8e3…cb6f31 | 2 of 6 |
| NameRegistered | ENS | NameRegistered(string,bytes32,address,uint256,uint256,uint256,bytes32) | 0xc2240194…2e08a5 | 2 of 7 |
| Submitted | Lido | Submitted(address,uint256,address) | 0x96a25c8c…1d1d1a | 1 of 3 |
Governance
Proposals and votes on Governor contracts.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| ProposalCreated | Standard | ProposalCreated(uint256,address,address[],uint256[],string[],bytes[],uint256,uint256,string) | 0x7d84a626…ebd5e0 | 0 of 9 |
| VoteCast | Standard | VoteCast(address,uint256,uint8,uint256,string) | 0xb8e13888…7ddda4 | 1 of 5 |
| VoteCastWithParams | Standard | VoteCastWithParams(address,uint256,uint8,uint256,string,bytes) | 0xe2babfba…eb8712 | 1 of 6 |
Proxies and ownership
Upgrades, admin changes and ownership transfers.
| Event | Protocol | Signature | topic0 | Indexed |
|---|---|---|---|---|
| Upgraded | EIP-1967 proxy | Upgraded(address) | 0xbc7cd75a…5c2d3b | 1 of 1 |
| AdminChanged | EIP-1967 proxy | AdminChanged(address,address) | 0x7e644d79…c9798f | 0 of 2 |
| OwnershipTransferred | Ownable | OwnershipTransferred(address,address) | 0x8be0079c…6457e0 | 2 of 2 |
Compute any event's topic0
Paste a signature: the topic0 and the selector appear as you type.
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.
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.
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.
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.