区块链教程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

区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连相关推荐

  1. 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新

    区块链教程Fabric1.0源代码分析configupdate处理通道配置更新,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初 ...

  2. 区块链教程Fabric1.0源代码分析配置交易-生成通道配置二

    兄弟连区块链教程Fabric1.0源代码分析配置交易-生成通道配置二.Generator接口实现,即bootstrapper. type bootstrapper struct {channelGro ...

  3. 区块链教程Fabric1.0源代码分析scc(系统链码)

    区块链教程Fabric1.0源代码分析scc(系统链码),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退,让人们更 ...

  4. 区块链教程Fabric1.0源代码分析Peer peer channel命令及子命令实现

    区块链教程Fabric1.0源代码分析Peer peer channel命令及子命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实 ...

  5. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一

    区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期 ...

  6. 兄弟连区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令一

    区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初 ...

  7. 区块链教程Fabric1.0源代码分析流言算法Gossip服务端二

    区块链教程Fabric1.0源代码分析流言算法Gossip服务端二 Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端) 5.2.commIm ...

  8. gossip 区块链_区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程-阿里云开发者社区...

    区块链教程Fabric1.0源代码分析流言算法Gossip服务端一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退 ...

  9. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二

    4.交易相关部分工具函数(protos/utils包) putils更详细内容,参考:Fabric 1.0源代码笔记 之 putils(protos/utils工具包) 5.RWSet(读写集) RW ...

最新文章

  1. 什么是整型?Python整型详细介绍
  2. Tensorflow实现神经网络及实现多层神经网络进行时装分类
  3. 通向未来:物联网+人工智能将成为人类的进化方向
  4. 高可用keepalived实例
  5. 医疗软件产品核心算法部分说明--转载截取
  6. 什么是 DDos 攻击
  7. mybatis和hibernate的对比总结
  8. js文件位置--为甚有些js必须放在尾部
  9. 【网络】趣谈网络协议总结
  10. 竞拍网站服务器配置,GOM引擎新区竞拍脚本,GOM传奇服务端设置竞拍的方法和教程...
  11. springboot整合aliyun的物流订单查询
  12. tp5 使用phpqrcode生成二维码和电子名片
  13. cad二次开发c#学习记录2——画一条线
  14. 如何把多个文件夹里的文件提取出来?
  15. 2023华为海思一面(数字后端)
  16. 黄金矿工java_欢乐黄金矿工游戏
  17. springboot聚合工程打包报错Compilation failure浅析
  18. 流利阅读 2019.1.26 The maturing of the smartphone industry should be celebrated, not lamented
  19. C/C++常用的文件函数注释格式
  20. python方括号和圆括号_python方括号和圆括号

热门文章

  1. 浏览器报错:DNS_PROBE_FINISHED_BAD_CONFIG
  2. linux dd克隆系统后,Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上
  3. 网络管理与维护作业11
  4. 深入理解分布式事务,高并发下分布式事务的解决方案
  5. 安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法
  6. 【知了堂学习笔记】java 自定义异常
  7. 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案
  8. pycharm安装第三方包问题解决
  9. 异常:org.springframework.http.converter.HttpMessageNotReadableException
  10. 如何在Java项目中查找未使用/无效的代码