Hyperledger Fabric 2.2.1 区块链问题汇总(持续更新)
搭建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 区块链问题汇总(持续更新)相关推荐
- 利用Hyperledger Fabric开发第一个区块链应用
利用Hyperledger Fabric开发第一个区块链应用 Fabric入门 Fabric 我们通过一个简单的示例程序来了解Fabric应用是如何运行的.在这个例子中使用的应用程序和智能合约(链码) ...
- Hyperledger Fabric 1.4 搭建区块链浏览器
Hyperledger Fabric 1.4 搭建区块链浏览器 原创iCyberpunk 最后发布于2020-01-09 12:11:01 阅读数 233 收藏 展开 1. 准备工作 安装nodej ...
- Hyperledger Fabric 2.x Java区块链应用
一.说明 在上一篇文章中 <Hyperledger Fabric 2.x 自定义智能合约> 分享了智能合约的安装并使用 cli 客户端进行合约的调用:本文将使用 Java 代码基于 fab ...
- 区块链市场热度持续升温 各企业关注区块链技术领域
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 长期以来,有两种基础方式来组织人们进行工作,分别是企业和市场.但我们发现,一种新的基于平台的组织工作的形式出现了.像微信 ...
- fabric中简单搭建区块链浏览器
区块链浏览器可以让项目更直观的展示 前期准备 安装git,mysql,node,npm,各版本如下图 一 从github上拉取项目 git clone https://github.com/hyper ...
- Oracle再发力,区块链平台多项更新
本周,Oracle宣布将加速全球区块链的采用.据悉,目前全球已经众多企业通过Oracle区块链平台享受到了区块链应用程序的优势,而Oracle将为区块链平台添加更多新功能,帮助用户加速区块链应用程序的 ...
- 区块链浏览器_YOYOW正式发布更新版本区块链浏览器
(点击↑↑图片领"福利") YOYOW主网2.0顺利上线以来,YOYOW基金会团队与合作伙伴持续开展合作,多家合作伙伴成为并参与到YOYOW主网2.0超级节点的竞选.同时除了主网以 ...
- 区块链知识汇总练习——私有链、公有链、联盟链、元宇宙、AR技术
1.扩容是为了解决什么问题 • A.网络拥堵,信息传输满 • B.电脑内存有限 • C.网速太慢,需要加大区块的容量 • D.比特币网络拥堵,交易确认慢 正确答案:D 答案解析:一般我们所理解扩容是什 ...
- 11月获得融资的区块链企业汇总
11月,比特币跌破4000美元,币圈哀鸿一片,但是仍有不少优秀的区块链企业获得了投行的青睐,下面是千氪专栏作者链视界整理的11月获得融资的15个区块链企业,他们分别是: 项目名称:Propine 融资 ...
最新文章
- LeetCode 450 Delete Node in a BST(二叉搜索树中的删除结点)
- MySql数据库使用入门
- java第三方接口对接_调用多个第三方接口哪一种方案更好?
- vivo的android是什么手机图片,vivo iQOO配置好不好 vivo iQOO手机参数和外观图赏
- 从零开始学JavaScript三(变量)
- rm删除文件显示:Operation not permitted
- 读书笔记:《Aspx开发200问》——如果实现动态加载用户空间
- mysql 服务意外停止1067错误解决办法小结
- java.util.concurrent.ExecutorCompletionService 源码
- 在Android系统中,F2FS 文件系统问题分析步骤
- 计算机发展的新用途应用,新时期计算机技术的应用及发展趋势
- art-记一次提取mmd模型到max和unity
- Golang学习资源整理
- 如何在Linux系统上装jdk1.8以及环境配置的方法步骤
- 六度分割理论和SNS
- Top100图神经网络论文大盘点
- 搜索引擎市场份额2018.3
- 补丁服务器同步不上微软,无法初始化 Microsoft Exchange 信息存储服务,因为客户端和服务器计算机上的时钟不同步...
- CRM 建设方案(01):CRM基础
- 计算机图形学-光栅渲染概述