繁体   English   中英

以太坊呼叫合同方法,从另一个合同中发出一个事件

[英]ethereum call contract method that emits an event, from another contract

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

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

有没有办法调用我失踪的合同,或者这是我不能通过设计做的事情? 以下代码描述了该问题:

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);
    }

}

需要通过其地址引用EventEmitter:

代替

EventEmitter emitter = new EventEmitter();

EventEmitter emitter = EventEmitter(0xef833fea60388efd541b62737c7aa3b59a6d80ef);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM