我无法使用types.Log
通道获得SC事件发出的全部数据。是否有任何方法可以使事件发出的所有数据?
我尝试解析的事件:
PairCreated(address indexed,address indexed,address,uint)
我的代码:
for {
select {
case err := <-sub.Err():
log.Fatal(err)
case vLog := <-logs:
fmt.Printf("Log Block Number: %d\n", vLog.BlockNumber)
fmt.Printf("Log Index: %d\n", vLog.Index)
event := make(map[string]interface{})
err := contractAbi.UnpackIntoMap(event, "PairCreated", vLog.Data)
if err != nil {
log.Fatal(err)
}
fmt.Println(event)
}
}
我只能解析事件的最后两个参数。
1条答案
按热度按时间sc4hvdpw1#
我知道这里出了什么问题。如果一个参数被声明为
indexed
,那么这个参数将转到Topics
,而不是Data
。并且最多可以有3个主题。所以,我尝试解压缩主题,但是失败了。然后用下面的方法成功了:对在
Data
中所以,最终代码是: