ITPub博客

首页 > 区块链 > 区块链 > 兄弟连区块链教程Fabric1.0源代码分析configtx#genesis

兄弟连区块链教程Fabric1.0源代码分析configtx#genesis

原创 区块链 作者:兄弟连区块链入门教程 时间:2018-10-30 15:23:44 0 删除 编辑

区块链教程 Fabric1.0源代码分析configtx#genesis,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。

Fabric 1.0源代码笔记 之 configtx(配置交易) #genesis(系统通道创世区块)

1、genesis概述

genesis,即创世区块,此处特指系统通道的创世区块。
相关代码在common/genesis/genesis.go,即Factory接口及实现。

2、Factory接口定义

type Factory interface {
    Block(channelID string) (*cb.Block, error)}//代码在common/genesis/genesis.go

3、Factory接口实现

msgVersion = int32(1)epoch = 0type factory struct {
    template configtx.Template}func NewFactoryImpl(template configtx.Template) Factory {
    return &factory{template: template}}func (f *factory) Block(channelID string) (*cb.Block, error) {
    configEnv, err := f.template.Envelope(channelID)
    configUpdate := &cb.ConfigUpdate{}
    err = proto.Unmarshal(configEnv.ConfigUpdate, configUpdate)
    payloadChannelHeader := utils.MakeChannelHeader(cb.HeaderType_CONFIG, msgVersion, channelID, epoch)
    payloadSignatureHeader := utils.MakeSignatureHeader(nil, utils.CreateNonceOrPanic())
    utils.SetTxID(payloadChannelHeader, payloadSignatureHeader)
    payloadHeader := utils.MakePayloadHeader(payloadChannelHeader, payloadSignatureHeader)
    payload := &cb.Payload{Header: payloadHeader, Data: utils.MarshalOrPanic(&cb.ConfigEnvelope{Config: &cb.Config{ChannelGroup: configUpdate.WriteSet}})}
    envelope := &cb.Envelope{Payload: utils.MarshalOrPanic(payload), Signature: nil}
    block := cb.NewBlock(0, nil)
    block.Data = &cb.BlockData{Data: [][]byte{utils.MarshalOrPanic(envelope)}}
    block.Header.DataHash = block.Data.Hash()
    block.Metadata.Metadata[cb.BlockMetadataIndex_LAST_CONFIG] = utils.MarshalOrPanic(&cb.Metadata{
        Value: utils.MarshalOrPanic(&cb.LastConfig{Index: 0}),
    })
    return block, nil}//代码在common/genesis/genesis.go




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557831/viewspace-2218072/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-11

  • 博文量
    79
  • 访问量
    48924