博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连
阅读量:6577 次
发布时间:2019-06-24

本文共 1748 字,大约阅读时间需要 5 分钟。

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

转载地址:http://bzwno.baihongyu.com/

你可能感兴趣的文章
android动画-拖动
查看>>
Hive总结(五)hive日志
查看>>
PHP批量去除bom头代码的小工具
查看>>
【计算机视觉】基于Kalman滤波器的进行物体的跟踪
查看>>
《快学Scala》第三章 数组相关操作
查看>>
python编程练习
查看>>
pandas 索引与列相互转化
查看>>
从100PV到1亿级PV站点架构演变
查看>>
Windows 7 x64环境下JDK8安装过程
查看>>
Intent调用系统拍照程序,返回图片太小的问题
查看>>
FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
查看>>
会动的Tabbar
查看>>
完全卸载VS2013的方法
查看>>
十分钟学会Charles抓包(iOS的http/https请求)
查看>>
zoj2676 Network Wars(0-1分数规划,最大流模板)
查看>>
存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
查看>>
Datatables js 复杂表头 合并单元格
查看>>
互联网科普贴-阿里巴巴国际站是什么
查看>>
Live555研究之中的一个 源码编译
查看>>
cocos2d JS-(JavaScript) cc.each循环遍历对象
查看>>