Hyperledger Fabric1.4遇到的坑

Hyperledger Fabric遇到的那些坑


 

1.生成起始区块出错

错误代码:
Error on outputBlock: Error writing genesis block: open ./channel-artifacts/genesis.block: no such file or director

错误原因:

路径中目录如果不存在,需提前创建


解决方案:

mkdir channel-artifacts


 

2.启动容器时出错

错误代码:
ERROR: no such image: hyperledger/fabric-orderer:: invalid reference format

错误原因:

没有这样的图像:hyperledger/fabric orderer::引用格式无效


解决方案:

打开docker-compose-cli.yaml,把cli下面的image后面的:$IMAGE_TAG删掉,再打开peer-base.yaml,把peer-base和orderer-base的image后面的:$IMAGE_TAG删掉。

  cli:
    container_name: cli
    image: hyperledger/fabric-tools:$IMAGE_TAG(把:$IMAGE_TAG删掉)
    tty: true
    stdin_open: true
    environment:
      - SYS_CHANNEL=$SYS_CHANNEL
services:
  peer-base:
    image: hyperledger/fabric-peer:$IMAGE_TAG (把:$IMAGE_TAG删掉)
    environment:
orderer-base:
    image: hyperledger/fabric-orderer:$IMAGE_TAG (把:$IMAGE_TAG删掉)
    environment:

 

3.更新锚节点时出错

  1. 在更新锚节点时,输入export CORE_PEER_ADDRESS=peer0.org2.example.com:7051时出现下面错误
错误代码:
Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'mychannel': error authorizing update: error validating ReadSet: proposed update requires that key [Group]  /Channel/Application/Org2MSP be at version 0, but it is currently at version 1

错误原因:

创建通道的时候,报这个错!! 已经存在通道了,就不要再添加了,可以通过 peer channel list来查看通道.


  1. 将节点加入通道时,输入CORE_PEER_ADDRESS=peer0.org2.example.com:7051出现错误
错误代码:
Error: error getting endorser client for channel: endorser client failed to connect to peer0.org2.example.com:7051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 172.28.0.3:7051: connect: connection refused"

解决方案:

解决:
CORE_PEER_ADDRESS=peer0.org2.example.com:9051

同理:如果是peer0.org1就改为peer0.org1.example.com:7051

​ 如果是peer1.org1就改为peer0.org1.example.com:8051

​ 如果是peer1.org2就改为peer0.org1.example.com:1005


 

4.在实例化链码时出错

错误代码:
Error: could not assemble transaction, err proposal response was not successful, error code 500, msg error starting container: error starting container: Failed to generate platform-specific docker build: Error executing build: API error (404): network _byfn not found ""

解决方案:

刚开始,我在peer-base.yaml里面修改CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=test_byfn发现还是出现同样的问题,然后我退出网络,删掉容器,然后在启动网络前添加export SYS_CHANNEL=“byfn-sys-channel”,然后启动网络,后面就可以了。不知道是不是凑巧。

当我再试一次时,发现启动时有两个WARNING,需要解决掉才能实例化成功

第一个在peer-base.yaml

 - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn
把${COMPOSE_PROJECT_NAME}_byfn 改为 文件名_byfn(不要有大写字母和符号)
我的文件名为test3,所以我得改为test3_byfn
第二个我是在启动容器前加export SYS_CHANNEL="byfn-sys-channel"
 

5.在将节点加入通道时出错

  1. 当我创建通道后,再将节点加入通道,发现没有mychannel.block
错误代码:
Error on outputBlock: Error writing genesis block: open ./channel-artifacts/genesis.block: no such file or director

错误原因:

发现是我关掉docker时没有删干净


解决方案:

然后我就执行docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans,后面就解决了。如果docker ps -a 发现还有未删的容器,可以执行docker stop $(sudo docker ps -a -q) 再执行docker rm $(sudo docker ps -a -q)


 

6.在链码交互时出错

错误代码:
Error: error getting endorser client for invoke: endorser client failed to connect to peer0.Org2.example.com:7051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 172.27.0.5:7051: connect: connection refused"director

错误原因:

是因为我输入错误了


解决方案:

把–peerAddresses peer0.Org2.example.com:7051修改为–peerAddresses peer0.Org2.example.com:9051

peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc \
--peerAddresses peer0.Org1.example.com:7051 \
--peerAddresses peer0.Org2.example.com:7051(修改为9051) \
-c '{"Args":["invoke","a","b","10"]}'

 

7.在创建通道时出错

错误代码:
Error: rpc error: code = Unavailable desc = transport is closing

错误原因:

是因为打开了TLS但是创建时是输入未打开TLS模式的命令的


解决方案:

可以关掉TLS验证,或者输入打开TLS模式的命令


2. 创建通道时犯的幼稚的错误 错误代码:
 Fatal error when initializing core config : Could not find config file. Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml

错误原因:

未进入容器(自己还思考十多分钟快二十分钟,顿时对自己无语。。。)


解决方案:

进入容器 docker exec -it cli bash


3. 通道名称不匹配 错误代码:
Error: Invalid channel create transaction : mismatched channel ID channelname != cannelname

解决方案:

查看一下你的通道名称是否正确


 

8.

错误代码:
Error: error getting endorser client for channel: endorser client failed to connect to node2.org3.example.com:12051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 192.168.208.8:12051: connect: connection refused"

错误原因:

大概是配置节点的时候出错


解决方案:

检查docker-compose-cli.yaml 和 docker-compose-base.yaml


 

9.

错误代码:
Error: error endorsing invoke: rpc error: code = Unknown desc = access denied: channel [mychannel] creator org [OrgXP] - proposal response: <nil>

错误原因:

大概是通道名称或链码名称写错了


解决方案:

执行命令时检查一下通道名称或链码名称


 

10.

错误代码:
Error: got unexpected status: BAD_REQUEST -- Consortium config value missing

错误原因:

这个原因还不清楚,不过我从头到尾部署一次后,问题解决了。可以尝试重新部署一次。


 

由于我时刚学的,可能有些专业名词说不出来,也可能有错误的地方,欢迎大家批评指教

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值