我正在AWS ECS上设置Hyperledger Fabric网络 . 这是我的网络网络和引导场景 .
网络
-
ca-org0,ca-org1,ca-org2
-
orderer-org0
-
peer1-org1,peer1-org2
Bootstrap sceanrios
-
所有节点都已成功启动,创建加密材料,同行和订购者已注册并注册到CA ...
-
创建'mychannel' Channels
-
将peer1-org1,peer1-org2加入'mychannel'
-
将两个对等体更新为锚点对等体
-
两个同行安装'abac'样本链码
-
peer1-org1将'abac' chaincode实例化为'mychannel'
-
测试调用和查询
ECS
每个节点都是ECS服务,其中1个任务是networkMode awsvpc
. 并且每个服务都是使用AWS Service Discovery创建的,因此可以使用DNS查找每个服务 . 在我的例子中,peer1-org1可以在vpc中使用peer1-org1.ns-t2c,orderer1-org0作为orderer1-org0.ns-t2c查找...
问题
我已成功完成安装链码('Bootstrap sceanrios'中的第5步),并在EC2中创建了链码容器
peer1-org1:$ peer chaincode instantiate -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR('org1MSP.member','org2MSP.member')" -o orderer1-org0.ns-test
And this instantiate command successfully done w/o error 和chaincode容器在peer1-org1的EC2上创建
peer1-org1's EC2:$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f7a488475cb dev-peer1-org1.ns-t2c-mycc-1.0 "chaincode -peer.add…" 17 seconds ago Up 16 seconds dev-peer1-org1.ns-t2c-mycc-1.0
<below is peer1-org1 container info>
但是当我执行 peer chaincode list --instantiated -C mychannel
时, No chaincode listed
peer1-org1:$ peer chaincode list --instantiated -C mychannel
Get instantiated chaincodes on channel mychannel:
peer1-org1:$
查询'abac'链码时
peer1-org1$: peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: getccdata mychannel/mycc responded with error: could not find chaincode with name 'mycc'"
这是对等任务定义
{
"family": "peer1-org1",
"networkMode": "awsvpc",
"containerDefinitions" : [
{
"name": "peer1-org1",
"image": "hyperledger/fabric-ca-peer:1.2.0",
"essential": true,
"memory": 128,
"command": ["/bin/bash", "-c", "'/scripts/ecs_start-peer.sh'"],
"environment": [
{"name": "FABRIC_CA_CLIENT_HOME", "value": "/data/peers/peer1-org1.ns-t2c"},
{"name": "FABRIC_CA_CLIENT_TLS_CERTFILES", "value": "/data/org1-ca-chain.pem"},
{"name": "ENROLLMENT_URL", "value": "http://peer1-org1.ns-t2c:peer1-org1.ns-t2cpw@ica-org1.ns-t2c:7054"},
{"name": "PEER_NAME", "value": "peer1-org1.ns-t2c"},
{"name": "PEER_HOME", "value": "/data/peers/peer1-org1.ns-t2c"},
{"name": "PEER_HOST", "value": "peer1-org1.ns-t2c"},
{"name": "PEER_NAME_PASS", "value": "peer1-org1.ns-t2c:peer1-org1.ns-t2cpw"},
{"name": "CORE_PEER_ID", "value": "peer1-org1.ns-t2c"},
{"name": "CORE_PEER_ADDRESS", "value": "peer1-org1.ns-t2c:7051"},
{"name": "CORE_PEER_LOCALMSPID", "value": "org1MSP"},
{"name": "CORE_PEER_MSPCONFIGPATH", "value": "/data/peers/peer1-org1.ns-t2c/msp"},
{"name": "CORE_VM_ENDPOINT", "value": "unix:///host/var/run/docker.sock"},
{"name": "CORE_LOGGING_LEVEL", "value": "DEBUG"},
{"name": "CORE_PEER_TLS_ENABLED", "value": "true"},
{"name": "CORE_PEER_TLS_CERT_FILE", "value": "/data/peers/peer1-org1.ns-t2c/tls/server.crt"},
{"name": "CORE_PEER_TLS_KEY_FILE", "value": "/data/peers/peer1-org1.ns-t2c/tls/server.key"},
{"name": "CORE_PEER_TLS_ROOTCERT_FILE", "value": "/data/org1-ca-chain.pem"},
{"name": "CORE_PEER_TLS_CLIENTAUTHREQUIRED", "value": "true"},
{"name": "CORE_PEER_TLS_CLIENTROOTCAS_FILES", "value": "/data/org1-ca-chain.pem"},
{"name": "CORE_PEER_TLS_CLIENTCERT_FILE", "value": "/data/tls/peer1-org1.ns-t2c-client.crt"},
{"name": "CORE_PEER_TLS_CLIENTKEY_FILE", "value": "/data/tls/peer1-org1.ns-t2c-client.key"},
{"name": "CORE_PEER_GOSSIP_USELEADERELECTION", "value": "true"},
{"name": "CORE_PEER_GOSSIP_ORGLEADER", "value": "false"},
{"name": "CORE_PEER_GOSSIP_EXTERNALENDPOINT", "value": "peer1-org1.ns-t2c:7051"},
{"name": "CORE_PEER_GOSSIP_SKIPHANDSHAKE", "value": "true"},
{"name": "ORG", "value": "org1"},
{"name": "ORG_ADMIN_CERT", "value": "/data/orgs/org1/msp/admincerts/cert.pem"},
{"name": "CORE_PEER_ADDRESSAUTODETECT", "value": "true"},
{"name": "CORE_PEER_CHAINCODELISTENADDRESS", "value": "0.0.0.0:7052"},
{"name": "CORE_VM_DOCKER_ATTACHSTDOUT", "value": "true"}
],
"mountPoints": [
{
"containerPath": "/scripts",
"sourceVolume": "scripts"
},
{
"containerPath": "/data",
"sourceVolume" : "data"
},
{
"containerPath": "/host/var/run",
"sourceVolume": "run"
}
],
"portMappings": [
{
"containerPort": 7051
},
{
"containerPort": 7053
}
]
}
],
"volumes": [
{
"name": "scripts",
"host": {
"sourcePath":"/efs/scripts"
}
},
{
"name": "data",
"host": {
"sourcePath": "/efs/data"
}
},
{
"name": "run",
"host": {
"sourcePath": "/var/run"
}
}
]
}
1 回答
我遇到了同样的问题:我的链码已成功安装并实例化,但我也收到错误:“找不到名为'mycc'的链码”
我的情况中的原因是:锚点对等体在configtx.yaml中配置了错误的主机名(例如:组织>&Org> AnchorPeers>主机)
我的解决方案是将主机名设置为正确的值 .
希望这有助于任何人 .