跟着文档学Fabric:获取通道配置

跟着,文档,fabric,获取,通道,配置 · 浏览次数 : 143

小编点评

**通过channel fetch config 获取通道配置** 1. 在peer容器中执行命令: ```bash get_channel_config.sh config_block.pb -o $ORDERER_CONTAINER -c $CH_NAME --tls --cafile $TLS_ROOT_CA ``` 其中: * `config_block.pb` 是通道配置的protobuf格式的名称。 * `ORDERER_CONTAINER` 是一个环境变量,存储目标通道的名称。 * `$CH_NAME` 是一个环境变量,存储通道名称。 * `TLS_ROOT_CA` 是一个环境变量,存储证书根目录的路径。 2. 该命令将从channel容器中获取对应通道的通道配置,并将它写入`config.json`文件中。 **通过sdk获取通道配置** 除了使用`channel fetch config`命令获取通道配置外,还可以使用官方提供的sdk来获取通道配置。以下是用fabric-sdk-go为例的示例: ```go import ( "github.com/hyperledger/fabric-sdk-go/pkg/client/ledger" ) // GetChannelConfig obtains the channel configuration from the ledger. func GetChannelConfig(client *ledger.Client, targetPeers []string) (*map[string]interface{}, error) { block, err := client.QueryConfigBlock(ledger.WithTargetEndpoints(targetPeers...)) if err != nil { panic(err) } return &map[string]interface{}{ "data": &map[string]interface{}{ "data": block.Block().Data().ConfigBlock().Payload().Data().Config, }, }, nil } ``` 该示例使用`ledger.Client`的`QueryConfigBlock`方法获取通道配置,并将其作为`map[string]interface{}`类型返回。

正文

原文在这里

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:获取通道配置相似的内容:

跟着文档学Fabric:获取通道配置

原文在这里。 1. 获取通道配置 peer channel fetch config config_block.pb -o $ORDERER_CONTAINER -c $CH_NAME --tls --cafile $TLS_ROOT_CA 上述命令需要在peer容器中执行 这一步得到对应通道的pr

【冷启动#2】实用的springboot tutorial入门demo

跟着官方文档熟悉一遍创建spring工程的步骤 https://spring.io/guides/gs/spring-boot https://juejin.cn/post/7077958723829760008 demo简介 整个demo的预期目标是: 管理一堆玩家的数据,数据库使用的是现成的我们

公司知识共享计划

之前还写了个文档打算给老板看的,但随后跟老板口头提了下老板就很支持,这个就用不上了,存档下吧(内容自己写的,ai帮加工了下) 公司知识共享计划 销售人员 获取和添加材料:销售人员需要能够方便地获取公司的产品资料和市场推广材料,以便更好地向客户介绍和销售产品。 设计人员 素材存档:设计人员应负责将设计

RSS 解析:全球内容分发的利器及使用技巧

RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `` 和 `` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高...

我发现了字节OpenApi接口的bug!

本文记录我在对接字节旗下产品火山云旗下云游戏产品 OpenApi 接口文档时遇到的坑,希望能帮助大家(火山云旗下云游戏产品的文档坑很多,我算是从零到一都踩了一遍,特此记录,希望大家引以为鉴)。 1. 文档问题 很经典的开局一张图,对接全靠问, 这里给大家强调下,当要跟第三方产品对接时,一定要确认拿到

.NET微服务系列之Saga分布式事务案例实践

自从Wing正式发布以后,很多童鞋反馈对Saga分布式事务比较感兴趣,今天就跟大家分享一下“跨行转账”的分布式事务实践案例,入门使用教程请自行前往Wing官方文档。 假设自己名下有“中国农业银行(ABC)”和“中国工商银行(ICBC)”的账户余额各1万元,现在从“ABC”跨行转账1000元到“ICB

疯狂GC的第二种处理方式-ChatGPT的学习之四

# 疯狂GC的第二种处理方式-ChatGPT的学习之四 ## 摘要 ``` 上一个脚本太复杂了. 而且要改启动脚本. 课间休息跟人扯淡聊起来 chatGPT 发现他的语法很有用 但是思路不太对. 不过突然根据文档里写的想到了一个新的思路. ``` ## 获取GC信息 ``` while true d

一文带你了解内部开发者门户

内部开发者门户(internal developer portal)是一个自助服务的应用程序和数据存储,可以为软件工程团队提供提供访问所有软件组件、资源、环境、工具和文档的能力,让开发人员和管理人员跟踪并组织其工程团队构建和运行的所有内容。 信息碎片化问题常常困扰着运行复杂分布式系统的软件工程组织,

ora2pg使用记录

ora2pg使用记录 前言 这篇文章是我在学习使用ora2pg过程中的学习记录,以便日后遗忘查阅; 诸君也可跟随我的步伐了解一下ora2pg,或可移步如下官方文档参考学习:Ora2Pg : Migrates Oracle to PostgreSQL (darold.net) 本文的ora2pg安装和

Crash的简单学习

Crash的简单学习 前言 最近进行海光服务器的压测, 多次出现了压测时宕机的情况. 跟OS,DB还有hardware的vender都进行过沟通, 但都比较难定位具体问题. 麒麟操作系统说需要进行一下vmcore的确认. 这边也获取了一下麒麟的文档. 想着自己总结一下问题. 便于以后查询 kdump