小编Sim*_*hop的帖子

以太坊从另一个合约调用发出事件的合约方法

我有一个合约,它调用另一个合约上的方法,这会导致它发出一个事件 - 我正在节点进程中监听该事件。

如果我执行直接触发事件的方法(从控制台) - 它会正常触发。但是,如果我执行该方法,首先调用初始合约,然后调用触发该事件的合约,则该事件不会触发。

有没有办法调用我缺少的后续合同,或者这是我设计无法做到的事情?下面的代码描述了这个问题:

contract EventEmitter{
    event Emit(address addr, string message);

    //this works when I call it directly from the console,ie:
    //emitter.doEmit("blah", {from: "[primary acc]", value: web3.toWei(100, "ether")});
    function doEmit(string message) returns (bool){
        Emit(msg.sender, message);
        return true;
    }
}

contract EventEmitterCaller{
    event TestEvent(string message);

    function callDoEmit(string message) returns (bool){
        EventEmitter emitter = new EventEmitter();
        //always returns false
        //emitterCaller.callDoEmit("blah", {from: "[primary acc]", value: web3.toWei(100, "ether")});
        return emitter.doEmit(message);
    }

}
Run Code Online (Sandbox Code Playgroud)

ethereum solidity

5
推荐指数
1
解决办法
2658
查看次数

标签 统计

ethereum ×1

solidity ×1