FABRIC返回错误:出现意外状态:BAD_REQUEST

时间:2017-08-16 07:51:18

标签: hyperledger hyperledger-fabric

fabric document create-join-channel开始执行命令

peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

它会在以下消息后返回错误代码段:

  

2017-08-16 01:34:13.902 UTC [msp] GetLocalMSP - > DEBU 00c返回现有的本地MSP   2017-08-16 01:34:13.902 UTC [msp] GetDefaultSigningIdentity - > DEBU 00d获取默认签名身份   2017-08-16 01:34:13.902 UTC [msp / identity] Sign - > DEBU 00e标志:明文:0AC3060A1508021A060895C2CECC0522 ... 7E2E59E3CFD14AC765C92FBF36614E79   2017-08-16 01:34:13.902 UTC [msp / identity] Sign - > DEBU 00f标志:摘要:FA75790826EF23E1A7C46AD3B9AE0DB7321DC271B8BE93A29BAC2F6EEACBB8B0   错误:出现意外状态:BAD_REQUEST   用法:     peer channel创建[flags]

     

标志:

comamands如下:

cryptogen generate --config =。/ crypto-config.yaml

导出FABRIC_CFG_PATH = $ PWD

configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

导出CHANNEL_NAME = mychannel

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx-channelID $ CHANNEL_NAME

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx-channelID $ CHANNEL_NAME -asOrg Org1MSP

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $ CHANNEL_NAME -asOrg Org2MSP

CHANNEL_NAME = $ CHANNEL_NAME TIMEOUT = 10000 docker-compose -f docker-compose-cli.yaml up -d

docker exec -it cli bash

导出CHANNEL_NAME = mychannel

peer channel create -o orderer.example.com:7050 -c $ CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $ CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger /fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

8 个答案:

答案 0 :(得分:0)

请确保频道名称是新的,并且网络中没有已存在该名称的现有频道。

例如,如果您已经使用CHANNEL_NAME=mychannel创建了一个频道,请在创建另一个频道之前更改变量,方法是运行类似export CHANNEL_NAME=mychannelanother

的内容

答案 1 :(得分:0)

  

获得意外状态:BAD_REQUEST

不幸的是,此错误消息可能意味着许多事情。仅供参考,在即将发布的v1.1版本中,此消息已得到增强,包含其他文本。

最常见的是,对于频道创建,此状态表示提交者没有频道创建权限(通常等同于组织的管理员权限)。但是,正如mac所示,如果频道已经存在,您可能也会收到此错误。

  

peer channel create -o orderer.example.com:7050 -c $ CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $ CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger /fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

这个命令让我觉得可能是罪魁祸首。此命令通常应与以下行配对:

export CORE_PEER_MSPCONFIGPATH=`pwd`/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp 
export CORE_PEER_LOCALMSPID=PeerOrg1 

告诉peer命令应使用特定管理员证书签署频道创建请求。 peer命令的证书材料的默认路径通常会导致用于签名的标准用户证书。

答案 2 :(得分:0)

你得到这个的原因可能是因为docker-compose-cli.yaml文件仍在运行script.sh脚本。注释掉调用脚本的行,它将运行正常。例如:

# Comment out the line like the example below by adding a #
# command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME} ${DELAY} ${LANG}; sleep $TIMEOUT'```

我建议更改文档以解决此问题。

答案 3 :(得分:0)

我有类似的错误。在docker-compose中设置CHANNEL_NAME变量的方式似乎存在问题(我猜?)。我运行了这个命令,稍作修改,如下所示[已将标志'-c $ CHANNEL_NAME'更改为'-c mychannel']:

peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/对等体/加密/ ordererOrganizations / example.com / orderers / orderer.example.com / MSP / tlscacerts / tlsca.example.com-cert.pem

这很有用。

答案 4 :(得分:0)

正如@Phil所说,你应该在启动网络之前注释掉该行。正如文件所说:

  

如果不进行注释,该脚本将在网络启动时执行所有CLI命令,正如我们在幕后发生的事情中所描述的那样?部分。但是,我们希望手动完成命令,以便公开每个调用的语法和功能。

see the doc

答案 5 :(得分:0)

The same thing happens to me but I just down the network and then done all procedure again like generate genesis block again and then up my network I got up a network.

答案 6 :(得分:0)

尝试在/ etc / hosts中为正在使用的域添加条目(通常是example.com)

转到终端:输入“sudo / etc / hosts” 在顶部添加“127.0.0.1 example.com” 按ctrl + o保存,按'y'确认,按ctrl + x退出。

再试一次..应该有用。

答案 7 :(得分:0)

./byfn.sh -m restart -c mychannel