0
点赞
收藏
分享

微信扫一扫

超级账本hyperledger fabric中configtxlator转换配置

协议转换
可以在Protocol Buffer和JSON格式间直接转换,Protocol Buffer还包含多种格式,有以下几种格式:
·common.Block:区块结构;
·common.Envelope:带有效载荷和数字签名的数字信封,区块的数据部分就是序列化后的数字信封;
·common.ConfigEnvelope:包含链配置的数字信封,内容包含ConfigUpdateEnvelope;
·common.ConfigUpdateEnvelope:提交给排序节点的配置数字信封;
·common.Config:ConfigEnvelope的配置部分;
·common.ConfigUpdate:ConfigUpdateEnvelope的一部分。
工具configtxlator提供的是标准的HTTP服务,与任何可以处理HTTP协议的工具都可以进行交互,下面用CURL工具来说明如何操作。
(1)Protocol Buffer格式转换为JSON格式
curl -X POST –data-binary @config.pbhttp:// SERVER: S E R V E R : PORT/protolator/decode/ > config.json
其中,config.pb是Protocol Buffer格式的文件,config.json是解码后的JSON格式文件。 SERVER和 S E R V E R 和 PORT是configtxlator的服务和端口。是消息的格式,可以为common.Block等。
2)JSON格式转换为Protocol Buffer格式
JSON格式文件是纯文本格式的,可以用任何的文本编辑工具修改,也可以用专门的JSON处理工具jq快速地编辑文件,比如下面的命令把最大区块大小修改为30个交易:
jq “.channel_group.groups.Orderer.values.BatchSize.value.max_message_count = 30”config.json > updated_config.json
编辑完成后再提交给configtxlator,转换成对应的Protocol Buffer格式。
curl -X POST –data-binary @config.json ​​​http:// SERVER: S E R V E R : PORT/protolator/encode/​​​ > config.pb
2 配置更新计算配置修改后,提交差异的部分给排序服务可以减少传输量。
提交原始的配置文件和修改后的配置文件给通道,如下所示:
curl -X POST -F channel=desiredchannel -F original=@original_config.pb -Fupdated=@updated_config.pbhttp:// SERVER: S E R V E R : PORT/configtxlator/compute/update-from-configs > config_update.pb
其中,desiredchannel是通道名称,original_config.pb和updated_config.pb分别是原始的配置文件和修改后的配置文件,config_update.pb是生成的差异配置文件,它是Protocol Buffer格式的common.ConfigUpdate结构。
如果调用SDK更新配置,应用程序可以直接对这个差异配置文件签名,然后封装成common.ConfigUpdateEnveloped,然后封装成common.Envelope提交给排序服务,结构的关系图如图B-1所示。
如果是命令行,在封装成common.Envelope之前需要先把config_update.pb解码成JSON格式:
curl -X POST –data-binary @config_update.pbhttp:// SERVER: S E R V E R : PORT/protolator/decode/common.ConfigUpdate > config_update.json
构造common.Envelope结构:
echo’{“payload”:{“header”:{“channel_header”:{“channel_id”:”desiredchannel”,”type”:2}},”data”:{“config_update”:’$(cat config_update.json)’}}}’ > config_update_as_envelope.json


举报

相关推荐

0 条评论