如何解组 []byte 事务?

问题描述

我有这个:

    for {
        select {
        case result := <-socketchan:
            logger.Info("got chain","chain",result.Data.(tmtypes.EventDataTx))
            //          chain := spntypes.UnmarshalChain(codec.BinaryMarshaler,result.Data)
            fmt.Println(result.Data.(tmtypes.EventDataTx))
            test := result.Data.(tmtypes.EventDataTx)
            tx := test.GetTx()
            fmt.Println(tx)
            chain := gentypes.UnmarshalChain(k,tx)
            fmt.Println("ok here comes the chain: ",chain)
            //      case second := <-newblock:
            //          logger.Info("got block")
            //              "index",newblock.Data.(tmtypes.EventData).Index)
        case <-quit:
            os.Exit(0)
        }
    }

但似乎 k 依赖于运行链的上下文,如下所示:

    ctx,k := spnmocks.MockGenesisContext()
    h := genesis.NewHandler(*k)

    chainID := spnmocks.MockRandomAlphaString(5)
    creator := spnmocks.MockAccAddress()
    sourceURL := spnmocks.MockRandomString(20)
    sourceHash := spnmocks.MockRandomString(20)

    // A chain can be create
    msg := types.NewMsgChainCreate(
        chainID,creator,sourceURL,sourceHash,)
    res,err := h(ctx,msg)
    require.NoError(t,err)
    chain := types.UnmarshalChain(k.GetCodec(),res.Data)
    require.Equal(t,chainID,chain.ChainID)
    retrieved,found := k.GetChain(ctx,chainID)
    require.True(t,found)
    creatorIdentity,_ := k.IdentityKeeper.GetIdentifier(ctx,creator)
    require.Equal(t,creatorIdentity,retrieved.Creator)
    require.Equal(t,retrieved.sourceURL)
    require.Equal(t,retrieved.sourceHash)

但也许我遗漏了一些非常基本的东西,这很有可能。

也许我需要让我的应用程序(它只是从链中读取数据,而不是链本身)读取创世并以某种方式生成上下文?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...