Hyperledger fabric Fabric sdk如何使用msp CAclient创建客户端上下文
我正在尝试通过在上导入来使用hyperledger go sdk 模块的设计Hyperledger fabric Fabric sdk如何使用msp CAclient创建客户端上下文,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在尝试通过在上导入来使用hyperledger go sdk 模块的设计 https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/msp 我想使用hyperledger fabric go sdk创建CA客户端实例,我需要导入哪个模块以及如何导入,有人可以建议吗 我正在使用below cmd生成结构服务器CA客户端配置文件 ./bin/fabric-ca-client enroll admin:adminpws lo
https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/msp
我想使用hyperledger fabric go sdk创建CA客户端实例,我需要导入哪个模块以及如何导入,有人可以建议吗
我正在使用below cmd生成结构服务器CA客户端配置文件
./bin/fabric-ca-client enroll admin:adminpws localhost:7054
下面是使用上述cmd生成的fabric-ca-client.yaml文件创建fabric sdk上下文的代码。如果我做错了什么,请告诉我
package main
import (
"fmt"
"net"
"os"
"path/filepath"
"strings"
clientmsp "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/core"
mspid "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
"github.com/hyperledger/fabric-sdk-go/pkg/core/cryptosuite"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
"github.com/hyperledger/fabric-sdk-go/pkg/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/msp/test/mockmsp"
)
var (DefaultHome = os.ExpandEnv("$PWD/CONFIG"))
var caServerURL string
var caServer = &mockmsp.MockFabricCAServer{}
const (
caServerURLListen = "http://localhost:7054"
configFile = "fabric-ca-server-config.yaml"
)
type nwConfig struct {
CertificateAuthorities map[string]msp.CAConfig
}
type clientFixture struct {
cryptoSuiteConfig core.CryptoSuiteConfig
identityConfig mspid.IdentityConfig
}
func main() {
// Initiate the sdk using the config file
client := clientFixture{}
sdk := client.setup()
//create the CA instance
c, err := clientmsp.New(sdk.Context())
if err != nil {
fmt.Println("failed to create msp client", err)
return
}
fmt.Println("New client instance created", c)
}
func (f *clientFixture) setup() *fabsdk.FabricSDK {
var lis net.Listener
var err error
if !caServer.Running() {
lis, err = net.Listen("tcp", strings.TrimPrefix(caServerURLListen,
"http://"))
if err != nil {
panic(fmt.Sprintf("Error starting CA Server %s", err))
}
caServerURL = "http://" + lis.Addr().String()
}
configPath := filepath.Join(DefaultHome, configFile)
backend, err := config.FromFile(configPath)()
if err != nil {
fmt.Println(err)
}
configProvider := func() ([]core.ConfigBackend, error) {
return backend, nil
}
// Instantiate the SDK
sdk, err := fabsdk.New(configProvider)
if err != nil {
fmt.Println(err)
}
configBackend, err := sdk.Config()
if err != nil {
panic(fmt.Sprintf("Failed to get config: %s", err))
}
f.cryptoSuiteConfig = cryptosuite.ConfigFromBackend(configBackend)
f.identityConfig, _ = msp.ConfigFromBackend(configBackend)
if err != nil {
fmt.Println(err)
}
ctxProvider := sdk.Context()
ctx, err := ctxProvider()
if err != nil {
fmt.Println(err)
}
// Start Http Server if it's not running
if !caServer.Running() {
caServer.Start(lis, ctx.CryptoSuite())
}
return sdk
}
导入mspclient
mspclient "github.com/hyperledger/fabric-sdk-go/pkg/client/msp"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
mspClient, err := mspclient.New(
*fabsdk.FabricSDK.Context(),
mspclient.WithOrg(OrgName),
)
if err != nil {
return mspClient, errors.WithMessage(err, "failed to create MSP client")
}
之后,您可以使用以下服务
err = mspClient.Enroll("Admin@org1",
msp.WithSecret("Admin@org1"),
msp.WithProfile("tls"),
)
if err != nil {
return errors.WithMessage(err, "failed to register identity")
}
感谢您的重播,*fabsdk.FabricSDK.Context(),这是客户端提供程序的权利,要创建客户端提供程序,我们需要使用fabric-ca-client-config.yaml来创建FabricSDK.Context()。我是对的还是需要使用不同的配置文件。请注意,我在这里感到困惑。我已经更新了答案fabsdk,您需要导入该包谢谢,在启动mspclient.New(*fabsdk.FabricSDK.Context(),mspclient.WithOrg(OrgName)))之前,我需要加载任何配置文件吗?您好@fama我感谢您对hyperledger结构的兴趣以及您的辛勤工作,真的令人印象深刻。查看本教程了解gosdk谢谢@narendranth,我检查chainhero演示,在演示中,加密配置已经生成,他们使用config.yaml文件生成configtx。但是我想要的是连接Fabric sdk和farbic CA,并使用Fabric sdk api注册和注册管理员、用户创建密钥对。我在这里看到,ca服务器生成的结构ca服务器配置文件与每个人用于演示的示例crypto-config.yaml文件和configtx.yaml文件不同。我一直在使用正确的配置文件创建fabric sdk上下文以连接fabric CA。