Hyperledger fabric 如何正确初始化FabricSDK?

Hyperledger fabric 如何正确初始化FabricSDK?,hyperledger-fabric,hyperledger-fabric-sdk-go,Hyperledger Fabric,Hyperledger Fabric Sdk Go,编辑:它显示网络。sh脚本要求将COMPOSE\u PROJECT\u NAME环境变量设置为test,否则它将无法正确初始化网络?完成此操作后,我尝试编写一个新的config.yaml文件,该文件仍然不正确,但我得到的错误已经改变 我最近开始使用Hyperledgerfabric。使用“fabric samples”测试网络,我开发并安装了连接到网关后成功调用的链码 要启动区块链网络,我运行测试网络/network.sh命令: ./network.sh up createChannel -ca

编辑:它显示
网络。sh
脚本要求将
COMPOSE\u PROJECT\u NAME
环境变量设置为
test
,否则它将无法正确初始化网络?完成此操作后,我尝试编写一个新的
config.yaml
文件,该文件仍然不正确,但我得到的错误已经改变

我最近开始使用Hyperledger
fabric。使用“fabric samples”测试网络,我开发并安装了连接到网关后成功调用的链码

要启动区块链网络,我运行
测试网络/network.sh
命令:

./network.sh up createChannel -ca
现在,我试图以编程方式访问一个块(用于查看背书人),但我得到的
clientChannelContext
会导致以下错误:

无法获取分类账客户端无法获取客户端上下文以创建频道客户端:未找到用户

由于不知道fabsdk引用需要什么配置,我尝试了
测试网络
文件夹下找到的每个
*.yaml
文件,但没有成功

虽然
fabsdk.New()
返回一个“有效的”
*FabricSDK
但我怀疑它没有正确初始化

主程序包
进口(
“fmt”
“操作系统”
“github.com/hyperledger/fabric sdk go/pkg/client/ledger”
“github.com/hyperledger/fabric sdk go/pkg/common/providers/fab”
“github.com/hyperledger/fabric sdk go/pkg/core/config”
“github.com/hyperledger/fabric sdk go/pkg/fabsdk”
)
func main(){
如果len(os.Args)!=2{
返回
}
channelID:=“我的频道”
orgAdmin:=“管理员”
orgName:=“Org1”
fmt.Printf(“使用:\n\t频道:\t%s\n\tOrg:\t\t%s\n\tUser:\t\t%s\n”,频道ID,组织名称,组织管理员)
cfgProvider:=config.FromFile(“./config.yaml”)
sdk,错误:=fabsdk.New(cfgProvider)
如果错误!=零{
fmt.Printf(“创建新SDK失败:%s”,错误)
}
defer sdk.Close()
clientChannelContext:=sdk.ChannelContext(channelID,fabsdk.WithUser(orgAdmin),fabsdk.WithOrg(orgName))
客户端,错误:=分类账。新建(clientChannelContext)
如果错误!=零{
fmt.Printf(“无法获取分类账客户端%v”,错误)
返回
}否则{
fmt.Printf(“客户是%v”,客户)
}
tx,err:=client.QueryBlockByTxID(fab.TransactionID(os.Args[1]))
如果错误!=零{
Printf(“Epic失败,但至少我们现在有一个客户端:%v”,错误)
返回
}
fmt.Printf(“发送为%v”,发送)
}
我当前的config.yaml,基于:

#
#版权所有SecureKey Technologies Inc.保留所有权利。
#
#SPDX许可证标识符:Apache-2.0
#
#
#网络连接配置文件为客户端应用程序提供有关目标的信息
#应用程序与之交互所必需的区块链网络。这些都是
#必须从带外来源获得的知识。此文件提供了这样一个源。
#
版本:1.0.0
客户:
组织:Org1
登录中:
级别:信息
#具有密钥和证书的MSP目录的根目录。
加密配置:
路径:${FABRIC\u SDK\u GO\u PROJECT\u path}/测试网络/组织
证书店:
#[可选]。由用户存储使用。如果配置中嵌入了所有凭据,则不需要
#并在此处执行注册。
路径:“/tmp/状态存储”
#[可选]。特定于GO SDK使用的CryptoSuite实现。基于软件的实现
#需要密钥存储。基于PKCS#11的实现不会。
加密存储:
#特定于支持加密密钥存储的基础KeyValueStore。
路径:/tmp/msp
#[可选]客户端的BCCSP配置。由GoSDK使用。
BCCSP:
安全:
已启用:true
违约:
提供者:“软件”
哈希算法:“SHA2”
softVerify:正确
级别:256
tlsCerts:
#[可选]。连接到对等方时使用系统证书池,订购方(用于协商TLS)默认值:false
systemCertPool:true
频道:
_默认值:
同龄人:
peer0.org1.example.com:
赞助人:对
chaincodeQuery:true
账本查询:true
eventSource:true
政策:
QueryChannel配置:
答复:1
最大目标:1
回复选项:
尝试次数:5次
初始后退:500毫秒
最大退避:5秒
退避系数:2.0
发现:
最大目标:2
回复选项:
尝试次数:4次
初始后退:500毫秒
最大退避:5秒
退避系数:2.0
事件服务:
解析策略:首选组织
平衡器:随机
区块高度阈值:5
重新连接BlockHeightLagThreshold:8
PeerMonitor周期:6s
我的频道:
同龄人:
peer0.org1.example.com:
赞助人:对
chaincodeQuery:true
账本查询:true
eventSource:true
#
#此网络中的参与组织列表
#
组织:
Org1:
mspid:Org1MSP
加密路径:peerOrganizations/org1.example.com/users/{username}@org1.example.com/msp
同龄人:
-peer0.org1.example.com
认证机构:
-ca_org1
Org2:
mspid:Org2MSP
加密路径:peerOrganizations/org2.example.com/users/{username}@org2.example.com/msp
同龄人:
-peer0.org2.example.com
认证机构:
-ca_org2
#订购方组织名称
order.example.com:
mspID:ordermsp
加密路径:OrderOrganizations/example.com/users/{username}@example.com/msp
#
#要向其发送事务和通道创建/更新请求的订购者列表。暂时
#只需要一个订购者。如果定义了多个,那么
#SDK是特定于实现的。请参阅每个SDK的文档以了解其对订购者的处理。
#
订购者:
order.example.com:
#[可选]默认值:从主机名推断
url:order.exa