Hyperledger fabric hyperledger\u结构第一个网络因错误的\u请求而失败

Hyperledger fabric hyperledger\u结构第一个网络因错误的\u请求而失败,hyperledger-fabric,Hyperledger Fabric,这个问题与类似,不同的是我试图运行这里描述的自动化脚本:而不是手动执行步骤 当我运行提供的脚本时,我得到以下输出: Build your first network (BYFN) end-to-end test Channel name : mychannel Creating channel... CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganiza

这个问题与类似,不同的是我试图运行这里描述的自动化脚本:而不是手动执行步骤

当我运行提供的脚本时,我得到以下输出:

Build your first network (BYFN) end-to-end test

Channel name : mychannel
Creating channel...
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ID=cli
CORE_LOGGING_LEVEL=DEBUG
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
2017-08-14 16:41:43.613 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-08-14 16:41:43.613 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-08-14 16:41:43.620 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized
2017-08-14 16:41:43.622 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2017-08-14 16:41:43.622 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
2017-08-14 16:41:43.622 UTC [msp] GetLocalMSP -> DEBU 006 Returning existing local MSP
2017-08-14 16:41:43.622 UTC [msp] GetDefaultSigningIdentity -> DEBU 007 Obtaining default signing identity
2017-08-14 16:41:43.622 UTC [msp/identity] Sign -> DEBU 008 Sign: plaintext: 0A8C060A074F7267314D53501280062D...53616D706C65436F6E736F727469756D 
2017-08-14 16:41:43.622 UTC [msp/identity] Sign -> DEBU 009 Sign: digest: 19B305348F751FF3B0C1B71929C28A1C70F05748093E5A68E7DED43F7C3619ED 
2017-08-14 16:41:43.622 UTC [msp] GetLocalMSP -> DEBU 00a Returning existing local MSP
2017-08-14 16:41:43.622 UTC [msp] GetDefaultSigningIdentity -> DEBU 00b Obtaining default signing identity
2017-08-14 16:41:43.622 UTC [msp] GetLocalMSP -> DEBU 00c Returning existing local MSP
2017-08-14 16:41:43.622 UTC [msp] GetDefaultSigningIdentity -> DEBU 00d Obtaining default signing identity
2017-08-14 16:41:43.622 UTC [msp/identity] Sign -> DEBU 00e Sign: plaintext: 0AC3060A1508021A0608C7A5C7CC0522...E601917DB4E717688C2A98F6A85BB2C8 
2017-08-14 16:41:43.622 UTC [msp/identity] Sign -> DEBU 00f Sign: digest: 6C4EDDCB459279CFBB9D696D2179A95D00FE85F80E01375E94D4A66A50A9ABF5 
Error: Got unexpected status: BAD_REQUEST
为了解决这个问题,我回到开头,删除了所有docker容器和图像,并在下载特定于平台的图像二进制文件步骤中重新启动了该过程:

curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.1.sh | bash

===> Please note, google shortened URL (goo.gl/eYdRbX) ran afoul of the stackoverflow editor, so has been replaced with the URL to which it points
无论如何,在第一次网络设置过程中的同一点上,我仍然会得到相同的坏_请求响应。在我能够解决这个问题之前,我完全陷入了停滞

我注意到,在这个脚本的顶部,在创建不同的docker映像的地方,create cli出现了两次,后面的“Recreating cli”也出现了两次。不知道这是否与此问题有关

Creating network "net_byfn" with the default driver
Creating peer1.org2.example.com ... 
Creating peer1.org1.example.com ... 
Creating peer0.org2.example.com ... 
Creating peer0.org1.example.com ... 
Creating orderer.example.com ... 
Creating peer1.org2.example.com
Creating peer0.org2.example.com
Creating peer1.org1.example.com
Creating orderer.example.com
Creating peer1.org1.example.com ... done
Creating cli ... 
Creating cli ... done
WARNING: The DELAY variable is not set. Defaulting to a blank string.
peer1.org1.example.com is up-to-date
peer0.org2.example.com is up-to-date
orderer.example.com is up-to-date
peer1.org2.example.com is up-to-date
peer0.org1.example.com is up-to-date
Recreating cli ... 
Recreating cli ... done
docker ps-从(goo.gl/eYdRbX)执行加载后的结果 ):

docker ps结果:

c6025a23ab46        hyperledger/fabric-tools     "/bin/bash -c './s..."   13 seconds ago      Up 11 seconds                                                          cli
a132bd2f4fed        hyperledger/fabric-peer      "peer node start"        27 seconds ago      Up 25 seconds       0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
a9e9078c381c        hyperledger/fabric-orderer   "orderer"                27 seconds ago      Up 26 seconds       0.0.0.0:7050->7050/tcp                             orderer.example.com
48768f75bcb0        hyperledger/fabric-peer      "peer node start"        27 seconds ago      Up 26 seconds       0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com
bb14fd33c8a2        hyperledger/fabric-peer      "peer node start"        27 seconds ago      Up 26 seconds       0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
f20582c065a0        hyperledger/fabric-peer      "peer node start"        27 seconds ago      Up 25 seconds       0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
运行
configtxgen--version
,输出是1.0.0还是1.0.1

版本1.0.0不包括使1.0.1映像正常工作所需的mod_策略,您需要重新下载工具

如果输出为1.0.1,您是否可以手动重新运行所有内容,但打开容器时除外:

CHANNEL\u NAME=$CHANNEL\u NAME TIMEOUT=docker compose-f docker-compose-cli.yaml up-d

