搭建Hyperledger Fabric时遇到了很多问题,很多坑,这里汇总一下,有些可能没保存图片,还有些问题没及时记录起来:

1、生成orderer区块文件时,如下图所示:

必须要指定channelID修改命令如下即可:

configtxgen -profile TestTwoOrgsOrdererGenesis -channelID qkltestchannel -outputBlock ./order.genesis.block

2、创建orderer区块文件时,如下图所示:

原因:OrdererDefaults引用不到,百度了一下,参考文章:https://blog.csdn.net/damonren/article/details/90753164,说是configtx.yaml配置文件的Profiles部分要放到最后面才行,修改下configtx.yaml的内容即可。

3、创建orderer区块文件时,如下图所示:

原因:configtx.yaml文件缺少了策略配置,增加对应的policies即可,可参考fabric源码的test-network目录下的configtx.yaml,我的是在这个目录:~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/configtx

4、创建orderer区块文件时,如下图所示:

原因:权限拒绝,因为要写入一个order.genesis.block文件,所以需要权限,输入命令:

sudo configtxgen -profile TestTwoOrgsOrdererGenesis -channelID qkltestchannel -outputBlock ./order.genesis.block

5、生成锚点更新文件时,即执行下面命令时:

sudo configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID qkltestchannel -asOrg Org1MSP
sudo configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID qkltestchannel -asOrg Org2MSP

如果出现Error on inspectChannelCreateTx:org 'Org1MSP' does not have any anchor peers这种报错的话,原因:configtx.yaml底下的Org1,即peer节点的配置少了下面的属性:

        AnchorPeers:- Host: peer0.org1.qkltest.comPort: 7051     

6、启动orderer节点时,即输入命令:orderer start时,如下图所示:

原因:权限问题,输入命令时,加个sudo orderer start即可

7、启动orderer节点时,如下图所示:

原因:configtx.yaml文件没配置capabilities的原因,因此我们重新改下configtx.yaml文件,增加了Capabilities,不过要重新生成对应的一些区块问题,通道配置文件,锚点更新文件

8、创建通道时,如下图所示:

原因:出现这种情况时,是因为找不到对应的配置文件,所以要切换到peer目录

9、创建通道时,如下图所示:

原因:连接不到orderer.qkltest.com:7050,可能网络配置问题,又或者orderer配置问题,又或者orderer没有启动

10、创建通道时,如下图所示:

原因:就是创建orderer区块文件时的channelID与创建通道配置文件channelID相同导致的

11、创建通道时,如下图所示:

原因:找不到对应的证书路径,可以加上--cafile指定orderer的证书路径,我的路径:/opt/hyperledger/fabricconfig/crypto-config/ordererOrganizations/qkltest.com/orderers/orderer.qkltest.com/msp/tlscacerts/tlsca.qkltest.com-cert.pem

又或者,没有设置相关的变量:

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.qkltest.com:7051
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.qkltest.com/users/Admin@org1.qkltest.com/msp

13、用docker-compose启动网络时,orderer节点启动失败,如下图所示:

原因:通常出现这种情况,就是证书路径配置错了,检查一下docker-compose-test-qkl.yaml路径,发现没有错呀,也可能是docker-compose-test-qkl.yaml文件底下orderer配置的路径下msp没有signcerts目录:

上面这种的解决就是再搭建Fabric第一步时配置出问题了,我是把一个orderer其中的属性Specs写成小写的specs,导致一些目录和证书缺少,没生成。需要重新修改crypto-config.yaml,再重新执行命令:

sudo cryptogen generate --config=crypto-config.yaml

14、用docker-compose启动网络时,如下图所示:

原因:网络延迟问题

15、在cli容器里,将当前节点加入应用通道时,报下图的错误:

原因:配置文件配置问题

增加下面几行即可:

      - CORE_PEER_ID=cli- CORE_PEER_ADDRESS=peer0.org1.qkltest.com:7051- CORE_PEER_LOCALMSPID=Org1MSP- CORE_PEER_TLS_ENABLED=true- CORE_PEER_TLS_CERT_FILE=/opt/hyperledger/peer/peerOrganizations/org1.qkltest.com/peers/peer0.org1.qkltest.com/tls/server.crt- CORE_PEER_TLS_KEY_FILE=/opt/hyperledger/peer/peerOrganizations/org1.qkltest.com/peers/peer0.org1.qkltest.com/tls/server.key- CORE_PEER_TLS_ROOTCERT_FILE=/opt/hyperledger/peer/peerOrganizations/org1.qkltest.com/peers/peer0.org1.qkltest.com/tls/ca.crt- CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/peer/peerOrganizations/org1.qkltest.com/users/Admin@org1.qkltest.com/msp

注意,别加错位置了

16、打包链码时,报Error: failed to normalize chaincode path: failed to determine module root: exec: "go": executable file not found in $PATH错误,如下图所示:

原因:因为sudo的原因会重置环境变量导致查找不到可执行的go程序

解决办法,输入命令:

sudo vim ~/.bash_rc
sudo vim ~/.profile

并依次加上下面这一行:

alias sudo='sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

