I have a smart contract deployed to Sepolia network. One of the method emits 3 events. Please take a look at https://sepolia.etherscan.io/tx/0x31f77360db4cd51f5db7954d143d0fb514b96d71fa409c17b3412f78c11ee6a3#eventlog as an example.
There are 3 logs and 2 of them are Transfer
but the last one doesn't have any name as shown in below screenshot.
The first two Transfer
events are emitted from @openzeppelin/contracts/token/ERC20/ERC20.sol
code while the last one was emitted by this contract, the code is:
event SectorCreated(address owner, int x, int y, uint256 width, uint256 height, uint256 price);
...
emit SectorCreated(msg.sender, x, y, width, height, price);
I am not sure what the SectorCreated
event is now shown. What is the different between the Transfer
and SectorCreated
events?
Etherscan uses combination of its own database and ABI of the event emitting contract to decode the signature hash (topics[0]
, e.g. value 0xbfa038b0...
) into human-readable format (e.g. SectorCreated
).
The Transfer
event is likely in their own database (because it's standardized ERC-20 event), but SectorCreated
is not.
In this case, the contract that emitted the event is 0xc9986cf63eee2d04117300e1963083ccbb2ea301. Its source code / ABI is not verified on Etherscan, so the site doesn't know how to decode events that the contract emits.
Solution is simple - verify the contract source code on Etherscan. I'm just not sure if it applies retroactively to already sent transactions or only new ones after the verification.