这是我的第一篇文章,所以我会尽量详细并展示重现这些错误的步骤。我想用其他对等点扩展给定的 Fabcar 示例,但我无法查询/调用扩展系统。如果我尝试查询系统,则会收到以下错误:
查询已完成,正在检查结果 来自查询的错误 = 错误:确保链码 fabcar 已成功实例化并重试:getccdata mychannel/fabcar 响应错误:找不到名为“fabcar”的链码 在/home/hyperledger/Dokumente/Hyperledger_test/Fabric-SamplesV4/fabric-samples/fabcar/node_modules/fabric-client/lib/Channel.js:2638:24 在 <匿名>
如果我运行 docker ps -a 命令,它会显示:
容器 ID 图像命令创建状态端口名称 7eabee4c4eb2 hyperledger/fabric-peer "peer node start" 39 分钟前 Up 38 分钟 0.0.0.0:8151->7051/tcp, 0.0.0.0:8153->7053/tcp peer1.org1.example.com 4aaf1b4c063b hyperledger/fabric-couchdb "tini -- /docker-ent..." 39 分钟前 39 分钟前 4369/tcp, 9100/tcp, 0.0.0.0:9984->5984/tcp couchdb1 831facf5abad hyperledger/fabric-peer "peer node start" 39 分钟前 Up 39 分钟 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com 1a9cd9b9f3fb hyperledger/fabric-orderer "orderer" 39 分钟前 39 分钟前 0.0.0.0:7050->7050/tcp orderer.example.com e33bfb4374eb hyperledger/fabric-couchdb "tini -- /docker-ent..." 39 分钟前 39 分钟前 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb 2cfb85e6aa9e hyperledger/fabric-ca "sh -c 'fabric-ca-se..." 39 分钟前 39 分钟前 0.0.0.0:7054->7054/tcp ca.example.com
如您所见,缺少 devpeer,如果您构建原始 Fabcar 示例,则会显示此 peer。
如果我为 peer0 运行 docker logs 命令,它会显示:
2018-08-16 07:21:29.804 UTC [ledgermgmt] CreateLedger -> INFO 023 使用创世块创建分类帐 [mychannel] 2018-08-16 07:21:29.838 UTC [fsblkstorage] newBlockfileMgr -> INFO 024 从块存储中获取块信息 2018-08-16 07:21:30.246 UTC [couchdb] CreateDatabaseIfNotExist -> INFO 025 创建状态数据库 mychannel_ 2018-08-16 07:21:30.421 UTC [kvledger] CommitWithPvtData -> INFO 026 通道 [mychannel]:已提交块 [0] 与 1 个事务 2018-08-16 07:21:30.422 UTC [pvtdatastorage] func1 -> INFO 027 Purger 开始:清除过期的私有数据直到块号 [0] 2018-08-16 07:21:30.422 UTC [pvtdatastorage] func1 -> INFO 028 Purger 完成 2018-08-16 07:21:30.577 UTC [ledgermgmt] CreateLedger -> INFO 029 创建了带有创世块的分类帐 [mychannel] 2018-08-16 07:21:30.726 UTC [cscc] 初始化-> INFO 02a 初始化 CSCC 2018-08-16 07:21:30.726 UTC [sccapi] deploySysCC -> INFO 02b 系统链码 cscc/mychannel(github.com/hyperledger/fabric/core/scc/cscc) 部署 2018-08-16 07:21:30.726 UTC [sccapi] deploySysCC -> INFO 02c 系统链码 lscc/mychannel(github.com/hyperledger/fabric/core/scc/lscc) 部署 2018-08-16 07:21:30.727 UTC [qscc] 初始化-> INFO 02d 初始化 QSCC 2018-08-16 07:21:30.727 UTC [sccapi] deploySysCC -> INFO 02e 系统链码 qscc/mychannel(github.com/hyperledger/fabric/core/scc/qscc) 部署 2018-08-16 07:21:36.730 UTC [八卦/选举] beLeader -> INFO 02f [60 150 184 106 152 137 128 154 149 235 201 184 164 27 185 56 26 64 172 855 9 28 107 209 225 187 117]:成为领导者 2018-08-16 07:22:57.514 UTC [couchdb] CreateDatabaseIfNotExist -> INFO 030 创建状态数据库 mychannel_lscc 2018-08-16 07:22:57.519 UTC [lscc] Invoke -> ERRO 031 在通道 [mychannel] 上获取链码 fabcar 时出错:找不到名为“fabcar”的链码
我重现此结果的步骤:
在基本网络文件夹中进行了更改:
Crypto-config.yaml - 将模板计数值更改为 2
Docker-compose.yml - 复制 peer0 和 couchdb 并更改端口/名称
peer1.org1.example.com: 容器名称:peer1.org1.example.com 图片:超级账本/fabric-peer 环境: - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - CORE_PEER_ID=peer1.org1.example.com - CORE_LOGGING_PEER=信息 - CORE_CHAINCODE_LOGGING_LEVEL=信息 - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/ - CORE_PEER_ADDRESS=peer1.org1.example.com:7051 # # 以下设置在相同的地方启动链码容器 # # 桥接网络作为对等点 ## https://docs.docker.com/compose/networking/ - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_basic # - CORE_PEER_TLS_ENABLED=true - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - CORE_PEER_PROFILE_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_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051 - CORE_LEDGER_STATE_STATEDATABASE=CouchDB - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984 # CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME 和 CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD # 提供账本连接到 CouchDB 的凭据。用户名和密码必须 # 匹配为关联的 CouchDB 设置的用户名和密码。 - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME= - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD= 工作目录:/opt/gopath/src/github.com/hyperledger/fabric 命令:对等节点启动 # 命令:对等节点启动 --peer-chaincodedev=true 端口: - 8151:7051 - 8153:7053 卷: - /var/run/:/host/var/run/ - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/msp/peer - ./crypto-config/peerOrganizations/org1.example.com/users:/etc/hyperledger/msp/users - ./config:/etc/hyperledger/configtx 取决于: - orderer.example.com -沙发数据库1 网络: - 基本的 沙发数据库1: 容器名称:couchdb1 图片:超级账本/fabric-couchdb # 填充 COUCHDB_USER 和 COUCHDB_PASSWORD 以设置管理员用户和密码 # 对于 CouchDB。这将阻止 CouchDB 在“管理员方”模式下运行。 环境: - COUCHDB_USER= - COUCHDB_PASSWORD= 端口: - 9984:5984 网络: - 基本的
运行 generate.sh 文件以创建所需的加密材料
扩展 start.sh 文件以在整个系统中创建新的对等体
# 不要为 Windows Git Bash 用户重写路径 导出 MSYS_NO_PATHCONV=1 docker-compose -f docker-compose.yml 下来 docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb 睡眠 0.2 docker-compose -f docker-compose.yml up -d peer1.org1.example.com couchdb1 # 等待 Hyperledger Fabric 启动 # 在运行以后的命令时出现错误,发出 export FABRIC_START_TIMEOUT= 导出 FABRIC_START_TIMEOUT=10 #echo ${FABRIC_START_TIMEOUT} 睡眠 ${FABRIC_START_TIMEOUT} # 创建通道 docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com :7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx # 将 peer0.org1.example.com 加入频道。 docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel.block docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer1.org1.example.com peer channel join -b mychannel.block
运行 start.sh 文件以启动系统
运行 docker logs ca.example 以获取新的 ca.example 私钥并在 docker-compose.yml 文件中更改旧的
再次运行 start.sh 文件,现在你应该可以在 docker 环境中看到新的对等体了
peer1 的 docker exec 命令出错:
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer1.org1.example.com peer channel join -b mychannel.block 2018-08-16 08:06:35.608 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser 和 orderer 连接已初始化 错误:找不到创世块文件打开 mychannel.block:没有这样的文件或目录
为什么第二个对等点的创世块丢失了,这个对等点是否可能无法访问该块?
切换到fabcar文件夹并运行startFabric.sh文件
注册管理员并注册用户
尝试查询新系统,您将得到如上所示的查询错误
问题:这些步骤中是否缺少某些内容,或者为什么无法在对等节点上安装链代码并正确运行网络?