HyperLeger Fabric SDK开发——fabsdk

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HyperLeger Fabric SDK开发——fabsdk相关的知识,希望对你有一定的参考价值。

HyperLeger Fabric SDK开发(三)——fabsdk

一、fabsdk简介

1、fabsdk简介

fabsdk是Fabric SDK的主要包,fabsdk支持客户端使用Hyperledger Fabric区块链网络。fabsdk基于配置创建上下文环境,上下文环境会在client包使用。
官方文档:
https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/fabsdk

2、fabsdk使用基本流程

Fabsdk使用基本流程如下:
A、使用配置实例化fabsdk实例
B、使用fabsdk实例基于组织和用户创建上下文环境
C、以上下文环境作为参数,使用New函数创建客户端实例。可以为需要的每个上下文环境创建一个客户端实例。
D、使用每个客户端实例提供的功能函数编写业务逻辑,构建解决方案。
E、调用fsbsdk.Close()函数释放资源和缓存。

二、fabsdk常用接口

1、类型定义

var ErrAnonymousIdentity = errors.New("missing credentials")
如果创建身份的选项既不包含用户名也不包含身份,返回ErrAnonymousIdentity。
type Option func(opts *options) error
Option用于配置SDK。

2、获取FabricSDK实例

type FabricSDK struct {
   opts        options
   provider    *context.Provider
   cryptoSuite core.CryptoSuite
}

FabricSDK为SDK管理的客户端提供访问(和上下文)
func New(configProvider core.ConfigProvider, opts ...Option) (*FabricSDK, error)
New根据提供的选项集初始化SDK。 ConfigOptions提供应用程序配置。
使用示例如下:
sdk, err = fabsdk.New(config.FromFile("./config.yaml"))

3、获取通道上下文

func (sdk *FabricSDK) ChannelContext(channelID string, options ...ContextOption) contextApi.ChannelProvider
ChannelContext创建并返回通道上下文。

4、关闭FabricSDK实例

func (sdk *FabricSDK) Close()
释放SDK维护的缓存和连接

5、获取FabricSDK配置后台

func (sdk *FabricSDK) Config() (core.ConfigBackend, error)
Config返回所有SDK配置类型使用的配置后端

6、创建上下文客户端

func (sdk *FabricSDK) Context(options ...ContextOption) contextApi.ClientProvider
Context创建并返回包含所有必需提供者的上下文客户端。

7、选项构建

type identityOptions struct {
   signingIdentity msp.SigningIdentity
   orgName         string
   username        string
}
type ContextOption func(s *identityOptions) error

ContextOption提供创建会话的参数
func WithIdentity(signingIdentity msp.SigningIdentity) ContextOption
WithIdentity使用预先构造的身份对象作为会话的凭证
func WithUser(username string) ContextOption
WithUser使用指定用户加载标识/身份
func WithOrg(org string) ContextOption
WithOrg使用指定的组织
使用示例:

var (
   sdk           *fabsdk.FabricSDK
   org           = "org1"
   user          = "Admin"
)
ctx := sdk.Context(fabsdk.WithOrg(org), fabsdk.WithUser(user))
type Option func(opts *options) error
func WithCorePkg(core sdkApi.CoreProviderFactory) Option 

将核心实现注入SDK
func WithCryptoSuiteConfig(cryptoConfigs ...interface{}) Option
WithCryptoSuiteConfig向SDK注入CryptoSuiteConfig接口,SDK接收每个CryptoSuiteConfig实现的全套接口或CryptoSuiteConfig每个实现的的子接口列表
func WithEndpointConfig(endpointConfigs ...interface{}) Option
WithEndpointConfig向SDK注入EndpointConfig接口,SDK接收每个EndpointConfig实现的全套接口或每个EndpointConfig实现的的子接口列表
func WithIdentityConfig(identityConfigs ...interface{}) Option
WithIdentityConfig向SDK注入IdentityConfig接口,SDK接收每个IdentityConfig实现的全套接口或每个IdentityConfig实现的的子接口列表
func WithLoggerPkg(logger api.LoggerProvider) Option
WithLoggerPkg将logger实现注入到SDK中
func WithMSPPkg(msp sdkApi.MSPProviderFactory) Option
WithMSPPkg将MSP实现注入SDK
func WithServicePkg(service sdkApi.ServiceProviderFactory) Option
WithServicePkg将服务实现注入SDK

以上是关于HyperLeger Fabric SDK开发——fabsdk的主要内容,如果未能解决你的问题,请参考以下文章

HyperLeger Fabric SDK开发——msp

HyperLeger Fabric SDK开发——event

HyperLeger Fabric SDK开发——fabsdk

HyperLeger Fabric SDK开发——ledger

HyperLeger Fabric SDK开发——channel

HyperLeger Fabric SDK开发——resmgmt