Hyperledger fabric 对等链代码实例化超时
Hyperledger fabric peer chaincode instantiate timeout
所以我在 "try to instantiate chain code across my consortium stage"。
我在我所有的同行上都安装了它 - 全线 200s。
当我读到这篇文章时,它做了一点然后挂起并超时
=====================================================================================================
peer chaincode instantiate -o orderer:7050 --tls true --cafile /crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/msp/tlscacerts/tlsca.orderer.com-cert.pem -C aac -n mycc -v 1.0
-c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')"
=====================================================================================================
2017-10-28 02:02:56.853 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-10-28 02:02:56.853 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-10-28 02:02:56.867 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-10-28 02:02:56.868 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-10-28 02:02:56.869 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A9D070A7508031A0C08D0CACFCF0510...30300A000A04657363630A0476736363
2017-10-28 02:02:56.869 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: EDDBC0833DC1815A04B56C17D7D7DC6CAE967A8BA1C5082668234325F325F1C1
Error: Error endorsing chaincode: rpc error: code = Unknown desc = Timeout expired while starting chaincode mycc:1.0(networkid:dev,peerid:peer0.org1.com,tx:dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3)
对端日志是这样结束的:
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] sendChannel -> DEBU 540 [dcd9c8c3]after send
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] afterResponse -> DEBU 541 [dcd9c8c3]Received RESPONSE, communicated (state:ready)
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] handlePutState -> DEBU 542 [dcd9c8c3]Received RESPONSE. Successfully updated state
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] func1 -> DEBU 543 [dcd9c8c3]Transaction completed. Sending COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] func1 -> DEBU 544 [dcd9c8c3]Move state message COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] handleMessage -> DEBU 545 [dcd9c8c3]Handling ChaincodeMessage of type: COMPLETED(state:ready)
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] func1 -> DEBU 546 [dcd9c8c3]send state message COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [chaincode] processStream -> DEBU 547 [dcd9c8c3]Received message COMPLETED from shim
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] HandleMessage -> DEBU 548 [dcd9c8c3]Fabric side Handling ChaincodeMessage of type: COMPLETED in state ready
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] HandleMessage -> DEBU 549 [dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3]HandleMessage- COMPLETED. Notify
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] notify -> DEBU 54a notifying Txid:dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] Execute -> DEBU 54b Exit
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [ccprovider] NewCCContext -> DEBU 54c NewCCCC (chain=advertiseragencychannel,chaincode=mycc,version=1.0,txid=dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3,syscc=false,proposal=0xc421a6b310,canname=mycc:1.0
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] Launch -> DEBU 54d launchAndWaitForRegister fetched 1183 bytes from file system
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] launchAndWaitForRegister -> DEBU 54e chaincode mycc:1.0 is being launched
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] getArgsAndEnv -> DEBU 54f Executable is chaincode
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] getArgsAndEnv -> DEBU 550 Args [chaincode -peer.address=peer0.org1:7051]
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 551 start container: mycc:1.0(networkid:dev,peerid:peer0.org1.com)
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 552 start container with args: chaincode -peer.address=peer0.org1:7051
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 553 start container with env:
peer0.org1.com | CORE_CHAINCODE_ID_NAME=mycc:1.0
peer0.org1.com | CORE_PEER_TLS_ENABLED=true
peer0.org1.com | CORE_CHAINCODE_LOGGING_LEVEL=info
peer0.org1.com | CORE_CHAINCODE_LOGGING_SHIM=warning
peer0.org1.com | CORE_CHAINCODE_LOGGING_FORMAT=%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}
peer0.org1.com | 2017-10-28 02:02:56.901 UTC [container] lockContainer -> DEBU 554 waiting for container(dev-peer0.org1.com-mycc-1.0) lock
peer0.org1.com | 2017-10-28 02:02:56.901 UTC [container] lockContainer -> DEBU 555 got container (dev-peer0.org1.com-mycc-1.0) lock
peer0.org1.com | 2017-10-28 02:02:56.903 UTC [dockercontroller] Start -> DEBU 556 Cleanup container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:56.904 UTC [dockercontroller] stopInternal -> DEBU 557 Stop container dev-peer0.org1.com-mycc-1.0(No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.910 UTC [dockercontroller] stopInternal -> DEBU 558 Kill container dev-peer0.org1.com-mycc-1.0 (No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] stopInternal -> DEBU 559 Remove container dev-peer0.org1.com-mycc-1.0 (No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] Start -> DEBU 55a Start container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] createContainer -> DEBU 55b Create container: dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:57.043 UTC [dockercontroller] createContainer -> DEBU 55c Created container: dev-peer0.org1.com-mycc-1.0-fb6be780039642ab28b06bc02e8e4cad69b480256333e2b3fc8a7877a9ffdf1d
peer0.org1.com | 2017-10-28 02:02:57.528 UTC [dockercontroller] Start -> DEBU 55d Started container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:57.528 UTC [container] unlockContainer -> DEBU 55e container lock deleted(dev-peer0.org1.com-mycc-1.0)
我唯一能想到的是我在 composer 中的网络被称为 "consortium_poc" 并且它使用了一个看起来不同的网络 id - 它似乎是 "dev" 但我不是甚至确定它们是否相同。我的同事正在使用 CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=consortium_poc
环境变量。
我在实例化调用中尝试了任意数量的参数组合。
我几乎已经完成了。最后一步让我抓狂。
有任何提示或指点吗?
编辑:多一点 google 让我将此参数添加到同行
CORE_PEER_NETWORKID=consortium_poc
现在看起来 networkid 值是正确的,但它仍然像以前一样全部停在 "unlock container" 消息处。
编辑2:
所以再多尝试一下,看看它能做什么,它现在在调用中使用 IP 地址,如下所述有问题:
2017-10-30 15:52:33.553 UTC [chaincode] launchAndWaitForRegister -> DEBU 8cc start container with args: chaincode -peer.address=172.24.0.6:7051
它试图创建的容器如下所示:
Error starting SimpleAsset chaincode: Error trying to connect to local peer: x509: cannot validate certificate for 172.24.0.6 because it doesn't contain any IP SANs
我只改变了两件事:
- 已将
CORE_PEER_ADDRESSAUTODETECT=true
添加到同行
- 添加回
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
给订购者
2.
关键似乎是在同行中设置了另一个参数 - CORE_PEER_CHAINCODELISTENADDRESS
。
为了让其他为此苦苦挣扎的人将来参考,我将提供一组适用于我的用例的配置。请记住,这是针对 4 个组织的 - 此处我编辑为 Org1.com - Org4.com,每个组织有两个同行,一个订购者位于 Orderer.com。
如果任何对此更熟悉的人可以对任何重复或多余的属性发表评论,那么我会洗耳恭听。这比我希望开始工作花费的时间要长得多——我显然不是面料专家……
同龄人
services:
peer-base:
image: hyperledger/fabric-peer
environment:
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_PEER_GOSSIP_ORGLEADER=true
- CORE_PEER_EXTERNALENDPOINT=true
- CORE_PEER_ENDORSER_ENABLED=true
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
working_dir: /opt/gopath/src/chaincode
command: peer node start --peer-defaultchain=false
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/chaincode/
- ./crypto-config:/opt/gopath/src/mofabric/peer/crypto
- ./channel-artifacts:/opt/gopath/src/mofabric/peer/channel-artifacts
订购者
orderer:
container_name: orderer
image: hyperledger/fabric-orderer
networks:
poc:
aliases:
- ${COMPOSE_PROJECT_NAME}
environment:
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- GRPC_TRACE=all=true,
- GRPC_VERBOSITY=debug
- ORDERER_GENERAL_LOGLEVEL=debug
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=7050
- ORDERER_GENERAL_GENESISPROFILE=Genesis
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/orderer/genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/orderer/tls/ca.crt ]
working_dir: /opt/gopath/src/
command: orderer
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/
- ./channel-artifacts/genesis.block:/etc/hyperledger/orderer/genesis.block
- ./crypto-config/peerOrganizations/:/etc/hyperledger/peers/
- ./crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/msp:/etc/hyperledger/orderer/msp
- ./crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/tls:/etc/hyperledger/orderer/tls
ports:
- 7050:7050
cli
cli:
container_name: cli
image: hyperledger/fabric-tools
tty: true
stdin_open: true
environment:
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.com:7052
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- GRPC_TRACE=all=true,
- GRPC_VERBOSITY=debug
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.com:7051
- CORE_PEER_SERVERHOSTOVERRIDE=peer0.org1.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/mofabric/peer/crypto/peerOrganizations/org1.com/users/Admin@mediaocean.com/msp
working_dir: /opt/gopath/src/chaincode
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/chaincode
- ./crypto-config:/opt/gopath/src/mofabric/peer/crypto
- ./channel-artifacts:/opt/gopath/src/mofabric/peer/channel-artifacts
- ./crypto-config/peerOrganizations/org1.com/users:/etc/hyperledger/fabric/users
- ./crypto-config/peerOrganizations/org1.com/peers/peer0.org1.com/msp:/etc/hyperledger/fabric/msp
- ./crypto-config/peerOrganizations/org1.com/peers/peer0.org1.com/tls:/etc/hyperledger/fabric/tls
- ./crypto-config:/crypto-config
- ./channel-artifacts:/channel-artifacts
- ./scripts:/scripts/
depends_on:
- orderer
- peer0.org1.com
- peer1.org1.com
- peer0.org2.com
- peer1.org2.com
- peer0.org3.com
- peer1.org3.com
- peer0.org4.com
- peer1.org4.com
networks:
poc:
aliases:
- ${COMPOSE_PROJECT_NAME}
所以就像我所做的事情的最终清单 - 再次作为完整性检查:
generate genesis block
generate channel
generate anchor peers
start fabric
in cli:
create channel
have all peers join channel (the byfn script shows how).
update anchor peers (byfn again).
have org1 in channel package, then orgs 2-4 serially sign chaincode (the chaincode for operators document describes this).
install chaincode on all peers.
instantiate it on peer0.org1.com
这可能并不完美(甚至接近正确),但它终于奏效了。
所以我在 "try to instantiate chain code across my consortium stage"。 我在我所有的同行上都安装了它 - 全线 200s。
当我读到这篇文章时,它做了一点然后挂起并超时
=====================================================================================================
peer chaincode instantiate -o orderer:7050 --tls true --cafile /crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/msp/tlscacerts/tlsca.orderer.com-cert.pem -C aac -n mycc -v 1.0
-c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')"
=====================================================================================================
2017-10-28 02:02:56.853 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-10-28 02:02:56.853 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-10-28 02:02:56.867 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-10-28 02:02:56.868 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-10-28 02:02:56.869 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A9D070A7508031A0C08D0CACFCF0510...30300A000A04657363630A0476736363
2017-10-28 02:02:56.869 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: EDDBC0833DC1815A04B56C17D7D7DC6CAE967A8BA1C5082668234325F325F1C1
Error: Error endorsing chaincode: rpc error: code = Unknown desc = Timeout expired while starting chaincode mycc:1.0(networkid:dev,peerid:peer0.org1.com,tx:dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3)
对端日志是这样结束的:
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] sendChannel -> DEBU 540 [dcd9c8c3]after send
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] afterResponse -> DEBU 541 [dcd9c8c3]Received RESPONSE, communicated (state:ready)
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] handlePutState -> DEBU 542 [dcd9c8c3]Received RESPONSE. Successfully updated state
peer0.org1.com | 2017-10-28 02:02:56.896 UTC [shim] func1 -> DEBU 543 [dcd9c8c3]Transaction completed. Sending COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] func1 -> DEBU 544 [dcd9c8c3]Move state message COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] handleMessage -> DEBU 545 [dcd9c8c3]Handling ChaincodeMessage of type: COMPLETED(state:ready)
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [shim] func1 -> DEBU 546 [dcd9c8c3]send state message COMPLETED
peer0.org1.com | 2017-10-28 02:02:56.897 UTC [chaincode] processStream -> DEBU 547 [dcd9c8c3]Received message COMPLETED from shim
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] HandleMessage -> DEBU 548 [dcd9c8c3]Fabric side Handling ChaincodeMessage of type: COMPLETED in state ready
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] HandleMessage -> DEBU 549 [dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3]HandleMessage- COMPLETED. Notify
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] notify -> DEBU 54a notifying Txid:dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [chaincode] Execute -> DEBU 54b Exit
peer0.org1.com | 2017-10-28 02:02:56.898 UTC [ccprovider] NewCCContext -> DEBU 54c NewCCCC (chain=advertiseragencychannel,chaincode=mycc,version=1.0,txid=dcd9c8c334467ee867fdd82fdbbec483532281364b20fda1fcd1298a66a836b3,syscc=false,proposal=0xc421a6b310,canname=mycc:1.0
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] Launch -> DEBU 54d launchAndWaitForRegister fetched 1183 bytes from file system
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] launchAndWaitForRegister -> DEBU 54e chaincode mycc:1.0 is being launched
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] getArgsAndEnv -> DEBU 54f Executable is chaincode
peer0.org1.com | 2017-10-28 02:02:56.899 UTC [chaincode] getArgsAndEnv -> DEBU 550 Args [chaincode -peer.address=peer0.org1:7051]
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 551 start container: mycc:1.0(networkid:dev,peerid:peer0.org1.com)
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 552 start container with args: chaincode -peer.address=peer0.org1:7051
peer0.org1.com | 2017-10-28 02:02:56.900 UTC [chaincode] launchAndWaitForRegister -> DEBU 553 start container with env:
peer0.org1.com | CORE_CHAINCODE_ID_NAME=mycc:1.0
peer0.org1.com | CORE_PEER_TLS_ENABLED=true
peer0.org1.com | CORE_CHAINCODE_LOGGING_LEVEL=info
peer0.org1.com | CORE_CHAINCODE_LOGGING_SHIM=warning
peer0.org1.com | CORE_CHAINCODE_LOGGING_FORMAT=%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}
peer0.org1.com | 2017-10-28 02:02:56.901 UTC [container] lockContainer -> DEBU 554 waiting for container(dev-peer0.org1.com-mycc-1.0) lock
peer0.org1.com | 2017-10-28 02:02:56.901 UTC [container] lockContainer -> DEBU 555 got container (dev-peer0.org1.com-mycc-1.0) lock
peer0.org1.com | 2017-10-28 02:02:56.903 UTC [dockercontroller] Start -> DEBU 556 Cleanup container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:56.904 UTC [dockercontroller] stopInternal -> DEBU 557 Stop container dev-peer0.org1.com-mycc-1.0(No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.910 UTC [dockercontroller] stopInternal -> DEBU 558 Kill container dev-peer0.org1.com-mycc-1.0 (No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] stopInternal -> DEBU 559 Remove container dev-peer0.org1.com-mycc-1.0 (No such container: dev-peer0.org1.com-mycc-1.0)
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] Start -> DEBU 55a Start container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:56.912 UTC [dockercontroller] createContainer -> DEBU 55b Create container: dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:57.043 UTC [dockercontroller] createContainer -> DEBU 55c Created container: dev-peer0.org1.com-mycc-1.0-fb6be780039642ab28b06bc02e8e4cad69b480256333e2b3fc8a7877a9ffdf1d
peer0.org1.com | 2017-10-28 02:02:57.528 UTC [dockercontroller] Start -> DEBU 55d Started container dev-peer0.org1.com-mycc-1.0
peer0.org1.com | 2017-10-28 02:02:57.528 UTC [container] unlockContainer -> DEBU 55e container lock deleted(dev-peer0.org1.com-mycc-1.0)
我唯一能想到的是我在 composer 中的网络被称为 "consortium_poc" 并且它使用了一个看起来不同的网络 id - 它似乎是 "dev" 但我不是甚至确定它们是否相同。我的同事正在使用 CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=consortium_poc
环境变量。
我在实例化调用中尝试了任意数量的参数组合。
我几乎已经完成了。最后一步让我抓狂。 有任何提示或指点吗?
编辑:多一点 google 让我将此参数添加到同行
CORE_PEER_NETWORKID=consortium_poc
现在看起来 networkid 值是正确的,但它仍然像以前一样全部停在 "unlock container" 消息处。
编辑2:
所以再多尝试一下,看看它能做什么,它现在在调用中使用 IP 地址,如下所述有问题:
2017-10-30 15:52:33.553 UTC [chaincode] launchAndWaitForRegister -> DEBU 8cc start container with args: chaincode -peer.address=172.24.0.6:7051
它试图创建的容器如下所示:
Error starting SimpleAsset chaincode: Error trying to connect to local peer: x509: cannot validate certificate for 172.24.0.6 because it doesn't contain any IP SANs
我只改变了两件事:
- 已将
CORE_PEER_ADDRESSAUTODETECT=true
添加到同行 - 添加回
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
给订购者
2.
关键似乎是在同行中设置了另一个参数 - CORE_PEER_CHAINCODELISTENADDRESS
。
为了让其他为此苦苦挣扎的人将来参考,我将提供一组适用于我的用例的配置。请记住,这是针对 4 个组织的 - 此处我编辑为 Org1.com - Org4.com,每个组织有两个同行,一个订购者位于 Orderer.com。
如果任何对此更熟悉的人可以对任何重复或多余的属性发表评论,那么我会洗耳恭听。这比我希望开始工作花费的时间要长得多——我显然不是面料专家……
同龄人
services:
peer-base:
image: hyperledger/fabric-peer
environment:
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_PEER_GOSSIP_ORGLEADER=true
- CORE_PEER_EXTERNALENDPOINT=true
- CORE_PEER_ENDORSER_ENABLED=true
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
working_dir: /opt/gopath/src/chaincode
command: peer node start --peer-defaultchain=false
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/chaincode/
- ./crypto-config:/opt/gopath/src/mofabric/peer/crypto
- ./channel-artifacts:/opt/gopath/src/mofabric/peer/channel-artifacts
订购者
orderer:
container_name: orderer
image: hyperledger/fabric-orderer
networks:
poc:
aliases:
- ${COMPOSE_PROJECT_NAME}
environment:
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- GRPC_TRACE=all=true,
- GRPC_VERBOSITY=debug
- ORDERER_GENERAL_LOGLEVEL=debug
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_LISTENPORT=7050
- ORDERER_GENERAL_GENESISPROFILE=Genesis
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/orderer/genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/orderer/tls/ca.crt ]
working_dir: /opt/gopath/src/
command: orderer
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/
- ./channel-artifacts/genesis.block:/etc/hyperledger/orderer/genesis.block
- ./crypto-config/peerOrganizations/:/etc/hyperledger/peers/
- ./crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/msp:/etc/hyperledger/orderer/msp
- ./crypto-config/ordererOrganizations/orderer.com/orderers/orderer.orderer.com/tls:/etc/hyperledger/orderer/tls
ports:
- 7050:7050
cli
cli:
container_name: cli
image: hyperledger/fabric-tools
tty: true
stdin_open: true
environment:
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.com:7052
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_poc
- CORE_PEER_NETWORKID=${COMPOSE_PROJECT_NAME}_poc
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- GRPC_TRACE=all=true,
- GRPC_VERBOSITY=debug
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.com:7051
- CORE_PEER_SERVERHOSTOVERRIDE=peer0.org1.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/mofabric/peer/crypto/peerOrganizations/org1.com/users/Admin@mediaocean.com/msp
working_dir: /opt/gopath/src/chaincode
volumes:
- /var/run/:/host/var/run/
- ./chaincode/:/opt/gopath/src/chaincode
- ./crypto-config:/opt/gopath/src/mofabric/peer/crypto
- ./channel-artifacts:/opt/gopath/src/mofabric/peer/channel-artifacts
- ./crypto-config/peerOrganizations/org1.com/users:/etc/hyperledger/fabric/users
- ./crypto-config/peerOrganizations/org1.com/peers/peer0.org1.com/msp:/etc/hyperledger/fabric/msp
- ./crypto-config/peerOrganizations/org1.com/peers/peer0.org1.com/tls:/etc/hyperledger/fabric/tls
- ./crypto-config:/crypto-config
- ./channel-artifacts:/channel-artifacts
- ./scripts:/scripts/
depends_on:
- orderer
- peer0.org1.com
- peer1.org1.com
- peer0.org2.com
- peer1.org2.com
- peer0.org3.com
- peer1.org3.com
- peer0.org4.com
- peer1.org4.com
networks:
poc:
aliases:
- ${COMPOSE_PROJECT_NAME}
所以就像我所做的事情的最终清单 - 再次作为完整性检查:
generate genesis block
generate channel
generate anchor peers
start fabric
in cli:
create channel
have all peers join channel (the byfn script shows how).
update anchor peers (byfn again).
have org1 in channel package, then orgs 2-4 serially sign chaincode (the chaincode for operators document describes this).
install chaincode on all peers.
instantiate it on peer0.org1.com
这可能并不完美(甚至接近正确),但它终于奏效了。