4

別のコントラクトのメソッドを呼び出すコントラクトがあります。これにより、ノードプロセスでリッスンしているイベントが発生します。

イベントを直接 (コンソールから) 発生させるメソッドを実行すると、問題なく発生します。しかし、メソッドを実行すると、最初のコントラクトを呼び出して、イベントを発生させるコントラクトを順番に呼び出すと、イベントは発生しません。

不足している後続の契約を呼び出す方法はありますか、またはこれは設計上できないことですか? 次のコードは、問題を説明しています。

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

}
4

1 に答える 1

1

そのアドレスで EventEmitter を参照する必要がありました:

それ以外の

EventEmitter emitter = new EventEmitter();

行う

EventEmitter emitter = EventEmitter(0xef833fea60388efd541b62737c7aa3b59a6d80ef);
于 2016-03-19T17:34:37.933 に答える