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
將核心實現注入SDKfunc 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實現注入SDKfunc WithServicePkg(service sdkApi.ServiceProviderFactory) Option
WithServicePkg將服務實現注入SDK