# Go获取合约事件日志 **Published by:** [point](https://paragraph.com/@point/) **Published on:** 2022-05-03 **URL:** https://paragraph.com/@point/go ## Content func main() { client, err := ethclient.Dial("https://rinkeby-light.eth.linkpool.io/") if err != nil { log.Fatal(err) } //获取当前的最新区块 header, err := client.HeaderByNumber(context.Background(), nil) if err != nil { log.Fatal(err) } fmt.Println("最新区块", header.Number.String()) // 5671744 //开始查询日志,可以添加过滤条件,查询符合你想要的日志 query := ethereum.FilterQuery{ FromBlock: big.NewInt( 10570948), ToBlock: header.Number, Addresses: []common.Address{ common.HexToAddress("0x40490DF1cc631817D24BA324147c59821C8970BF"), common.HexToAddress("0xE3a463d743F762D538031BAD3f1E748BB41f96ec"), }, } logs, err := client.FilterLogs(context.Background(), query) if err != nil { log.Fatal(err) } //解析日志结果 for _, vLog := range logs { fmt.Println("Data:", vLog.Data) // 0x3404b8c050aa0aacd0223e91b5c32fee6400f357764771d0684fa7b3f448f1a8 fmt.Println("contactAddress:", vLog.Address) // 0x3404b8c050aa0aacd0223e91b5c32fee6400f357764771d0684fa7b3f448f1a8 fmt.Println("BlockHash:", vLog.BlockHash.Hex()) // 0x3404b8c050aa0aacd0223e91b5c32fee6400f357764771d0684fa7b3f448f1a8 fmt.Println("BlockNumber:", vLog.BlockNumber) // 2394201 fmt.Println("TxHash:", vLog.TxHash.Hex()) // 0x280201eda63c9ff6f305fcee51d5eb86167fab40ca3108ec784e8652a0e2b1a6 //具体的内容 var topics [4]string for i := range vLog.Topics { //i=0,日志名称的十六进制 //后续的元素是日志内容 fmt.Println("Topics:", i, vLog.Topics[i]) topics[i] = vLog.Topics[i].Hex() } } //将方法转成16进制,可用于多种日志判断具体执行什么业务逻辑 eventSignature := []byte("Transfer(address,address,uint256)") hash := crypto.Keccak256Hash(eventSignature) fmt.Println("eventSignature:", hash.Hex()) } ## Publication Information - [point](https://paragraph.com/@point/): Publication homepage - [All Posts](https://paragraph.com/@point/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@point): Subscribe to updates