确保在运行该命令时,末尾不带
-d
参数,因此该命令现在为:

CHANNEL\u NAME=$CHANNEL\u NAME TIMEOUT=docker compose-f docker-compose-cli.yaml up

这将显示终端中的日志。现在打开一个新的终端选项卡,再次设置环境变量(即通道名称和结构路径),然后继续手动设置。运行通道创建命令时:

peer channel create-o order.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/orderorganizations/example.com/orders/order.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

查看另一个选项卡上日志的最后几行,并将它们发布到此处。

运行
configtxgen--version
,输出是1.0.0还是1.0.1

版本1.0.0不包括使1.0.1映像正常工作所需的mod_策略,您需要重新下载工具

如果输出为1.0.1,您是否可以手动重新运行所有内容,但打开容器时除外:

CHANNEL\u NAME=$CHANNEL\u NAME TIMEOUT=docker compose-f docker-compose-cli.yaml up-d

确保在运行该命令时,末尾不带
-d
参数,因此该命令现在为:

CHANNEL\u NAME=$CHANNEL\u NAME TIMEOUT=docker compose-f docker-compose-cli.yaml up

这将显示终端中的日志。现在打开一个新的终端选项卡,再次设置环境变量(即通道名称和结构路径),然后继续手动设置。运行通道创建命令时:

peer channel create-o order.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/orderorganizations/example.com/orders/order.example.com/msp/tlscacerts/tlsca.example.com-cert.pem


查看另一个选项卡上日志的最后几行,并将它们发布到此处。

当前版本的byfn.sh文件中有一行额外的代码用于第一个网络。networkUp函数当前看起来如下所示:

# Generate the needed certificates, the genesis block and start the network.

function networkUp () {
  # generate artifacts if they don't exist
  if [ ! -d "crypto-config" ]; then
    generateCerts
    replacePrivateKey
    generateChannelArtifacts
  fi
  CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
  else
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
  fi
  if [ $? -ne 0 ]; then
    echo "ERROR !!!! Unable to start network"
    docker logs -f cli
    exit 1
  fi
  docker logs -f cli
}
此exec中有两个错误。第一行是当前文件中的第113行,它在测试
IF_COUCHDB
之前发出docker compose请求。该行应删除/注释掉。此exec中的第二个错误是没有为if语句中的任何docker compose请求设置延迟参数。 此exec的代码应更新为以下内容:

# Generate the needed certificates, the genesis block and start the network.
function networkUp () {
  # generate artifacts if they don't exist
  if [ ! -d "crypto-config" ]; then
    generateCerts
    replacePrivateKey
    generateChannelArtifacts
  fi
#  CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
  else
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  fi
  if [ $? -ne 0 ]; then
    echo "ERROR !!!! Unable to start network"
    docker logs -f cli
    exit 1
  fi
  docker logs -f cli
} 

在这里,您可以看到额外的docker compose语句(第113行)已被注释掉,并且延迟参数现在正正确地传递给docker compose请求

当前版本的byfn.sh文件中有一行额外的代码用于第一个网络。networkUp函数当前看起来如下所示:

# Generate the needed certificates, the genesis block and start the network.

function networkUp () {
  # generate artifacts if they don't exist
  if [ ! -d "crypto-config" ]; then
    generateCerts
    replacePrivateKey
    generateChannelArtifacts
  fi
  CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
  else
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
  fi
  if [ $? -ne 0 ]; then
    echo "ERROR !!!! Unable to start network"
    docker logs -f cli
    exit 1
  fi
  docker logs -f cli
}
此exec中有两个错误。第一行是当前文件中的第113行,它在测试
IF_COUCHDB
之前发出docker compose请求。该行应删除/注释掉。此exec中的第二个错误是没有为if语句中的任何docker compose请求设置延迟参数。 此exec的代码应更新为以下内容:

# Generate the needed certificates, the genesis block and start the network.
function networkUp () {
  # generate artifacts if they don't exist
  if [ ! -d "crypto-config" ]; then
    generateCerts
    replacePrivateKey
    generateChannelArtifacts
  fi
#  CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
  else
      CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT DELAY=$CLI_DELAY docker-compose -f $COMPOSE_FILE up -d 2>&1
  fi
  if [ $? -ne 0 ]; then
    echo "ERROR !!!! Unable to start network"
    docker logs -f cli
    exit 1
  fi
  docker logs -f cli
} 

在这里,您可以看到额外的docker compose语句(第113行)已被注释掉,并且延迟参数现在正正确地传递给docker compose请求

你能分享“docker ps”的输出吗?你能分享“docker ps”的输出吗?没有cryptotxgen,我的OSX系统上有cryptogen。cryptogen版本的结果是:
cryptogen版本cryptogen:版本:1.0.0 Go版本:go1.7 OS/Arch:darwin/amd64
已重新运行结构更新以获取最新版本的cryptogen。重新测试的结果是相同的错误。将启动手动路由。很抱歉,二进制文件是
configtxgen
,而不是
cryptotxgen
,我已经更新了我的帖子以反映这一点。无论如何,如果
cryptogen
在v1.0.0中,那么
configtxgen
肯定也在。这是你的问题。您是如何下载这些二进制文件的?按照此处的pre-req说明下载的二进制文件:。上周下载,本周开始进入教程。我想我的更新周期重叠了。删除-d后,网络现在可以成功加载。谢谢你的指导。这真的很有趣。将“-d”从