Composer для взаимодействия с сетью Fabric Default (BYFN) - PullRequest
0 голосов
/ 01 июня 2018

(1) Привет! Я установил сеть Hyperledger Fabric по умолчанию (./byfn.sh up) (2) Затем я установил Composer CLI (3) Создана карта PeerAdmin @ hlfv1 (проверьте код ниже: createPeerAdminCard.sh) (4)Я установил файл .BNA с помощью команды «composer network install» (5). Затем я попытался запустить сеть Business (т.е. запуск сети composer) и получил следующую ошибку:

Определение запуска бизнес-сети.Это может занять минуту ... Ошибка: Ошибка при попытке запуска бизнес-сети.Ошибка: невозможно инициализировать канал.Попытка связаться с 4 Peers.Last: ошибка: ошибка: ошибка команды REQUEST_TIMEOUT

Моя цель - взаимодействовать с сетью Fabric по умолчанию с помощью Composer и загружать BNA.

createPeerAdminCard.sh

#!/bin/bash

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

Usage() {
    echo ""
    echo "Usage: ./createPeerAdminCard.sh [-h host] [-n]"
    echo ""
    echo "Options:"
    echo -e "\t-h or --host:\t\t(Optional) name of the host to specify in the connection profile"
    echo -e "\t-n or --noimport:\t(Optional) don't import into card store"
    echo ""
    echo "Example: ./createPeerAdminCard.sh"
    echo ""
    exit 1
}

Parse_Arguments() {
    while [ $# -gt 0 ]; do
        case $1 in
            --help)
                HELPINFO=true
                ;;
            --host | -h)
                shift
                HOST="$1"
                ;;
            --noimport | -n)
                NOIMPORT=true
                ;;
        esac
        shift
    done
}

HOST=localhost
Parse_Arguments $@

if [ "${HELPINFO}" == "true" ]; then
    Usage
fi

# Grab the current directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

if [ -z "${HL_COMPOSER_CLI}" ]; then
  HL_COMPOSER_CLI=$(which composer)
fi

echo
# check that the composer command exists at a version >v0.16
COMPOSER_VERSION=$("${HL_COMPOSER_CLI}" --version 2>/dev/null)
COMPOSER_RC=$?

if [ $COMPOSER_RC -eq 0 ]; then
    AWKRET=$(echo $COMPOSER_VERSION | awk -F. '{if ($2<19) print "1"; else print "0";}')
    if [ $AWKRET -eq 1 ]; then
        echo Cannot use $COMPOSER_VERSION version of composer with fabric 1.1, v0.19 or higher is required
        exit 1
    else
        echo Using composer-cli at $COMPOSER_VERSION
    fi
else
    echo 'No version of composer-cli has been detected, you need to install composer-cli at v0.19 or higher'
    exit 1
fi

cat << EOF > DevServer_connection.json
{
    "name": "hlfv1",
    "x-type": "hlfv1",
    "x-commitTimeout": 300,
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300",
                    "eventHub": "300",
                    "eventReg": "300"
                },
                "orderer": "300"
            }
        }
    },
    "channels": {
        "mychannel": {
            "orderers": [
                "orderer.example.com"
            ],
            "peers": {
                "peer0.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "ledgerQuery": true,
                    "eventSource": true
                },
                "peer1.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "ledgerQuery": true,
                    "eventSource": true
                },
                "peer0.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "ledgerQuery": true,
                    "eventSource": true
                },
                "peer1.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "ledgerQuery": true,
                    "eventSource": true
                }
            }

        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        },
        "Org2": {
            "mspid": "Org2MSP",
            "peers": [
                "peer0.org2.example.com",
                "peer1.org2.example.com"
            ],
            "certificateAuthorities": [
                "ca.org2.example.com"
            ]
        }
    },
    "orderers": {
        "orderer.example.com": {
            "url": "grpc://orderer.example.com:7050"
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpc://peer0.org1.example.com:7051",
            "eventUrl": "grpc://peer0.org1.example.com:7053"
        },
        "peer1.org1.example.com": {
            "url": "grpc://peer1.org1.example.com:7051",
            "eventUrl": "grpc://peer0.org1.example.com:7053"
        },
        "peer0.org2.example.com": {
            "url": "grpc://peer0.org2.example.com:7051",
            "eventUrl": "grpc://peer0.org2.example.com:7053"
        },
        "peer1.org2.example.com": {
            "url": "grpc://peer1.org2.example.com:7051",
            "eventUrl": "grpc://peer1.org2.example.com:7053"
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "http://ca.org1.example.com:7054",
            "caName": "ca.org1.example.com"
        },
        "ca.org2.example.com": {
            "url": "http://ca.org2.example.com:7054",
            "caName": "ca.org2.example.com"
        }
    }
}
EOF

PRIVATE_KEY="${DIR}"/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/fd5a91d23b5607ee968bac994858850d25b6b2903b2c62a3a5532baad4203c9d_sk
CERT="${DIR}"/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem

if [ "${NOIMPORT}" != "true" ]; then
    CARDOUTPUT=/tmp/PeerAdmin@hlfv1.card
else
    CARDOUTPUT=PeerAdmin@hlfv1.card
fi

"${HL_COMPOSER_CLI}"  card create -p DevServer_connection.json -u PeerAdmin -c "${CERT}" -k "${PRIVATE_KEY}" -r PeerAdmin -r ChannelAdmin --file $CARDOUTPUT

if [ "${NOIMPORT}" != "true" ]; then
    if "${HL_COMPOSER_CLI}"  card list -c PeerAdmin@hlfv1 > /dev/null; then
        "${HL_COMPOSER_CLI}"  card delete -c PeerAdmin@hlfv1
    fi

    "${HL_COMPOSER_CLI}"  card import --file /tmp/PeerAdmin@hlfv1.card 
    "${HL_COMPOSER_CLI}"  card list
    echo "Hyperledger Composer PeerAdmin card has been imported, host of fabric specified as '${HOST}'"
    rm /tmp/PeerAdmin@hlfv1.card
else
    echo "Hyperledger Composer PeerAdmin card has been created, host of fabric specified as '${HOST}'"
fi

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

REQUEST_TIMEOUT может произойти из-за сбоя построения контейнеров Chaincode для всех пиров в течение установленного по умолчанию периода времени в 5 минут из-за нехватки системных ресурсов или плохих сетевых подключений. Это может быть проблемой для учебника Multi-Org и, возможно,для одиночных установок.В рамках запуска Composer Network, Fabric пытается создать новый контейнер с цепочечным кодом, который включает в себя команды npm install.Более фундаментальная ошибка говорит о том, что ваша Fabric не настроена правильно, или даже что одноранговые узлы присоединились к каналу, который вы определили в своем профиле подключения.

См. Ответ на часть 2 здесь Ошибка при запуске сети Fabric с Hyperledger и Hyperledgercomposer , а также предлагает прочитать информацию в Composer Wiki (прокрутите вниз до / найдите 'REQUEST_TIMEOUT') для получения дополнительной информации и советов по устранению неполадок.

0 голосов
/ 01 июня 2018

Убедитесь, что вы правильно установили среду разработки и предварительные условия, а также версия для композитора и версия фабрики должны быть обновлены.Затем следуйте этому учебному пособию шаг за шагом, чтобы развернуть свою бизнес-сеть в многоуровневой многоорганизационной матричной сети, и все будет в порядке.

https://hyperledger.github.io/composer/latest/tutorials/deploy-to-fabric-multi-org

...