【问题标题】:Hyperledger Fabric Go SDK: How to parse blocksHyperledger Fabric Go SDK:如何解析块
【发布时间】:2020-08-21 18:43:30
【问题描述】:

我正在使用 Hyperledger Golang SDK 来实现客户端以使用分类帐。我的应用程序依赖于发送的事件,但是,我想使用 BlockEvents 以便我可以确保给定的数据已经写入分类帐而不是链码事件。不幸的是,关于这类事件的文档非常有限。我使用 func (c *Client) RegisterBlockEvent()... 注册了 BlockEvents,并获得了 BlockEvent 响应,其中每个响应都引用了 Block 结构。块结构如下所示:

type Block struct {
    Header               *BlockHeader   `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
    Data                 *BlockData     `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
    Metadata             *BlockMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
    XXX_NoUnkeyedLiteral struct{}       `json:"-"`
    XXX_unrecognized     []byte         `json:"-"`
    XXX_sizecache        int32          `json:"-"`
}

我可以导航到BlockData

type BlockData struct {
    Data                 [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

但是,此时我迷路了,只有一个原始的字节数组数组作为数据。我想针对特定的资产创建事件,并且需要解析块数据以搜索数据。该数据使用什么结构或结构?我假设每个数组条目都代表一个事务,但是如果没有映射到它的结构,解析非常困难。

【问题讨论】:

    标签: hyperledger-fabric hyperledger chaincode


    【解决方案1】:

    用protolator写一个函数ParseBlock

    // import "github.com/hyperledger/fabric-sdk-go/pkg/util/protolator"
    
    
    func ParseBlock(block *common.Block)  {
        if err := protolator.DeepMarshalJSON(os.Stdout, block); err != nil {
            log.Fatalln("DeepMarshalJSON err:", err)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-28
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      相关资源
      最近更新 更多