Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger composer Hyperledger编写器错误标识在重新启动后发出后尚未注册_Hyperledger Composer - Fatal编程技术网

Hyperledger composer Hyperledger编写器错误标识在重新启动后发出后尚未注册

Hyperledger composer Hyperledger编写器错误标识在重新启动后发出后尚未注册,hyperledger-composer,Hyperledger Composer,我正在使用hyperledger composer 0.16.0,我希望将数据持久化到数据库中,以便即使在重新启动后也可以使用数据。所以我使用的是环回连接器mongodb 上下文 我一直在遵循教程,我能够完成它 我已通过发布以下步骤设置了fabric cd ${HOME}/fabric-tools/ ./stopFabric.sh ./teardownFabric.sh ./downloadFabric.sh ./startFabric.sh cd ${HOME}/tmt/Profil

我正在使用hyperledger composer 0.16.0,我希望将数据持久化到数据库中,以便即使在重新启动后也可以使用数据。所以我使用的是
环回连接器mongodb

上下文 我一直在遵循教程,我能够完成它

我已通过发布以下步骤设置了fabric

cd ${HOME}/fabric-tools/

 ./stopFabric.sh 
 ./teardownFabric.sh
./downloadFabric.sh
./startFabric.sh

cd ${HOME}/tmt/Profile/

composer card create -p connection.json -u PeerAdmin -c Admin@org1.example.com-cert.pem -k 114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457_sk -r PeerAdmin -r ChannelAdmin

composer card import -f PeerAdmin@fabric-network.card

composer runtime install -c PeerAdmin@fabric-network -n dam-network

cd ../dam-network/

# added model.cto file below
composer archive create -t dir -n .

composer network start -c PeerAdmin@fabric-network -a dam-network@0.0.1.bna -A admin -S adminpw

composer card import -f admin@dam-network.card

composer network ping -c admin@dam-network

chmod -R 777 ${HOME}/.composer 

## onetime setup using npm install -g loopback-connector-mongodb
docker run -d --name mongo --network composer_default -p 27017:27017 mongo

cd ${HOME}/tmt/docker

docker build -t myorg/my-composer-rest-server .

#Which is attached below

source envvars.txt

docker run \
    -d \
    -e COMPOSER_CARD=${COMPOSER_CARD} \
    -e COMPOSER_NAMESPACES=${COMPOSER_NAMESPACES} \
    -e COMPOSER_AUTHENTICATION=${COMPOSER_AUTHENTICATION} \
    -e COMPOSER_MULTIUSER=${COMPOSER_MULTIUSER} \
    -e COMPOSER_PROVIDERS="${COMPOSER_PROVIDERS}" \
    -e COMPOSER_DATASOURCES="${COMPOSER_DATASOURCES}" \
    -v ~/.composer:/home/composer/.composer \
    --name rest \
    --network composer_default \
    -p 3000:3000 \
    myorg/my-composer-rest-server
我向现有参与者颁发新身份,并使用以下命令为此身份创建名片

composer participant add -c admin@dam-network -d ' {"$class": "com.asset.tmt.User","userId": "tmtadmin","email": "tmtadmin@gmail.com","firstName": "TMT","lastName": "Admin","userGroup": "peerAdmin"} ' 

composer identity issue -u tmtadmin -a com.asset.tmt.User#tmtadmin -c admin@dam-network 

composer card import -f tmtadmin@dam-network.card
然后,我通过POST/wallet/import导入该名片,并能够调用不同的restapi操作。之后,我停止composer rest服务器,几分钟后,我用命令再次启动composer rest服务器

cd ${HOME}/fabric-tools/
./startFabric.sh
docker start mongo rest
发出上面的命令不起作用,所以我正在终止rest,然后通过发出下面的命令再次运行它。如果我错了,请纠正我

 docker stop rest
 docker rm rest 
docker run \
    -d \
    -e COMPOSER_CARD=${COMPOSER_CARD} \
    -e COMPOSER_NAMESPACES=${COMPOSER_NAMESPACES} \
    -e COMPOSER_AUTHENTICATION=${COMPOSER_AUTHENTICATION} \
    -e COMPOSER_MULTIUSER=${COMPOSER_MULTIUSER} \
    -e COMPOSER_PROVIDERS="${COMPOSER_PROVIDERS}" \
    -e COMPOSER_DATASOURCES="${COMPOSER_DATASOURCES}" \
    -v ~/.composer:/home/composer/.composer \
    --name rest \
    --network composer_default \
    -p 3000:3000 \
    myorg/my-composer-rest-server
然后,我使用配置的身份验证机制(在我的案例中是passport github策略)对REST API进行身份验证,如果我尝试调用REST API的一个操作,它会抛出一条“未指定商业网卡”错误消息,然后我通过POST/wallet/import导入上一张名片,得到了一张应该是正确的无内容的卡片

最后,当我尝试调用另一个REST API操作时,出现以下错误:

{
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "Error trying login and get user Context. Error: Error trying to enroll user or load channel configuration. Error: Enrollment failed with errors [[{\"code\":400,\"message\":\"Authorization failure\"}]]",
    "stack": "Error: Error trying login and get user Context. Error: Error trying to enroll user or load channel configuration. Error: Enrollment failed with errors [[{\"code\":400,\"message\":\"Authorization failure\"}]]\n    at client.getUserContext.then.then.catch (/home/composer/.npm-global/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:305:34)\n    at <anonymous>\n    at process._tickDomainCallback (internal/process/next_tick.js:228:7)"
  }
}
实际行为 你的环境 我的envvars.txt model.cto 更新:

按照@R Thatcher所说的,当我发出命令
docker compose start
时,它启动的是fabric network,而不是之前部署的业务网络


