Events

事件字元串參數中的垃圾

  • December 6, 2019

我有一個這樣定義的事件:

event Created(
   address indexed target,
   string indexed name
);

我願意

emit Created(..., _name); // called function with _name = "comment"

這使

0xd69ce70c72e2e7191b71ef82881773fbf30510f24a3450f02d555b5f04ac9702

或者

0x2361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60

在 Ganache 事件瀏覽器中:

在此處輸入圖像描述

我怎樣才能將其轉換回commentweb3.toAscii()只是返回垃圾。

發生這種情況是因為所有數組類型(包括stringbytes)都是散列的。請參閱文件

如果你使用數組(包括字元串和字節)作為索引參數,它的 Keccak-256 散列被儲存為一個主題,這是因為一個主題只能包含一個單詞(32 個字節)。

如果您需要原始值,則必須indexed從事件參數中刪除該選項並自己過濾事件。

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