【问题标题】:Transaction event function name does not appear事务事件函数名称不出现
【发布时间】:2021-06-14 15:13:32
【问题描述】:

我编写了一个简单的合约来测试事件,如下代码:

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

【问题讨论】:

    标签: ethereum solidity ether binance-smart-chain


    【解决方案1】:

    它以keccak256事件签名哈希的形式存储在区块链上。

    keccak256("RouterUpdated(address)") == 0x7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc80
    

    它没有被翻译成原始的RouterUpdated 仅仅是因为 Etherscan 没有将它翻译成人类可读的形式。

    由于散列是单向函数,这种翻译通常使用字典完成,其中键是散列,值是输入。

    他们在 UI 的某些部分将函数签名转换为函数名称,但出于某种原因,他们选择不将事件签名转换为事件名称。

    【讨论】:

    • 有没有办法注册我的事件签名?或者我可以使用的事件列表?
    • 没有允许事件的白名单,因此您可以定义任何您喜欢的事件。但是一些标准(例如,ERC-20 用于常规令牌,或ERC-721 用于 NFT)定义了您需要实施以遵循标准的事件列表......此外,签名是从事件定义中自动生成的。请参阅this answer 了解更多信息。这是关于函数签名但计算哈希的方法是相同的。
    • 我知道了,非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2012-11-09
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多