Hyperledger fabric-SDK-GO客户端开发篇(六)

Hyperledger fabric-SDK-GO客户端开发篇(六)

Fabric-SDK-GO是提供的Go语言开发包,应用程序可以利用Fabric-SDK-GO与fabric网络进行交互并访问链码。

软件开发包地址:https://github.com/hyperledger/fabric-sdk-go

1.1、目录介绍

pkg目录是fabric go sdk的主要实现,doc文档介绍了不同目录所提供的功能,以及给出了接口调用样例:

pkg/fabsdk:主package,主要用来生成fabsdk以及fabric go sdk中其他pkg使用的option context。

pkg/client/channel:主要用来调用、查询Fabric链码,或者注册链码事件。

pkg/client/resmgmt:主要用来Hyperledger fabric网络的管理,比如创建通道、加入通道,安装、实例化和升级链码。

pkg/client/event:配合channel模块来进行Fabric链码事件的注册和过滤。

pkg/client/ledger:主要用来实现Fabric账本的查询,查询区块、交易、配置等。

pkg/client/msp:主要用来管理fabric网络中的成员关系。

fabsdk包

FabricSDK - sdk入口

fabsdk.New() - 创建FabricSDK实例

sdk.ChannelContext() - 创建通道上下文实例

sdk.Close() - 关闭FabricSDK实例

sdk.CloseContext() - 关闭指定的上下文实例

sdk.Config() - 创建配置后端实例

sdk.Context() - 创建SDK上下文实例

fabsdk.ContextOption - SDK上下文配置结构定义

fabsdk.WithIdentity() - 创建身份上下文配置对象

fabsdk.WithOrg() - 创建机构上下文配置对象

fabsdk.WithUser() - 创建用户上下文配置对象

fabsdk.Option - SDK配置结构定义

fabsdk.WithCorePkg() - 向SDK注入核心包

fabsdk.WithCryptoSuiteConfig() - 向SDK注入密码学套件接口

fabsdk.WithEndpointConfig() - 向SDK注入端结点配置接口

fabsdk.WithErrorHandler() - 设置错误处理程序

fabsdk.WithIdentityConfig() - 向SDK注入身份配置接口

fabsdk.WithLoggerPkg() - 向SDK注入日志实现

fabsdk.WithMSPPkg() - 向SDK注入MSP实现

fabsdk.WithMetricsConfig() - 向SDK注入监视指标配置接口

fabsdk.WithProviderOpts() - 向提供器添加额外的选项

fabsdk.WithServicePkg() - 向SDK注入服务实现

client/channel包

channel.Client - 通道客户端结构定义

channel.New() - 创建通道客户端

cc.Execute() - 执行交易

cc.InvokeHandler() - 调用指定的处理器

cc.Query() - 查询链码

cc.RegisterChaincodeEvent() - 监听链码事件

cc.UnregisterChaincodeEvent() - 取消监听链码事件

channel.ClientOption - 客户端选项结构定义

channel.Request - 链码请求结构定义

channle.RequestOption - 链码请求选项函数

channel.WithBeforeRetry() - 设置链码请求重试前需调用的函数

channel.WithChaincodeFilter() - 为链码请求添加链码过滤器

channel.WithParentContext() - 为链码请求封装父级上下文

channel.WithRetry() - 为链码请求配置重试参数

channel.WithTargetEndpoints() - 为链码请求配置访问端结点

channel.WithTargetFilter() - 为特定链码请求指定节点过滤器

channel.WithTargetSorter() - 对特定链码请求指定排序器

channel.WithTargets() - 为链码请求设置目标peer节点

channel.WithTimeout() - 为链码请求设置超时参数

channel.Response - 链码响应结构定义

client/event包

event.Client - 通道事件客户端结构定义

event.New() - 创建通道事件客户端

ec.RegisterBlockEvent() - 监听区块事件

ec.RegisterChaincodeEvent() - 监听链码事件

ec.RegisterFilteredBlockEvent() - 监听过滤的区块事件

ec.RegisterTxStatusEvent() - 监听交易状态事件

ec.Unregister() - 取消事件监听

event.ClientOption - 通道事件客户端选项结构定义

event.WithBlockEvents() - 创建监听区块事件的选项

event.WithBlockNum() - 只监听指定编号的区块

evnet.WithSeekType() - 指定区块定位类型

client/ledger包

ledger.Client - 账本客户端结构定义

ledger.New() - 创建账本客户端实例

lc.QueryBlock() - 按编号查询区块

lc.QueryBlockByHash() - 按哈希查询区块

lc.QueryBlockByTxID() - 查询包含指定交易的区块

lc.QueryConfig() - 查询通道配置

lc.QueryConfigBlock() - 查询指定通道的当前配置区块

lc.QueryInfo() - 查询指定通道的相关信息

lc.QueryTransaction() - 查询指定的交易

ClientOption - 账本客户端选项结构定义

ledger.WithDefaultTargetFilter - 使用默认的节点过滤器

RequestOption - 请求选项函数

ledger.WithMaxTargets - 声明每个请求最多可以选择的节点

ledger.WithMinTargets - 声明每个请求最少需要的响应

ledger.WithParentContext - 使用父级上下文

ledger.WithTargetEndpoints - 使用指定的访问端节点

ledger.WithTargetFilter - 声明节点选择过滤器

ledger.WithTargets - 为特定请求指定目标节点

ledger.WithTimeout - 指定账本客户端的超时参数

1.2、一般步骤

编写config.yaml配置文件,给应用程序所使用的 Fabric-SDK-Go 配置相关参数及 Fabric 组件的通信地址

使用配置实例化fabsdk实例。
注意:fabsdk维护缓存,因此您应尽量减少fabsdk本身的实例。

使用fabsdk实例基于用户和组织创建上下文。
注意:通道上下文还需要通道ID。

使用其New函数创建一个客户端实例,并传递上下文。
注意:您需要为每个上下文创建一个新的客户端实例。

使用每个客户提供的功能来创建您的解决方案!

调用fabsdk.Close()释放资源和缓存。

1.3、config.yaml配置文件

client使用sdk与fabric网络交互,需要告诉sdk两类信息:

我是谁:即当前client的信息,包含所属组织、密钥和证书文件的路径等, 这是每个client专用的信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpygdx.html