2016-03-19 11 views
3

私は、他のコントラクトのメソッドを呼び出すコントラクトを持っています。このメソッドは、ノードプロセスでリッスンしているイベントを発生させます。他のコントラクトからイベントを発行するethereumコールコントラクトメソッド

イベントを直接(コンソールから)発生させるメソッドを実行すると、正常に起動します。しかし、私がこのメソッドを実行すると、まず最初の契約を呼び出してイベントを発生させる契約を呼び出すと、イベントは発生しません。

私は行方不明の契約に従う方法がありますか、これは設計上できないものですか?次のコードは、問題を説明します

そのアドレスで持つEventEmitterを参照するために必要な
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

当たり前を行います。私はEventEmitterCellerを修正して、そのアドレスでEventEmitterコントラクトを参照する必要があります:EventEmitter emitter = EventEmitter([eventemitterのアドレス]) –

+0

fyi、http://ethereum.stackexchange.com/ – default

答えて

1

代わりの

EventEmitter emitter = new EventEmitter(); 

EventEmitter emitter = EventEmitter(0xef833fea60388efd541b62737c7aa3b59a6d80ef); 
関連する問題