Цепной код fabcar.go hyperledger не принимает изменения и модификации и всегда запускает предыдущий цепной код - PullRequest
7 голосов
/ 25 марта 2019

Я новичок в Hyperledger Fabric и устанавливаю все необходимые требования, и код цепочки fabcar фабрики Hyperledger работает правильно, но когда я изменил fabcar.go в коде цепочки Fabic Hyperledger и когда я запустил его, старые машины будут показаны, и никаких изменений Принимается.

Я прочитал аналогичный вопрос, но ответ не ясен, пожалуйста, расскажите подробно, как удалить предыдущий код цепочки и установить новый код цепочки, который я пишу в sample-fabric / chaincode / fabcar / go / fabric.go

Пожалуйста, помогите мне, я буду очень благодарен, я застрял в этой проблеме с 3 дней.

следующий код в файле startFabric.sh

#!/bin/bash
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
# Exit on first error
set -e

# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1
starttime=$(date +%s)
LANGUAGE=${1:-"golang"}
CC_SRC_PATH=github.com/mychain/go
if [ "$LANGUAGE" = "node" -o "$LANGUAGE" = "NODE" ]; then
    CC_SRC_PATH=/opt/gopath/src/github.com/fabcar/node
fi

# clean the keystore
rm -rf ./hfc-key-store

# launch network; create channel and join peer to channel
cd ../basic-network
./start.sh

# Now launch the CLI container in order to install, instantiate chaincode
# and prime the ledger with our 10 cars
docker-compose -f ./docker-compose.yml up -d cli

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v 1.0 -p "$CC_SRC_PATH" -l "$LANGUAGE"
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n fabcar -l "$LANGUAGE" -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
sleep 10
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n fabcar -c '{"function":"initLedger","Args":[""]}'

printf "\nTotal setup execution time : $(($(date +%s) - starttime)) secs ...\n\n\n"
printf "Start by installing required packages run 'npm install'\n"
printf "Then run 'node enrollAdmin.js', then 'node registerUser'\n\n"
printf "The 'node invoke.js' will fail until it has been updated with valid arguments\n"
printf "The 'node query.js' may be run at anytime once the user has been registered\n\n"

Ответы [ 3 ]

3 голосов
/ 24 июня 2019

Если вы хотите взаимодействовать с цепным кодом "fabcar", изменив параметры в цепочечном коде fabcar.go, сначала вам нужно остановить сеть, затем удалить все предыдущие сетевые модули, затем ввести файл fabcar.go, изменитьсписок автомобилей, затем снова включите сеть, она должна изменить список старых автомобилей на новый.Для этого у вас есть 2 варианта:

1) создать файл сценария teardown.sh:

$teardown.sh (script file source code)
set -e
#Shut down the Docker containers for the system tests.
docker-compose -f docker-compose.yml kill && docker-compose -f docker-compose.yml 
down
# remove chaincode docker images
docker rmi $(docker images dev-* -q)

2) удалить узлы-модули и обрезать том докера:

$cd...fabric-samples/fabcar/javascript
$rmdir node_modules
$docker stop $(docker ps -a -q)
$docker rm $(docker ps -a -q)
$ docker volume prune
$cd...fabric-samples/fabcar
$startFabric.sh
$cd...fabric-samples/fabcar/javascript
$npm install -g
$node query.js
2 голосов
/ 28 июня 2019

Перед использованием сценария teardown.sh вам необходимо демонтировать среду.

Попробуйте проверить, есть ли у вас старые изображения с цепочками кодов, и удалите это

 docker images | grep fabcar docker
 rmi $(docker images fabcar* -q)

иногда Fabric не перестраивает цепной код, если изображения сохраняются

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

1 голос
/ 24 июня 2019

Каждый раз, когда вы что-то меняете в коде цепочки, вы должны повторно развертывать код цепочки и создавать его экземпляр.

Сценарий startfabric.sh делает то же самое для вас, но здесь есть одна вещь, которая была упущена, когда вы устанавливаете код цепи с помощью скрипта, вам необходимо изменить версию кода цепи в файле startfabric.sh.

Поскольку изображение с цепочкой кодов уже будет в версии 1.0, оно не будет перезаписано.

Есть два способа достичь желаемого

1) Измените версию или имя цепного кода в файле startfabric.sh, например

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v 1.1 -p "$CC_SRC_PATH" -l "$LANGUAGE"

2) другой способ - удалить старый образ цепного кода, выполнив команду

     docker images | grep fabcar docker
     rmi $(docker images fabcar* -q)

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...