Solidity

觸發事件時如何訪問輸入變數

  • November 20, 2017

我嘗試了多種方法,但仍然無法訪問程式碼中傳遞給事件的數據。假設我與一個事件簽訂了以下契約:

contract EtherBay { event NewEvent(address addr, uint intValue, bytes32 name); function withdraw() returns (bool) { NewEvent({ addr: 0, intValue: 10, name: 'someString'}); } }

然後在 js 文件中,我使用 web3 來擷取拋出的事件。這是程式碼: web3.eth.filter("NewEvent") .watch(function(error, result) { console.log(result) });

該應用程序進入上面的文件管理器,但我不確定如何檢索我在觸發事件時傳遞的數據(addr、intValue、name)。我在網上關注了多個教程,但沒有一個有效。我還嘗試通過 transactionHash 訪問事務,但我只能檢索 intValue 和名稱。此外,當我嘗試將名稱轉換為 Ascii 時,我會得到一些奇怪的字元以及名稱本身。solidity 的版本是 0.4.18。

合約語法錯誤,它甚至不應該編譯。

contract EtherBay {
   event NewEvent(address addr, uint intValue, bytes32 name);

   function withdraw() returns (bool) {
enter preformatted text here
       NewEvent({ addr: 0, intValue: 10, name: 'someString'}); // This is incorrect.
   }
}

您應該像這樣觸發事件:

NewEvent(0x0...., 10, "someString");

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