这一章我们对configtxlator做一个解说。

1, configtxlator 他是什么,有什么用?

configtxlator 官方说明是用于生成Hyperledger结构通道配置的实用程序;

此工具提供:编码(proto_encode)、解码(proto_decode)、对比修改结构(compute_update)以及版本信息(version)

2, 如何使用configtxlator工具

从工具的源码定义上,我这里将它有分为了两种用法,:

 (a), 工具非服务化

在cli中动态增加组织的时候,我们configtxlator proto_encode或 configtxlator  proto_decode  这种方式。

proto_encode和proto_decode两个命令所拥有的参数是一样的,都需要以下几个参数设置:

type : 消息结构体类型

input : 输入参数,encode(值是json格式),decode(值是proto格式的字节数组)

output:输出结果;根据输入,输出的是json或者proto格式。

type包含以下几种:

common.Block

区块结构

common.Envelope

带有效载荷和数字签名的数字信封,区块的数据部分就是序列化后的数字信封

common.ConfigEnvelope

包含链配置的数字信封,内容包含ConfigUpdateEnvelope

common.ConfigUpdateEnvelope

提交给排序节点的配置数字信封

common.Config

ConfigEnvelope的配置部分

common.ConfigUpdate

ConfigUpdateEnvelope的一部分

        compute_update计算修改量,命令拥有以下几个参数

original :原始的proto

updated:修改后的proto

channel_id:通道id

output:对比计算后的目标修改配置proto

         举例:将当前channel的块消息中的配置decode为json文件

configtxlator proto_decode --input mychannel.pb --type common.Block | jq .data.data[0].payload.data.config > mychannel.json

Json内容:

(b), 工具服务化

可以执行一下命令,启动此工具的rest服务:

./configtxlator start --hostname="0.0.0.0" --port=7059

Hostname : 主机ip,默认当前机器ip

Port:服务端口,默认7059

服务启动,通过路由提供一下几种服务:

MsgName对应的就是非服务化中的type。

举例:java中的使用样例

如果想查看计算后获取目标修改配置的信息,可以使用common.Envelope,进行解码查看json数据。

具体给个方法是如何实现的,逻辑不复杂,就不做详细描述了。

最新文章

  1. OAM
  2. 【URAL】1960. Palindromes and Super Abilities
  3. Java自动装箱拆箱
  4. Extjs4新特性
  5. CentOS6.5编译安装Redis
  6. 深入了解MyBatis返回值
  7. “百度杯”CTF比赛 九月场_Code(PhpStorm)
  8. asp.net MVC jsonp跨域获取数据
  9. WEEX入坑指南(1)
  10. C语言 · 求先序遍历
  11. 关于Class对象、类加载机制、虚拟机运行时内存布局的全面解析和推测
  12. Service 中的 onStart 和 onStartCommand
  13. linux 下的常用操作命令
  14. CentsOS6 Tomcat7 报javax.management.InstanceNotFoundException 解决办法
  15. cygwin简介及使用
  16. python测试开发django-18.admin后台中文版
  17. Python开源应用系统
  18. Openvpn 日常问题解决
  19. CentOS命令top下你不一定懂的cpu显示信息
  20. 【精华】部署与管理ZooKeeper(转)

热门文章

  1. 自己总结OpenSSL的变化
  2. 桌面程序阻止Windows关机(使用Message.Result取得DefWindowProc API函数的返回值,非常重要)
  3. 减少Qt编译时间暨简单Qt裁剪
  4. linux如何直接运行python文件
  5. mpvue 开发小程序接口数据统一管理
  6. PhpStorm 配置 PHPUnit
  7. C语言-main方法的两个参数是干什么的?
  8. 系统学习 Java IO (一)----输入流和输出流 InputStream/OutputStream
  9. 阿里云ECS发送企业邮件
  10. Python将mongodb导出的bson文件转为字典对象