【问题标题】:Hyperledger Fabric - Peer unable to join channelHyperledger Fabric - 对等方无法加入频道
【发布时间】:2019-09-15 08:34:45
【问题描述】:

我们在尝试对等节点加入频道时遇到错误。两个成员都有单独的对等节点和充当网络客户端的单独 EC2 机器。 Member1 已创建一个通道并将其对等节点加入该通道。 Member2 已经从他们的客户端中提取了创世块,但是在尝试加入频道时,我们收到了错误:

Error: genesis block file not found open ourchannel.block: no such file or directory

尽管在我们运行命令的目录中看到 ourchannel.block。我们用来加入频道的命令是:

docker exec -e "CORE_PEER_TLS_ENABLED=true" \
-e "CORE_PEER_TLS_ROOTCERT_FILE=/opt/home/managedblockchain-tls-chain.pem" \
-e "CORE_PEER_ADDRESS=$PEER" \
-e "CORE_PEER_LOCALMSPID=$MSP" \
-e "CORE_PEER_MSPCONFIGPATH=$MSP_PATH" \
cli peer channel join -b ourchannel.block \
-o $ORDERER --cafile /opt/home/managedblockchain-tls-chain.pem --tls

【问题讨论】:

  • 有一个ourchannel.block文件就地?

标签: hyperledger-fabric hyperledger blockchain


【解决方案1】:

如果您在单独的容器(在您的情况下为 cli 容器)中创建通道,则您只有创世块(扩展名为 .block 的文件)。请在cli 容器内使用ls 命令检查。

跳转到cli容器的简单命令:

docker exec -it cli bash

万一你找不到创世块,你可以从orderer那里得到它(记得修改cafile的路径适合你的项目):

peer channel fetch 0 ourchannel.block -o orderer.example.com:7050 -c ourchannel --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

之后,您可以使用peer channel join 命令加入频道。

【讨论】:

  • 感谢您的回复,正如我在帖子中提到的,member2 能够拉出创世块。我没有提到它,但我按照你说的使用 fetch 命令拉了它。
  • 你在哪里找到了创世区块?在member2 的容器中还是在cli 的容器中?如果你在member2容器内获取创世,你不能在cli容器内调用join channel
  • 啊,你解决了你的问题。原因是docker exec运行时的默认路径是这样的:/opt/gopath/src/github.com/hyperledger/fabric/peer。这就是为什么它显示未找到。很高兴你解决了这个问题。
【解决方案2】:

简单的问题,我们必须指定块文件的绝对路径。

代替

cli peer channel join -b ourchannel.block

我们用过

cli peer channel join -b /opt/home/ourchannel.block \

它成功了。

【讨论】:

    猜你喜欢
    • 2018-06-20
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2018-12-06
    相关资源
    最近更新 更多