Go-Ethereum

未解碼事件的索引變數

  • October 13, 2018

我目前正在返回所有沒有過濾器的事件,並且所有索引變數都被返回,但它們已被編碼。其他沒有索引的變數是可見的,並且可以正常檢索並且未編碼。

fevent.GetAllChanges<TEvent>(filterAll).Result;

如何解碼這些欄位或以未編碼的方式請求它們?

在此處輸入圖像描述

上面的 CampaignId 應該是一個索引整數。

編輯 :

以上應該可以工作,因為這在此處呼叫事件下顯示的 NEtherium 範例中得到了證明

你不能那樣做。

索引主題不包含未散列的值。如果您知道您感興趣的 CampaignId 並對其進行過濾,那很好。如果您嘗試從主題轉換回原始輸入,那並不是很好。

希望能幫助到你。

添加到Rob Hitchens B9lab的答案,來自這裡的solidity doc

您可以將索引的屬性添加到最多三個參數,這會將它們添加到稱為“主題”的特殊資料結構中,而不是日誌的數據部分。如果你使用數組(包括字元串和字節)作為索引參數,它的 Keccak-256 散列被儲存為一個主題,這是因為一個主題只能包含一個單詞(32 個字節)。

並非所有用於主題的數據類型都被散列,只有字元串和字節數據類型被散列。因此,在我的範例中,當我將變數更改為 int 時,這解決了我的問題,並且我能夠看到我的主題/索引變數的結果。

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