首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件处理混淆

事件处理混淆
EN

Ethereum用户
提问于 2018-09-10 04:25:42
回答 1查看 130关注 0票数 0

所提供的是:

代码语言:javascript
复制
pragma solidity ^0.4.24;

contract changeSomVal{
    address owner;
    bool test;    
    event showBool(bool showBool);

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        if(msg.sender == owner)
            _;
    }

    function () public payable{
        emit showBool(test);
    }

    function changeBoolTrue () public onlyOwner { // returns (bool)
            test = true;
            emit showBool(test);
    }

    function changeBoolFalse () public onlyOwner {
            test = false;
            emit showBool(test);
    }
}

在以太扫描时,它总是返回64个字符长度0.0 eventLog。函数被称为什么并不重要。我还用uint8 (1,2)changeBoolTrue() -> test = 1changeBoolFalse() -> test = 2做了尝试。我也厌倦了返回:function changeBoolTrue () public onlyOwner returns (bool)。eventLog抛出的东西总是一样的。

再混音看上去很好。但在现实中,这是行不通的。S怎么了?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-09-10 14:15:20

我看不出你写的东西有什么问题。但是,约定要求您以大写字符开始事件名。

另一个关键点可能是您将bool参数命名为与事件相同的参数。考虑到您不需要引用该参数,我将调整您的事件如下;

event ShowBool(bool);

并相应地调整emit调用。

编辑0:

我把你的固定合同安排在了林克比,这里。您可以看到,EtherScan已经验证了源代码与字节码这里匹配。

所有这些事务的原因是,我调用了回退--调用changeBoolTrue()changeBoolFalse()之间的-in,这表明在调用之间的契约中保留了test的状态。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/58416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档