前言
在 Ethereum 區塊鏈中查看 Event Log 時,所有的 Event 會被使用 Keccak 雜湊函式雜湊後並存放在 Topics 欄位中,因此要對特定 Event 進行查詢時,需要先將 Event 的 Keccak 雜湊值找出來,再對 Topics 進行查詢。
做法
方法一
使用 ethers
套件的 utils.id
方法,取得 Event 的 Keccak 雜湊值。
1 | const topic = ethers.utils.id('Transfer(address,address,uint256)'); |
方法二
使用 ethers
套件的 interface.getEventTopic
方法,取得 Event 的雜湊值。
1 | const web3Provider = new ethers.providers.Web3Provider(window.ethereum); |
方法三
直接使用 Keccak 雜湊函式將 Event 的方法簽章進行雜湊,以 Go 語言為例。
1 | package main |