接着使环境变量生效,输入命令:

source ~/.bash_rc
source ~/.profile

17、打包链码时,报错如下图所示:

Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/hyperledger/fabric-contract-api-go@v1.1.0: Get "https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.1.0.mod": dial tcp 108.177.125.141:443: connect: connection refused: exit status 1

解决办法,设置go代理,记得前面要加sudo:

sudo go env -w GO111MODULE=on
sudo go env -w GOPROXY=https://goproxy.cn,direct

18、切换到peer0.org2.qkltest.com环境变量,并批准链码时,报Error: timed out waiting for txid on all peers这个错误,如下图所示:

原因:配置文件问题,可能哪个地方写错了配置,我这边是因为configtx.yaml底下的策略配置出现了问题。

原来的配置:

Organizations:- &OrdererOrgName: OrdererMSPID: OrdererMSPMSPDir: /opt/hyperledger/fabricconfig/crypto-config/ordererOrganizations/qkltest.com/mspPolicies: Readers:Type: SignatureRule: "OR('OrdererMSP.member')"Writers:Type: SignatureRule: "OR('OrdererMSP.member')"Admins:Type: SignatureRule: "OR('OrdererMSP.admin')"Endorsement:Type: SignatureRule: "OR('OrdererMSP.member')"OrdererEndpoints:- orderer.qkltest.com:7050- &Org1Name: Org1MSPID: Org1MSPMSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.qkltest.com/mspPolicies:Readers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"Writers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.client')"Admins:Type: SignatureRule: "OR('Org1MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org1MSP.peer')"AnchorPeers:- Host: peer0.org1.qkltest.comPort: 7051- &Org2Name: Org2MSPID: Org2MSPMSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org2.qkltest.com/mspAdminPrincipal: Role.ADMINPolicies:Readers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"Writers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.client')"Admins:Type: SignatureRule: "OR('Org2MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org2MSP.peer')"AnchorPeers:- Host: peer0.org2.qkltest.comPort: 7051

修改后的配置:

Organizations:# SampleOrg defines an MSP using the sampleconfig.  It should never be used# in production but may be used as a template for other definitions- &OrdererOrg# DefaultOrg defines the organization which is used in the sampleconfig# of the fabric.git development environmentName: OrdererOrg# ID to load the MSP definition asID: OrdererMSP# MSPDir is the filesystem path which contains the MSP configurationMSPDir: /opt/hyperledger/fabricconfig/crypto-config/ordererOrganizations/qkltest.com/msp# Policies defines the set of policies at this level of the config tree# For organization policies, their canonical path is usually#   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('OrdererMSP.member')"Writers:Type: SignatureRule: "OR('OrdererMSP.member')"Admins:Type: SignatureRule: "OR('OrdererMSP.admin')"Endorsement:Type: SignatureRule: "OR('OrdererMSP.member')"OrdererEndpoints:- orderer.qkltest.com:7050- &Org1# DefaultOrg defines the organization which is used in the sampleconfig# of the fabric.git development environmentName: Org1MSP# ID to load the MSP definition asID: Org1MSPMSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.qkltest.com/msp# Policies defines the set of policies at this level of the config tree# For organization policies, their canonical path is usually#   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('Org1MSP.member')"Writers:Type: SignatureRule: "OR('Org1MSP.member')"Admins:Type: SignatureRule: "OR('Org1MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org1MSP.member')"OrdererEndpoints:- orderer.qkltest.com:7050AnchorPeers:- Host: peer0.org1.qkltest.comPort: 7051        - &Org2# DefaultOrg defines the organization which is used in the sampleconfig# of the fabric.git development environmentName: Org2MSP# ID to load the MSP definition asID: Org2MSPMSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org2.qkltest.com/msp# Policies defines the set of policies at this level of the config tree# For organization policies, their canonical path is usually#   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('Org2MSP.member')"Writers:Type: SignatureRule: "OR('Org2MSP.member')"Admins:Type: SignatureRule: "OR('Org2MSP.admin')"Endorsement:Type: SignatureRule: "OR('Org2MSP.member')"OrdererEndpoints:- orderer.qkltest.com:7050AnchorPeers:- Host: peer0.org2.qkltest.comPort: 7051

注:需修改后,重新生成区块文件,通道文件,锚点更新文件,重新启动网络,重新按顺序操作

19、查看peer日志时,输入命令:docker logs peer0.org1.qkltest.com、或者docker logs peer0.org2.qkltest.com时报以下的错误:

eer {"CN":"peer1.org2.qkltest.com","Issuer-CN":"ca.org2.qkltest.com","Issuer-L-ST-C":"[San Francisco]-[]-[US]","Issuer-OU":null,"L-ST-C":"[San Francisco]-[]-[US]","MSP":"Org2MSP","OU":null} isn't eligible for channel qkltestchannel : implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Readers' sub-policies to be satisfiedERRO 04c VSCC error: stateBasedValidator.Validate failed, err validation of endorsement policy for collection _implicit_org_Org2MSP chaincode _lifecycle in tx 2:0 failed: signature set did not satisfy policy

