Events
解碼時索引事件不返回值
我曾問過這個問題,但我省略了一些資訊,因為我(錯誤地)認為省略的資訊不是我的問題的一部分。
當您發出這樣的事件時:
event ChildCreated(address indexed creator, address child, uint length);
並像這樣在ethers js中解碼
return ethers.utils.defaultAbiCoder.decode(["address","address","uint256"], log.data);
你得到一個錯誤:
異常:null:值超出範圍(argument=“value”,value=20,code=INVALID_ARGUMENT,version=bytes/5.4.0
為什麼?
多虧了這個github執行緒,我才能找到解決方案。
解決方案在於,索引參數不包含在connection.data中,而是包含在connection.topics中。
並且從同一個 github 執行緒中,他們給出了使用索引參數解碼事件的程式碼。
let abi = [ "event newConnect (string indexed hashedName, string name, bytes32 connectId, string encrypted, address owner)" ]; let iface = new ethers.utils.Interface(abi) getLogs.then((logs) => { logs.forEach((log) => { console.log(iface.parseLog(log)); }); });