tmt@blockchain:~/tmt/dam网络$docker ps-a
容器ID映像命令已创建状态端口名称
8a6833bd7d3a myorg/my composer rest服务器“pm2 docker compos…”17小时前退出(0)10小时前rest
9bffab63a048 mongo“docker入口点…”17小时前退出(0)10小时前mongo
5bafb4dd5662 dev-peer0.org1.example.com-dam-network-0.16.0-4a77c4c8eabde9e40464f91b1655a48c6c5e0dac908e36a7b437034152bf141“chaincode-peer.a…”17小时前退出(0)4分钟前dev-peer0.org1.example.com-dam-network-0.16.0
4bfc67f13811 hyperledger/fabric对等:x86_64-1.0.4“对等节点启动-…”17小时前启动6分钟0.0.0.0:7051->7051/tcp,0.0.0.0:7053->7053/tcp peer0.org1.example.com
762a42bc0eb7 hyperledger/fabric orderer:x86_64-1.0.4“orderer”17小时前上升6分钟0.0.0.0:7050->7050/tcp order.example.com
49c925a8cc43 hyperledger/fabric couchdb:x86_64-1.0.4“tini--/docker-e..”17小时前上升6分钟4369/tcp,9100/tcp,0.0.0.0:5984->5984/tcp couchdb
cee51891308f hyperledger/fabric ca:x86_64-1.0.4“sh-c'fabric ca-…”17小时前上升6分钟0.0.0.0.0:7054->7054/tcp ca.org1.example.com

正确的方法是什么

1) 当我试图通过发出以下命令来启动网络时

tmt@blockchain:~/tmt/dam-network$ composer network start -c PeerAdmin@fabric-network -a dam-network@0.0.1.bna -A admin -S adminpw
Starting business network from archive: dam-network@0.0.1.bna
Business network definition:
        Identifier: dam-network@0.0.1
        Description: Blockchain dam integration

Processing these Network Admins: 
        userName: admin

✖ Starting business network definition. This may take a minute...
Error: Error trying to instantiate composer runtime. Error: No valid responses from any peers.
Response from attempted peer comms was an error: Error: chaincode error (status: 500, message: chaincode exists dam-network)

Command failed

2) 当我试图通过发出docker start container手动启动docker container时,我仍然看到它没有启动。

startFabric.sh不仅仅是启动结构,它实际上会从docker图像中删除容器并重新创建新的容器。这样做的影响是,您将从结构中丢失所有数据和业务网络

如果要在创建结构后停止并启动它,则需要更改到
docker compose.yml
文件所在的目录(在我的情况下是
/home/rob/Fabric tools/Fabric scripts/hlfv1/composer


运行
docker compose stop
停止结构容器,并运行
docker compose start
从停止处重新启动。在使用docker compose命令之前,必须在正确的文件夹中。

startFabric.sh的作用不仅仅是启动结构,它实际上会从docker图像中删除容器并重新创建新容器。这样做的影响是,您将从结构中丢失所有数据和业务网络

如果要在创建结构后停止并启动它,则需要更改到
docker compose.yml
文件所在的目录(在我的情况下是
/home/rob/Fabric tools/Fabric scripts/hlfv1/composer


运行
docker compose stop
停止结构容器,并运行
docker compose start
从停止处重新启动。在使用docker compose命令之前,必须在正确的文件夹中。

@R Thatcher,我可以启动docker fabric network,但不能启动chaincode,我已经用我所做的更新了问题。您可以建议下一步吗?您不需要再次运行
composer network start
命令。(您的错误是“chaincode exists”),如果您ping业务网络,则使用网络名称的容器,例如dev-peer0.org1.example.com-dam-network-0.16.0-
This is the main issue, I don't know why my identity is not being recognized by the REST API if I used it previously to call some operations.
* Version used: 0.16.0
* Environment name and version (e.g. Chrome 39, node.js 5.4):  chrome latest and node.js 8.9.1
* Operating System and version (desktop or mobile): Ubuntu desktop
COMPOSER_CARD=admin@dam-network
 COMPOSER_NAMESPACES=never
 COMPOSER_AUTHENTICATION=true
 COMPOSER_MULTIUSER=true
 COMPOSER_PROVIDERS='{
    "github": {
        "provider": "github",
        "module": "passport-github",
        "clientID": "xxxxxxxxxxxxx",
        "clientSecret": "xxxxxxxxxxxxxxxxxxxxx",
        "authPath": "/auth/github",
        "callbackURL": "/auth/github/callback",
        "successRedirect": "/",
        "failureRedirect": "/"
    }
}'
 COMPOSER_DATASOURCES='{
    "db": {
        "name": "db",
        "connector": "mongodb",
        "host": "10.142.0.10"
    }
}'
/**
 * Model Definitions
 */
namespace com.asset.tmt

participant User identified by userId {
  o String userId
  o String email
  o String firstName
  o String lastName
  o String userGroup
}

asset Asset identified by assetId {
  o String assetId
  o String name
  o String creationDate
  o String expiryDate
}

transaction ChangeAssetValue {
  o String expiryDate
  o String assetId
  o String userId
}
tmt@blockchain:~/tmt/dam-network$ composer network start -c PeerAdmin@fabric-network -a dam-network@0.0.1.bna -A admin -S adminpw
Starting business network from archive: dam-network@0.0.1.bna
Business network definition:
        Identifier: dam-network@0.0.1
        Description: Blockchain dam integration

Processing these Network Admins: 
        userName: admin

✖ Starting business network definition. This may take a minute...
Error: Error trying to instantiate composer runtime. Error: No valid responses from any peers.
Response from attempted peer comms was an error: Error: chaincode error (status: 500, message: chaincode exists dam-network)

Command failed