跟着文档学Fabric:获取通道配置
原文在这里。
1. 获取通道配置
peer channel fetch config config_block.pb -o $ORDERER_CONTAINER -c $CH_NAME --tls --cafile $TLS_ROOT_CA
上述命令需要在peer容器中执行
这一步得到对应通道的protobuf格式的通道配置。protobuf格式的配置文件并不适合阅读,可以使用官方提供的configtxlator来转换成JSON格式的:
configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json
排除不必要的元数据:
jq .data.data[0].payload.data.config config_block.json > config.json
config.json中就是我们所需要的通道配置。
2. 通过sdk来获取通道配置
除了上面提到的方式,还可以通过官方提供的sdk来获取通道配置。这里以fabric-sdk-go为例来介绍如何通过sdk来获取通道配置。
主要用到的是下面两个包:
- github.com/hyperledger/fabric-sdk-go/pkg/client/ledger 提供账本相关操作接口
- QueryConfigBlock: 获取当前通道使用的配置块
- github.com/hyperledger/fabric/common/tools/protolator 提供protobuf格式转换服务
- DeepMarshalJSON: 将protobuf格式的信息转换为JSON格式
代码示例如下:
blk, err := ledgerClient.QueryConfigBlock(ledger.WithTargetEndpoints(targetPeers...))
if err != nil {
panic(err.Error())
}
buffer := &bytes.Buffer{}
err = protolator.DeepMarshalJSON(buffer, blk)
if err != nil {
panic(err)
}
blockJson := make(map[string]interface{})
err = sonic.Unmarshal(buffer.Bytes(), &blockJson)
config := blockJson["data"].(map[string]interface{})["data"].([]interface{})[0].(map[string]interface{})["payload"].(map[string]interface{})["data"].(map[string]interface{})["config"]
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意
跟着文档学Fabric:获取通道配置的更多相关文章
- iis设置默认文档,提示web.config配置xml格式不正确
网站上传后,配置默认文档,提示web.config配置xml格式不正确,几经尝试,发现是sqlserver密码中的“&”符号惹的祸,web.config文件中不能使用该字符.分享出来,大家遇到 ...
- 没必要看源码。。把文档学通就已经牛逼了(我们大多还是在应用层,还达不到研究的程度。附class与examples大全链接)
[学霸]深圳-鑫 2017/7/11 13:54:07只是学习怎么用QT的话,不用看源码.看帮助文档就很好要学习编码风格与思路,就看看源码 [学神]武汉-朝菌 2017/7/11 13:54:39没必 ...
- Vitepress搭建组件库文档(上)—— 基本配置
在 vite 出现以前,vuepress 是搭建组件库文档不错的工具,支持以 Markdown 方式编写文档.伴随着 vite 的发展,vitepress 已经到了 1.0.0-alpha.22 版本 ...
- 数组对象元素的添加,String对象,BOM对象以及文档对象的获取
数组对象的删除有三种方法: pop(); //移除最后一个元素并返回该元素值shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移splice(0,2); / ...
- 管理员技术(五): 配置文档的访问权限、 配置附加权限、绑定到LDAP验证服务、配置LDAP家目录漫游
一.配置文档的访问权限 问题: 本例要求将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab的权限,满足以下要求: 1> 此文件的拥有者 ...
- api接口文档生成,无需其他配置一键生成基于文本注释
<dependency> <groupId>io.github.yedaxia</groupId> <artifactId>japidocs</a ...
- Cassandra1.2文档学习(15)—— 配置数据一致性
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...
- Ubuntu gitlab安装文档及邮件通知提醒配置
1.安装依赖包,运行命令 sudo apt-get install curl openssh-server ca-certificates postfix 2.由于gitlab官方源可能被“墙”,首先 ...
- ABP文档笔记 - 模块系统 及 配置中心
ABP框架 - 模块系统 ABP框架 - 启动配置 Module System Startup Configuration ABP源码分析三:ABP Module ABP源码分析四:Configura ...
- 基于XML文档的声明式事务配置
<!-- 配置事务切面 --> <aop:config> <aop:pointcut expression="execution(* com.atguigu.t ...
随机推荐
- 火山引擎DataTester:AB测试技术揭秘及应用分享
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在全球软件工程创新峰会上,火山引擎DataTester 研发负责人韩云飞围绕"AB测试:让数据与业务 ...
- byte[] 数组,创建的时候赋初始值
C# //创建一个长度为10的byte数组,并且其中每个byte的值为0x08. byte[] myByteArray = Enumerable.Repeat((byte)0x08, 10).ToAr ...
- CXF WebService 授权&动态调用
SpringBoot WebService 源代码:https://gitee.com/VipSoft/VipWebService 服务端添加拦截器 import org.apache.cxf.bin ...
- ITS实现可滚动表格
一.ITS不支持TableControl 在ITS条码开发中,遇到需要滚动浏览表格的需求,但是在ITS中是不支持TableControl,并且已经验证在PDA中显示ALV行不通,因为ALV条目过多无法 ...
- i 的二次幂求和
学习 自为风月马前卒 大佬的数学笔记 \(i^2\) 求和 查阅资料我们很容易就发现 \(\sum_{i = 1}^ni^2 = \frac{n(n + 1)(2n + 1)}{6}\) 但具体怎么求 ...
- Educational Codeforces Round 104 (Rated for Div. 2) A-E 个人题解
比赛链接 1487A. Arena n 个 Hero,分别有 \(a_i\) 的初始等级.每次两个 Hero 战斗时:等级相同无影响,否则等级高的英雄等级+1.直到某个英雄等级到了 \(100^{50 ...
- Spring相关原理
Spring是什么? Spring是一个轻量级的IoC和AOP容器框架.常见的配置方式有三种:基于XML的配置.基于注解的配置.基于Java的配置. 模块分为以下:Spring Core:Spring ...
- 一、linux单机版mongo安装(带密码验证)
系列导航 一.linux单机版mongo安装(带密码验证) 二.mongo集群搭建 三.java连接mongo数据库 四.java对mongo数据库增删改查操作 五.mongo备份篇 mongoexp ...
- 【调试】perf和火焰图
简介 perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu.进程id.运行栈等),利用这 ...
- shell脚本(7)-shell运算
文档目录: 一.算数运算符 二.关系运算符 三.布尔运算符 四.逻辑运算符 五.字符串运算符 六.文件测试运算符 算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: ...