我的结构版本是1.1.0预览版,同伴,订购者,configtxgen是新生成的。
当我执行configtxgen工具时:
configtxgen -profile SoloOrdererGenesis -outputBlock genesis.block
configtxgen -profile mych -outputCreateChannelTx channel-artifacts/mych.tx -channelID mych
它生成genesis.block和much.tx,通道名称很多。
然后orderer以genesis.block开头,执行以下命令:
peer channel create -f mych.tx -o orderer.example.com:7050 -c mych
它抛出错误,
错误:出现意外状态:FORBIDDEN - 无法达到1个子策略的隐含阈值,需要1个剩余:权限被拒绝
哪一步错了?
我的configtx.yaml文件是:
---
Profiles:
SoloOrdererGenesis:
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Consortiums:
SampleConsortium4:
Organizations:
- *Org1
- *Org2
- *Org3
- *Org4
SampleConsortium3:
Organizations:
- *Org1
- *Org2
- *Org3
SampleConsortium2:
Organizations:
- *Org1
- *Org2
SampleConsortium1:
Organizations:
- *Org1
mych4:
Consortium: SampleConsortium4
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
- *Org3
- *Org4
mych3:
Consortium: SampleConsortium3
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
- *Org3
mych2:
Consortium: SampleConsortium2
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
mych1:
Consortium: SampleConsortium1
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
Organizations:
- &OrdererOrg
Name: OrdererOrg
ID: OrdererMSP
MSPDir: orderer/msp
- &Org1
Name: Org1MSP
ID: Org1MSP
MSPDir: org1/peer/msp
AnchorPeers:
- Host: peer.org1.example.com
Port: 17051
- &Org2
Name: Org2MSP
ID: Org2MSP
MSPDir: org2/peer/msp
AnchorPeers:
- Host: peer.org2.example.com
Port: 27051
Orderer: &OrdererDefaults
OrdererType: solo
Addresses:
- orderer.example.com:7050
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 99 MB
PreferredMaxBytes: 512 KB
Organizations:
Application: &ApplicationDefaults
Organizations:
当我遇到这个问题时,我的解决方案很简单..我已经开始使用我的网络了
/byfn.sh -m up
忘了它,并试图通过生成加密然后使用相同的命令来启动它。我第一次使用旧网络时,问题就解决了
/byfn.sh -m down
并使用相同的向上命令再次启动。
它很可能是文件错误路径的简单问题。当您生成mych.tx
文件时,您将其写入channel-artifacts/mych.tx
,但在尝试创建通道时,您省略了channel-artifacts
目录。你可以试试peer channel create -f channel-artifacts/mych.tx -o orderer.example.com:7050 -c mych
也就是说,我遇到了同样错误的类似问题。我正在测试一个新创建的起源块和加密。就我而言,这是前一个加密和通道存储在我以前的一个测试中的Docker卷中的结果。这可能不是你的情况,因为你说你正在创建一个新的同行和订货人。
您可以通过docker exec -it <container name> bash
连接到其中一个对等体(或cli容器,如果有的话)然后运行peer channel list
来检查它。如果你得到这样的东西,那就是你的问题:
root@4cf873123669:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer channel list
2018-04-05 14:09:40.734 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-04-05 14:09:40.734 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-04-05 14:09:40.739 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2018-04-05 14:09:40.740 UTC [msp/identity] Sign -> DEBU 004 Sign: plaintext: 0AAE070A5C08031A0C08A4DC98D60510...631A0D0A0B4765744368616E6E656C73
2018-04-05 14:09:40.740 UTC [msp/identity] Sign -> DEBU 005 Sign: digest: 93EFB49DD86ABB5568DE1E2C8FC53FA99AB52929AFA24D7B317C270DE8CDC80B
Channels peers has joined:
mych
2018-04-05 14:09:40.743 UTC [main] main -> INFO 006 Exiting.....
如果你没有看到“频道同伴加入了”中列出的mych
,那么我的答案与你无关。 (但可能是其他人!)
以下是将本地Hyperledger Docker实例恢复到干净状态的方法:
docker-compose -f docker-compose.yaml down --volumes
--volumes
告诉Docker删除配置文件中与容器关联的所有卷。
为了更好地衡量,我只是将所有内容(所有Docker容器和卷 - 这是一个测试系统)擦除到一个空白的平板并开始整个过程:
docker-compose -f docker-compose.yaml down --volumes
docker rm $(docker ps -aq)
docker volume prune
rm genesis.block channel-artifacts/mych.tx
一旦我删除了这些,并启动了Fabric备份,我就能够创建通道而不会出现错误。
如果它不起作用将是sudo service docker restart
将重新启动所有docker服务,如docker系统,网络和卷。
如果你共享orderer的调试日志会更清楚。启用调试添加
- ORDERER_GENERAL_LOGLEVEL=debug
在您的docker撰写orderer服务下的文件,然后重新启动您的网络。然后,您可以使用命令打印日志
docker logs CONTAINER_NAME --details
我建议在运行create channel命令之前和之后打印日志。
如果此页面上的任何解决方案无法为任何人解决问题,请尝试从docker网络中删除您的网络。通过运行docker network ls
查看您的docker网络,并通过运行docker network rm <network-name>
删除您的网络。
删除docker网络对我有用,但我在开发服务器上做了这个。
在我的情况下,问题是权限以及网络已经(部分)。
我开始使用“./byfn.sh up”而不使用sudo,所以我第一次收到错误。
接下来,我做了“sudo su”然后跑了“./byfn up”,我又得到了错误。
参考其中一个答案是超级用户我做了“./byfn down”然后“./byfn up”现在,这对我有用。
我有同样的错误得到解决如下
你可能需要添加
走路也
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
echo $GOPATH
然后是/byfn.sh -m down
,如果它早起。
参考:https://hyperledger-fabric.readthedocs.io/en/release-1.1/prereqs.html