Web3js

過濾器不會為我的合約觸發事件

  • July 13, 2017

我有一個瑣碎的契約,我想獲得契約所有事件的通知。但我沒有看到我的契約需要任何事件:

contract MainContract{
   event Evt(address indexed _sender,string jsn);
   function deposit(string jsn) returns (int256) {
       Evt(msg.sender, jsn);
   }
}

var contract = web3.eth.contract(abi).at("0xe45866ac5d51067ce292bc656c790e94ddcf0766");
       web3.eth.filter({},function(err,res) {
           console.log("on filter",res.address);
       });
       contract.deposit('hello there',function (res) {
           console.log(arguments)
       });

您可以在控制台中看到 deposit() 成功執行,但控制台中沒有與我的地址呼叫匹配的回調呼叫。為什麼是這樣?這是預期的行為嗎?

控制台截圖

問題是我在這裡使用了我的錢包地址而不是合約地址:

web3.eth.contract(abi).at(“0xe45866ac5d51067ce292bc656c790e94ddcf0766”)

目前的 web3 API 不會通知此處的地址是否不正確…

引用自:https://ethereum.stackexchange.com/questions/21061