1 Star 0 Fork 0

BUPT-ZKJC / fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
client.go 2.94 KB
一键复制 编辑 原始数据 按行查看 历史
MJL 提交于 2021-08-06 18:37 . first commit
// Copyright IBM Corp. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package main
import (
"context"
"flag"
"fmt"
"os"
cb "github.com/hyperledger/fabric-protos-go/common"
ab "github.com/hyperledger/fabric-protos-go/orderer"
"gitee.com/bupt-zkjc/fabric/bccsp/factory"
mspmgmt "gitee.com/bupt-zkjc/fabric/msp/mgmt"
"gitee.com/bupt-zkjc/fabric/orderer/common/localconfig"
"google.golang.org/grpc"
)
type broadcastClient struct {
ab.AtomicBroadcast_BroadcastClient
}
func (bc *broadcastClient) broadcast(env *cb.Envelope) error {
var err error
var resp *ab.BroadcastResponse
err = bc.Send(env)
if err != nil {
return err
}
resp, err = bc.Recv()
if err != nil {
return err
}
fmt.Println("Status:", resp)
return nil
}
// cmdImpl holds the command and its arguments.
type cmdImpl struct {
name string
args argsImpl
}
// argsImpl holds all the possible arguments for all possible commands.
type argsImpl struct {
consensusType string
creationPolicy string
chainID string
}
var conf *localconfig.TopLevel
func init() {
var err error
conf, err = localconfig.Load()
if err != nil {
fmt.Println("failed to load config:", err)
os.Exit(1)
}
// Load local MSP
err = mspmgmt.LoadLocalMsp(conf.General.LocalMSPDir, conf.General.BCCSP, conf.General.LocalMSPID)
if err != nil {
panic(fmt.Errorf("failed to initialize local MSP: %s", err))
}
}
func main() {
cmd := new(cmdImpl)
var srv string
flag.StringVar(&srv, "server", fmt.Sprintf("%s:%d", conf.General.ListenAddress, conf.General.ListenPort), "The RPC server to connect to.")
flag.StringVar(&cmd.name, "cmd", "newChain", "The action that this client is requesting via the config transaction.")
flag.StringVar(&cmd.args.consensusType, "consensusType", "solo", "In case of a newChain command, the type of consensus the ordering service is running on.")
flag.StringVar(&cmd.args.creationPolicy, "creationPolicy", "AcceptAllPolicy", "In case of a newChain command, the chain creation policy this request should be validated against.")
flag.StringVar(&cmd.args.chainID, "chainID", "mychannel", "In case of a newChain command, the chain ID to create.")
flag.Parse()
signer, err := mspmgmt.GetLocalMSP(factory.GetDefault()).GetDefaultSigningIdentity()
if err != nil {
fmt.Println("Failed to load local signing identity:", err)
os.Exit(0)
}
conn, err := grpc.Dial(srv, grpc.WithInsecure())
defer func() {
_ = conn.Close()
}()
if err != nil {
fmt.Println("Error connecting:", err)
return
}
client, err := ab.NewAtomicBroadcastClient(conn).Broadcast(context.TODO())
if err != nil {
fmt.Println("Error connecting:", err)
return
}
bc := &broadcastClient{client}
switch cmd.name {
case "newChain":
env := newChainRequest(
cmd.args.consensusType,
cmd.args.creationPolicy,
cmd.args.chainID,
signer,
)
fmt.Println("Requesting the creation of chain", cmd.args.chainID)
fmt.Println(bc.broadcast(env))
default:
panic("Invalid command given")
}
}
1
https://gitee.com/bupt-zkjc/fabric.git
git@gitee.com:bupt-zkjc/fabric.git
bupt-zkjc
fabric
fabric
98d302355562

搜索帮助