建议和反馈

请填写你的反馈内容

问答 > Go/Python > 问答详情
求助中

SubscribeFilterLogs - 无法将数组解组为类型为类型的Go值.Log10LK

我有一个问题来获取日志。这是代码:

query := ethereum.FilterQuery{
    Addresses: []common.Address{contractAddress},}ctx := context.Background()
    ethereumLogsCh := make(chan types.Log)sub, err := ethClient.SubscribeFilterLogs(ctx, query, ethereumLogsCh)if err != nil {
    log.Println("Subscribe:", err)
    return err}for {
    select {
    case err := <-sub.Err():
        log.Fatal(err)
    case ethLog := <-ethereumLogsCh:
        log.Println("Log:", ethLog)
    }}

系统信息:Geth版本:1.8.0-unstable OS:Linux

预期的行为:当合同触发事件时,我希望得到一个types.Log对象。

实际行为:我得到一个Erro:无法将数组解组为类型为类型的Go值.Log。我做错了什么?区块链(在我的情况下是本地校验BC)是否发送了多个日志对象?


2019-09-11
0
请先登陆或注册

区块技术花2019-09-11


以下是使用Go订阅事件日志的完整示例。

import (
    "context"
    "fmt"
    "log"
    "github.com/ethereum/go-ethereum"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/core/types"
    "github.com/ethereum/go-ethereum/ethclient")func main() {
    client, err := ethclient.Dial("wss://rinkeby.infura.io/ws")
    if err != nil {
        log.Fatal(err)
    }
    contractAddress := common.HexToAddress("0x147B8eb97fD247D06C4006D269c90C1908Fb5D54")
    query := ethereum.FilterQuery{
        Addresses: []common.Address{contractAddress},
    }
    logs := make(chan types.Log)
    sub, err := client.SubscribeFilterLogs(context.Background(), query, logs)
    if err != nil {
        log.Fatal(err)
    }
    for {
        select {
        case err := <-sub.Err():
            log.Fatal(err)
        case vLog := <-logs:
            fmt.Println(vLog) // pointer to event log
        }
    }}


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励