区块链服务 BCS-GO SDK Demo:常用API接口

时间:2023-11-01 16:25:45

常用API接口

Fabric-sdk-go的主要入口是FabricSDK类,这个可以通过NewSDK()方法分别可以生成。

Fabric-sdk-go的常用操作基本都可以用这四个client实现:FabricClient,ChannelClient,ChannelMgmtClient,ResourceMgmtClient。

  • FabricSDK

    FabricSDK在pkg\fabsdk\fabsdk.go中,通过New ()方法生成object。New ()方法支持可变参数Option,以下是生成FabricSDK的例子:

    var opts []fabsdk.Option

    opts = append(opts, fabsdk.WithOrgid(org))

    opts = append(opts, fabsdk.WithUserName("Admin"))

    sdk, err = fabsdk.New(config.FromFile(configFile), opts...)

    configFile是SDK配置文件的路径。OrgId是SDK配置文件中的组织id。

    FabricSDK在def/fabapi/fabapi.go中,通过NewSDK()方法生成object。NewSDK()方法有一个Options参数,以下是生成Options参数的例子:

    deffab.Options{ConfigFile: configFile, LoggerFalogging.LoggerProvider(), UserName: sysadmin}

    ConfigFile是SDK配置文件的路径。LoggerFactory是可选的,不提供的话default会log到console。

  • FabricClient

    FabricClient主要有以下常用的接口。

    接口名称

    描述

    参数值

    返回值

    CreateChannel

    创建Channel的接口,用于创建channel。

    request

    CreateChannelRequest

    txn.TransactionID, error

    QueryChannelInfo

    查询Channel的接口,用于查询Channel的信息。

    name string, peers

    []Peer

    Channel, error

    InstallChaincode

    安装链码的接口,安装链码到 区块链 中。

    request

    InstallChaincodeRequest

    []*txn.TransactionPropos

    lResponse, string, error

    InstallChaincode

    安装链码的接口,安装链码到区块链中。

    request

    InstallChaincodeRequest

    []*txn.TransactionPropos

    lResponse, string, error

    QueryChannels

    查询channel的接口,查询区块链中已创建的通道。

    peer Peer

    *pb.ChannelQueryResponse, error

    QueryInstalledChaincodes

    查询已安装链码的接口,查询区块链中已安装的链码。

    peer Peer

    *pb.ChaincodeQueryResponse, error

  • ChannelClient

    ChannelClient主要包括链码查询和链码调用两类接口。

    接口名称

    描述

    参数值

    返回值

    Query

    链码查询接口,调用链码进行查询。

    request

    QueryRequest

    []byte, error

    QueryWithOpts

    带options的链码查询接口,与Query类似,但是可以通过QueryOpts指定notifier, peers,和timeout。

    request

    QueryRequest, opt

    QueryOpts

    []byte, error

    ExecuteTx

    链码调用接口,用于链码的调用。

    request

    ExecuteTxRequest

    TransactionID,

    error

    ExecuteTxWithOpts

    带options的链码调用接口,与ExecuteTx类似,但是可以通过ExecuteTxOpts指定notifier, peers,和timeout。

    request

    ExecuteTxRequestopt ExecuteTxOpts

    TransactionID,

    error

  • ChannelMgmtCLient

    ChannelMgmtClient 只有两个接口SaveChannel(req SaveChannelRequest) error 和SaveChannelWithOpts(req SaveChannelRequest, opts SaveChannelOpts) error 这两个接口是用于创建channel用的,这两个接口里面具体实现会调用到FabricClient里createChannel()接口。

  • ResourceMgmtClient

    ResourceMgmtClient主要就是与链码生命周期相关的接口和一个peer加入通道的接口。

    链码的删除接口为 BCS 增加的接口,目前只实现了删除链码安装包的功能。

    接口名称

    描述

    参数值

    返回值

    InstallCC

    安装链码,用于安装链码。

    reqInstallCCRequest

    []InstallCCResponse, error

    InstallCCWithOpts

    带options的链码安装,与InstallCC类似,但是可以通过InstallCCOpts指定peers。

    reqInstallCCRequest,opts InstallCCOpts

    []InstallCCResponse, error

    InstantiateCC

    实例化链码接口,用于实例化链码。

    channelID string,reqInstantiateCCRequest

    error

    InstantiateCCWithOpts

    带options的链码实例化,与InstantiateCC类似,但是可以通过InstantiateCCOpts指定peers和timeout。

    channelID string,reqInstantiateCCRequest, optsInstantiateCCOpts

    error

    UpgradeCC

    升级链码,用于链码的升级。

    channelID string,reqUpgradeCCRequest

    error

    UpgradeCCWithOpts

    带options的链码升级,与UpgradeCC类似,但是可以通过UpgradeCCOpts指定peers和timeout。

    channelID string,reqUpgradeCCRequest, optsUpgradeCCOpts

    error

    DeleteCC

    删除链码,用于链码的删除,目前只有删除安装包的功能。

    channelID string,reqDeleteCCRequest

    error

    DeleteCCWithOpts

    带options的链码删除,与DeleteCC类似,但是可以通过DeleteCCWithOpts指定peers和timeout。

    channelID string,reqDeleteCCRequest,opts DeleteCCOpts

    error

    JoinChannel

    Peers加入Channel的接口,用于peers加入Channel。

    channelID string

    error

    JoinChannelWithOpts

    带options的Peers加入Channel的接口,与JoinChannel类似,但是可以通过JoinChannelOpts指定peers。

    channelID string,optsJoinChannelOpts

    error

    带options的接口都可以指定peers,peers可通过def/fabapi/pkgfactory.go 里的NewPeer(userName string, orgName string, url string, certificate string, serverHostOverride string, config config.Config) (fab.Peer, error) 生成。这个method比原生的NewPeer多两个参数userName, orgName, 这两个参数用于peer双向tls找到对应的tls证书。

support.huaweicloud.com/devg-bcs/bcs_devg_0038.html