Solidity

建構子中呼叫的事件

  • August 25, 2016

當從合約的建構子內部觸發事件時,如何在 web3.js 中觀看事件?例如:

contract A{
  event Invoked(string);
  function A(){
  Invoked("constructor invoked!");
  }
}

在 web3.js 層中寫什麼來獲取控制台中事件的輸出。

根據這裡的文件https://github.com/ethereum/wiki/wiki/JavaScript-API#parameters-29 fromBlock"latest"預設的。所以在建構子中發送事件的情況下,"latest"可能會錯過你的事件。

嘗試設置fromBlock為較早的數值。在最壞的情況下,嘗試0.

查看文件中的程式碼段:

var abi = /* abi as generated by the compiler */;
var ClientReceipt = web3.eth.contract(abi);
var clientReceipt = ClientReceipt.at(0x123 /* address */);

var event = clientReceipt.Deposit();

// watch for changes
event.watch(function(error, result){
   // result will contain various information
   // including the argumets given to the Deposit
   // call.
   if (!error)
       console.log(result);
});

// Or pass a callback to start watching immediately
var event = clientReceipt.Deposit(function(error, result) {
   if (!error)
       console.log(result);
});

使用其中一個偵聽器並更改事件名稱和功能。

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