区块链教程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 = 0 type 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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OSS crc64 出现不一致
客户端的循环冗余校验和服务端不一致,可以上传成功 排查 出现类似问题,需要先收集信息,经常发生在 Java sdk 上传的过程中。 requestID 出现 checksum 不一致的情况一定会伴随有 requestID 信息。 上传方式是通过 SDK 还是自己调 API 上传,需要明确 SDK 的版本信息。 问题能否稳定复现,能复现最好提供网络抓包便于问题分析。 tcpdump -i <出口网卡> -s0 host -w checksum.pcap 分析: 收集到 requestID 后,先升级到阿里云确认是否已经上传成功,一般 checksum 不一致并不会导致上传失败, checksum 是对文件进行循环冗余计算的方法,和 MD5 不一样,如果 MD5 不一致,文件上传一定失败。如果日志记录上传成功,可以校验文件的 MD5
- 下一篇
区块链教程Fabric1.0源代码分析consenter#filter-兄弟连
区块链教程Fabric1.0源代码分析consenter(共识插件)#filter(过滤器),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 consenter(共识插件) #filter(过滤器) 1、filter概述 filter代码分布在orderer/common/filter、orderer/common/configtxfilter、orderer/common/sizefilter、orderer/common/sigfilter、orderer/multichain目录下。 orderer/common/filter/filter.go,Rule接口定义及emptyRejectRule和acceptRule实现,Committer接口定义及noopCommitter实现,RuleSet结构体及方法。orderer/common/configtxfilter目录,configFilter结构体(实现Rul...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路