# Go获取合约事件日志

By [point](https://paragraph.com/@point) · 2022-05-03

---

    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())
    }

---

*Originally published on [point](https://paragraph.com/@point/go)*
