Solidity
觸發事件時如何訪問輸入變數
我嘗試了多種方法,但仍然無法訪問程式碼中傳遞給事件的數據。假設我與一個事件簽訂了以下契約:
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");