安装部署
fabric测试项目安装问题
1 | npm install probuf的时候报的错 |
fabric-ca-server 存储私钥么
1 | 从mysql中不存储私钥 |
启动order遇到问题
1 | Failed to initialize local MSP: the supplied identity is not valid: x509: certificate signed by unknown authority |
docker-compose创建报错
1 | [blocksProvider] DeliverBlocks -> ERRO 039 [vaccinechannel] Got error &{FORBIDDEN} |
应用过程中问题
Peer或者Orderer不通
当不通的时候,先确认域名对应的IP是否正确,然后用telnet检查服务端口:
1 | ping peer0.org1.example.com |
如果不通,检查一下/etc/hosts中是否设置了域名和IP的对应关系是否正确。
如果还是不通,看一下系统有没有防火墙,7051端口有没有被防火墙禁止。
目标Peer上的Docker没有启动,导致合约实例化失败
实例化合约时出错:
1 | ./peer.sh chaincode instantiate -o orderer.example.com:7050 --tls true --cafile ./tlsca.example.com-cert.pem -C mychannel -n demo -v 0.0.1 -c '{"Args":["init"]}' -P "OR('Org1MSP.member','Org2MSP.member')" |
错误如下:
1 | Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: Post http://unix.sock/containers/create?name=dev-peer1.org1.example.com-demo-0.0.1: dial unix /var/run/docker.sock: connect: no such file or directory |
这是目标peer上的docker没有启动造成的。
genesisblock中admin证书错误导致orderer panic: x509: ECDSA verification failure
orderer在启动的时候报错,直接panic:
1 | -----END CERTIFICATE----- |
怀疑是创世块的原因,用下面的命令将创始块解开:
1 | ./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./genesisblock |
发现比较奇怪的地方,Org1的Admin证书有两个:
1 | "groups": { |
将上面的两大行字符串分别用base64解码得到证书,然后用openssl命令查看:
1 | echo "LS0tLS1CRUdJTiBDRVJUSU....tLS0tCg==" |base64 -D >a.cert |
第一个证书正确:
1 | ... |
查看第二行:
1 | echo "LS0tLS1CRUdJTi....tLS0tLQo=" |base64 -D >b.cert |
发现第二个证书是CA证书,不是用户证书!
1 | Subject: C=US, ST=California, L=San Francisco, CN=ca.org1.example.com |
检查生成genesisblock时使用的configtx.yaml文件,发现configtx.yaml中配置的msp目录:
1 | MSPDir: ./certs/peerOrganizations/org1.example.com/msp |
msp的admincerts子目录中,多出了一个ca证书:
1 | $ ls ./certs/peerOrganizations/org1.example.com/msp/admincerts/ |
把多出的ca证书删除。
残留数据导致orderer启动失败
启动orderer的时候报错,orderer直接panic:
1 | 2018-06-21 11:01:47.892 CST [orderer/commmon/multichannel] newLedgerResources -> CRIT 052 Error creating channelconfig bundle: initializing channelconfig failed: could not create channel Orderer sub-group config: setting up the MSP manager failed: the supplied identity is not valid: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "ca.example.com") |
排查发现,部署orderer的机器上以前部署过orderer,并且orderer.yaml中配置的数据路径/opt/app/fabric/orderer/data
中残留了以前的数据。
将/opt/app/fabric/orderer/data中的文件都删除后,问题解决。