fabric 网络操作中遇到的问题

 Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied:

错误原因:由于启动过网络并且更新了证书,在没有删除干净的环境中启动复用的之前的volume,所以导致证书认证失败。

解决方案:执行如下命令删除卷

docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans
docker rm -f $(docker ps -a | grep "hyperledger/*" | awk "{print \$1}")
docker volume prune

 

 

Error: could not send: EOF

解决方法:参数上添加 --tls

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

 

 

stateBasedValidator.Validate failed, err validation of endorsement policy for chaincode mycc in tx 205:0 failed: signature set did not satisfy policy

validation of endorsement policy for chaincode mycc in tx 205:0 failed: signature set did not satisfy policy(背书策略验证失败)

解决方法:修改背书策略

参考:https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/endorsement-policies.html

背书策略的语法如下:
EXPR(E[, E...])

EXPR可以是AND、OR、OutOf,E可以是一个上面示例的主体或者是另一个嵌套的EXPR策略。示例如下:

AND('Org1.member', 'Org2.member', 'Org3.member') :要求三个主体中每一个主体都要签名。
OR('Org1.member', 'Org2.member') :要求三个主体中至少有一个主体签名。
OR('Org1.member', AND('Org2.member', 'Org3.member')):要求同时有主体Org1.member的签名,以及主体Org2.member与Org3.member中至少一个主体的签名。
OutOf(2, 'Org1.member', 'Org2.member', 'Org3.member') :要求三个主体中,至少有两个主体签名。

 

marked as invalid by state validator. Reason code [MVCC_READ_CONFLICT]

错误产生:但统一账户在短时间内发生多笔交易时,大部分交易失败。例如在for循环中连续交易20次,仅有不到5次的交易成功。

原因:该网络在每秒处理多笔交易时保证交易的正常运行,这些交易都更新同一账户中的相同资产,链码会在每次涉及它的交易进入时尝试更新这个键。然而,当许多交易同时进入时,在两者之间的时间当在对等方上模拟交易(即创建读取集)并且准备好提交到分类帐时,另一个交易可能已经更新了相同的值,所以会导致大量并行事务失败。

参考:

https://stackoverflow.com/questions/45347439/mvcc-read-conflict-when-submitting-multiple-transactions-concurrently

https://github.com/hyperledger/fabric-samples/tree/release/high-throughput

 

 

Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp: lookup peer0.org1.example.com: no such host"

peer0.org1 failed to join the channel, Retry after 3 seconds

解决如下:

vim /usr/local/go/src/github.com/hyperledger/fabric-samples/first-network/base/docker-compose-base.yaml

在每个environment下面都追加下面的参数,然后重新up就搞定。

- GODEBUG=netdns=go
参考:https://blog.csdn.net/Doudou_Mylove/article/details/103903800

 

posted @ 2021-07-06 13:48  路易蓝  阅读(1133)  评论(0编辑  收藏  举报