我有一个合约,它在另一个合约上调用一个方法,导致它发出一个事件 - 我正在节点流程中监听它。
如果我执行直接触发事件的方法(从控制台) - 它会触发。但是如果我执行该方法,首先调用初始合同然后调用触发事件的合同,事件不会触发。
有没有办法调用我失踪的合同,或者这是我不能通过设计做的事情?以下代码描述了该问题:
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);
}
}
答案 0 :(得分:1)
需要通过其地址引用EventEmitter:
而不是
EventEmitter emitter = new EventEmitter();
DO
EventEmitter emitter = EventEmitter(0xef833fea60388efd541b62737c7aa3b59a6d80ef);