原因:也是configtx.yaml配置策略出现问题,需修改后,重新生成区块文件,通道文件,锚点更新文件,重新启动网络,重新按顺序操作

20、批准链码时,如下图所示:

原因:网络关闭了,docker清理了缓存,生成的链码镜像删除了,需要重新生成配置文件configtx.yaml指定的区块文件和通道文件,再重新开始。

可能还有很多问题,可以参考这篇文章:https://studygolang.com/articles/20611

我这边也会持续更新,有问题可以在下方提出,大家一起讨论学习,谢谢!

Hyperledger Fabric 2.2.1 区块链问题汇总(持续更新)相关推荐

  1. 利用Hyperledger Fabric开发第一个区块链应用

    利用Hyperledger Fabric开发第一个区块链应用 Fabric入门 Fabric 我们通过一个简单的示例程序来了解Fabric应用是如何运行的.在这个例子中使用的应用程序和智能合约(链码) ...

  2. Hyperledger Fabric 1.4 搭建区块链浏览器

    Hyperledger Fabric 1.4 搭建区块链浏览器 原创iCyberpunk 最后发布于2020-01-09 12:11:01 阅读数 233  收藏 展开 1. 准备工作 安装nodej ...

  3. Hyperledger Fabric 2.x Java区块链应用

    一.说明 在上一篇文章中 <Hyperledger Fabric 2.x 自定义智能合约> 分享了智能合约的安装并使用 cli 客户端进行合约的调用:本文将使用 Java 代码基于 fab ...

  4. 区块链市场热度持续升温 各企业关注区块链技术领域

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 长期以来,有两种基础方式来组织人们进行工作,分别是企业和市场.但我们发现,一种新的基于平台的组织工作的形式出现了.像微信 ...

  5. fabric中简单搭建区块链浏览器

    区块链浏览器可以让项目更直观的展示 前期准备 安装git,mysql,node,npm,各版本如下图 一 从github上拉取项目 git clone https://github.com/hyper ...

  6. Oracle再发力,区块链平台多项更新

    本周,Oracle宣布将加速全球区块链的采用.据悉,目前全球已经众多企业通过Oracle区块链平台享受到了区块链应用程序的优势,而Oracle将为区块链平台添加更多新功能,帮助用户加速区块链应用程序的 ...

  7. 区块链浏览器_YOYOW正式发布更新版本区块链浏览器

    (点击↑↑图片领"福利") YOYOW主网2.0顺利上线以来,YOYOW基金会团队与合作伙伴持续开展合作,多家合作伙伴成为并参与到YOYOW主网2.0超级节点的竞选.同时除了主网以 ...

  8. 区块链知识汇总练习——私有链、公有链、联盟链、元宇宙、AR技术

    1.扩容是为了解决什么问题 • A.网络拥堵,信息传输满 • B.电脑内存有限 • C.网速太慢,需要加大区块的容量 • D.比特币网络拥堵,交易确认慢 正确答案:D 答案解析:一般我们所理解扩容是什 ...

  9. 11月获得融资的区块链企业汇总

    11月,比特币跌破4000美元,币圈哀鸿一片,但是仍有不少优秀的区块链企业获得了投行的青睐,下面是千氪专栏作者链视界整理的11月获得融资的15个区块链企业,他们分别是: 项目名称:Propine 融资 ...

最新文章

  1. LeetCode 450 Delete Node in a BST(二叉搜索树中的删除结点)
  2. MySql数据库使用入门
  3. java第三方接口对接_调用多个第三方接口哪一种方案更好?
  4. vivo的android是什么手机图片,vivo iQOO配置好不好 vivo iQOO手机参数和外观图赏
  5. 从零开始学JavaScript三(变量)
  6. rm删除文件显示:Operation not permitted
  7. 读书笔记:《Aspx开发200问》——如果实现动态加载用户空间
  8. mysql 服务意外停止1067错误解决办法小结
  9. java.util.concurrent.ExecutorCompletionService 源码
  10. 在Android系统中,F2FS 文件系统问题分析步骤
  11. 计算机发展的新用途应用,新时期计算机技术的应用及发展趋势
  12. art-记一次提取mmd模型到max和unity
  13. Golang学习资源整理
  14. 如何在Linux系统上装jdk1.8以及环境配置的方法步骤
  15. 六度分割理论和SNS
  16. Top100图神经网络论文大盘点
  17. 搜索引擎市场份额2018.3
  18. 补丁服务器同步不上微软,无法初始化 Microsoft Exchange 信息存储服务,因为客户端和服务器计算机上的时钟不同步...
  19. CRM 建设方案(01):CRM基础
  20. 计算机图形学-光栅渲染概述

热门文章

  1. Ajax补充之serialize
  2. Docker+Teamcity+Maven+SVN搭建持续集成环境
  3. ASP.NET MVC 在WebService中Token的使用方法
  4. SQLServer 行转列,统计,二次分组
  5. about semget
  6. 请使用C#的文件流来拷贝文件
  7. 【转】单元测试基础知识
  8. 计算机网络「五」 运输层
  9. 各种排序算法的时间复杂度
  10. 7-121 深入虎穴 (25 分)(dfs,bfs)