区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连
区块链教程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-兄弟连相关推荐
- 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新
区块链教程Fabric1.0源代码分析configupdate处理通道配置更新,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初 ...
- 区块链教程Fabric1.0源代码分析配置交易-生成通道配置二
兄弟连区块链教程Fabric1.0源代码分析配置交易-生成通道配置二.Generator接口实现,即bootstrapper. type bootstrapper struct {channelGro ...
- 区块链教程Fabric1.0源代码分析scc(系统链码)
区块链教程Fabric1.0源代码分析scc(系统链码),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退,让人们更 ...
- 区块链教程Fabric1.0源代码分析Peer peer channel命令及子命令实现
区块链教程Fabric1.0源代码分析Peer peer channel命令及子命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实 ...
- 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一
区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期 ...
- 兄弟连区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令一
区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初 ...
- 区块链教程Fabric1.0源代码分析流言算法Gossip服务端二
区块链教程Fabric1.0源代码分析流言算法Gossip服务端二 Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端) 5.2.commIm ...
- gossip 区块链_区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程-阿里云开发者社区...
区块链教程Fabric1.0源代码分析流言算法Gossip服务端一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退 ...
- 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)二
4.交易相关部分工具函数(protos/utils包) putils更详细内容,参考:Fabric 1.0源代码笔记 之 putils(protos/utils工具包) 5.RWSet(读写集) RW ...
最新文章
- 什么是整型?Python整型详细介绍
- Tensorflow实现神经网络及实现多层神经网络进行时装分类
- 通向未来:物联网+人工智能将成为人类的进化方向
- 高可用keepalived实例
- 医疗软件产品核心算法部分说明--转载截取
- 什么是 DDos 攻击
- mybatis和hibernate的对比总结
- js文件位置--为甚有些js必须放在尾部
- 【网络】趣谈网络协议总结
- 竞拍网站服务器配置,GOM引擎新区竞拍脚本,GOM传奇服务端设置竞拍的方法和教程...
- springboot整合aliyun的物流订单查询
- tp5 使用phpqrcode生成二维码和电子名片
- cad二次开发c#学习记录2——画一条线
- 如何把多个文件夹里的文件提取出来?
- 2023华为海思一面(数字后端)
- 黄金矿工java_欢乐黄金矿工游戏
- springboot聚合工程打包报错Compilation failure浅析
- 流利阅读 2019.1.26 The maturing of the smartphone industry should be celebrated, not lamented
- C/C++常用的文件函数注释格式
- python方括号和圆括号_python方括号和圆括号
热门文章
- 浏览器报错:DNS_PROBE_FINISHED_BAD_CONFIG
- linux dd克隆系统后,Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上
- 网络管理与维护作业11
- 深入理解分布式事务,高并发下分布式事务的解决方案
- 安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法
- 【知了堂学习笔记】java 自定义异常
- 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案
- pycharm安装第三方包问题解决
- 异常:org.springframework.http.converter.HttpMessageNotReadableException
- 如何在Java项目中查找未使用/无效的代码