在Hyperledger Fabric中,如果无法使用对等通道获取命令,如何加入通道?

时间:2019-01-15 08:21:15

标签: hyperledger-fabric hyperledger blockchain

我希望我的同伴能够加入一个频道(在本例中为mychannel)。该特定对等方的文件系统上没有mychannel.block文件。

然后我尝试使用peer channel fetch 0 -c mychannel。然后,我得到以下错误:

2019-01-15 08:11:18.948 UTC [msp] Validate -> DEBU 036 MSP ZafitMSP validating identity
2019-01-15 08:11:18.949 UTC [msp] GetDefaultSigningIdentity -> DEBU 037 Obtaining default signing identity
2019-01-15 08:11:18.949 UTC [grpc] DialContext -> DEBU 038 parsed scheme: ""
2019-01-15 08:11:18.949 UTC [grpc] DialContext -> DEBU 039 scheme "" not registered, fallback to default scheme
2019-01-15 08:11:18.949 UTC [grpc] watcher -> DEBU 03a ccResolverWrapper: sending new addresses to cc: [{peer1.zafit.example.com:7051 0  <nil>}]
2019-01-15 08:11:18.949 UTC [grpc] switchBalancer -> DEBU 03b ClientConn switching balancer to "pick_first"
2019-01-15 08:11:18.950 UTC [grpc] HandleSubConnStateChange -> DEBU 03c pickfirstBalancer: HandleSubConnStateChange: 0xc4202b78d0, CONNECTING
2019-01-15 08:11:18.952 UTC [grpc] HandleSubConnStateChange -> DEBU 03d pickfirstBalancer: HandleSubConnStateChange: 0xc4202b78d0, READY
2019-01-15 08:11:18.953 UTC [channelCmd] InitCmdFactory -> INFO 03e Endorser and orderer connections initialized
2019-01-15 08:11:18.953 UTC [msp] GetDefaultSigningIdentity -> DEBU 03f Obtaining default signing identity
2019-01-15 08:11:18.953 UTC [msp] GetDefaultSigningIdentity -> DEBU 040 Obtaining default signing identity
2019-01-15 08:11:18.953 UTC [msp/identity] Sign -> DEBU 041 Sign: plaintext: 0AF2060A1508051A0608A6ABF6E10522...1BB3248E4BFA12080A021A0012021A00
2019-01-15 08:11:18.953 UTC [msp/identity] Sign -> DEBU 042 Sign: digest: C8988576954088FD1A61D6D4FFA7A7280E52F10B2F2671693C260B54B09F3B89
2019-01-15 08:11:18.954 UTC [cli/common] readBlock -> INFO 043 Got status: &{NOT_FOUND}

但是,当我从另一个对等方复制mychannel.block文件时,我能够成功加入mychannel。加入频道后,peer channel fetch命令也成功运行。

在我看来,这就像是鸡到蛋的场景,我需要以同行身份加入渠道,但由于需要创世记块而无法加入。但是因为我需要加入频道,所以我无法获得“创世纪”封锁吗?

所以问题是检索创世记mychannel.block文件的适当命令是什么?

3 个答案:

答案 0 :(得分:1)

原来,我需要添加订购者参数-o。另外,由于我正在使用TLS进行连接,因此需要指定--tls true--cafile

完整命令如下:?

peer channel fetch 0 -c mychannel -o orderer.example.com:7050 --tls true --cafile $ORDERER_CA

答案 1 :(得分:0)

您需要添加-o--orderer)标志并将其设置为订购服务端点。如果您未设置此标志,那么peer channel fetch会尝试从对等方(显然没有)获取该块。在没有--peer.address / CORE_PEER_ADDRESS的情况下运行时,您也可以指定一个不同的-o来从另一个对等方获取配置块。

答案 2 :(得分:0)

peer channel fetch 0 -c mychannel 

注意:您无需获取频道即可加入频道 创建频道将为.block文件提供成功标志。

加入频道将利用此顺序完成加入过程

如果您错过了.block,则需要获取命令

注意:有关最新的提取命令

https://hyperledger-fabric.readthedocs.io/en/release-1.4/commands/peerchannel.html

对等通道连接-b channel.block --tls --cafile /etc/hyperledger/crypto/peer/tls/ca.crt

当您尝试加入一个通道时,必须联系订购者以获取配置信息,这就是为什么您要提及-o orderer_name以便通过CLI了解订购者的原因