Fabric区块链节点在多个机器上 提交合约报错 Error: transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)
peer lifecycle chaincode commit -o ${orderIp}:${orderPort} --ordererTLSHostnameOverride ${orderDomain} --channelID ${channelId} --name privcalcu --version 1.0 --sequence 1 --init-required --tls --cafile $ORDERER_CA --peerAddresses ${peerDomain}:${peerPort} --tlsRootCertFiles $PEER_CA
2021-10-12 14:30:42.441 CST [chaincodeCmd] ClientWait -> INFO 001 txid [42f495526234d7e3dc371b2bc4ee57ca147599e3442938f32bc6a86f3064b289] committed with status (ENDORSEMENT_POLICY_FAILURE) at priv01.*****01.com:39001Error: transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)
解决:
查看到channel中各个组织是否已同意该合约定义,如果已同意会显示true,否则为false
peer lifecycle chaincode checkcommitreadiness --channelID ${channelId} --name ${chaincodeName} --version 1.0 --sequence 1 --output json --init-required
{
"approvals": {
"PrivPEER01MSP": true,
"PrivPEER02MSP": true
}
}
没问题呀,百思不得其解;
检查提交命令:
忘了加另外一个组织的成员,因为另外一个组织的peer节点部署在另外一个虚拟机,copy证书到当前虚拟机下;
重新来
peer lifecycle chaincode commit -o ${orderIp}:${orderPort} --ordererTLSHostnameOverride ${orderDomain} --channelID ${channelId} --name privcalcu --version 1.0 --sequence 1 --init-required --tls --cafile $ORDERER_CA --peerAddresses ${peerDomain}:${peerPort} --tlsRootCertFiles $PEER_CA --peerAddresses ${peerDomain1}:${peerPort1} --tlsRootCertFiles $PEER_CA1
2021-10-12 15:32:24.715 CST [chaincodeCmd] ClientWait -> INFO 001 txid [7a96466898f6ea18d59aa055c8baaaa3996f519561635bc5bdfa0d86314ac43f] committed with status (VALID) at priv01.*****01.com:39001
2021-10-12 15:32:25.136 CST [chaincodeCmd] ClientWait -> INFO 002 txid [7a96466898f6ea18d59aa055c8baaaa3996f519561635bc5bdfa0d86314ac43f] committed with status (VALID) at priv02.*****02.com:39001
ok了