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专用的信息。