问题描述
pragma solidity ^0.6.12;
contract EventTest {
address public router;
event RouterUpdated(address indexed newAddress);
function setRouter(address newAddress) public {
router = newAddress;
emit RouterUpdated(newAddress);
}
}
为什么交易事件函数名没有出现? Check result
解决方法
它以事件签名的 keccak256
哈希形式存储在区块链上。
keccak256("RouterUpdated(address)") == 0x7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc80
它没有被翻译成原始的 RouterUpdated
仅仅是因为 Etherscan 没有将它翻译成人类可读的形式。
由于 hash 是一个单向函数,这个翻译通常使用字典来完成,其中键是散列,值是输入。
他们在其 UI 的某些部分将函数签名转换为函数名称,但出于某种原因,他们选择不将事件签名转换为事件名称。