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://*.com/questions/45347439/mvcc-read-conflict-when-submitting-multiple-transactions-concurrently
https://github.com/hyperledger/fabric-samples/tree/release/high-throughput