问题描述
我有这个:
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 (将#修改为@)