我可以举一个检查“认可政策”的例子吗?在node.js应用程序中?

时间:2018-01-22 08:10:02

标签: hyperledger-fabric hyperledger

我从“交易流程”'中读到以下声明。 hyperledger-fabric docs的一章。 (https://hyperledger-fabric.readthedocs.io/en/latest/txflow.html

如果客户端应用程序打算将交易提交给订购服务以更新分类帐,则应用程序会在提交之前确定是否已满足指定的认可政策

'背书政策'是指可以在CLI中指定的链码的认可政策?  (c.f.-P" OR(' Org1MSP.member',' Org2MSP.member')")

如果是这样,我可以举一个例子来检查“认可政策”吗?在node.js应用程序中? 谢谢。

1 个答案:

答案 0 :(得分:0)

检查认可的一致性已经是SDK的一部分,因此对于客户端代码应该是透明的,请查看Channel.js

        var endorsements = [];
        let proposalResponse = proposalResponses;
        if(Array.isArray(proposalResponses)) {
            for(let i=0; i<proposalResponses.length; i++) {
                // make sure only take the valid responses to set on the consolidated response object
                // to use in the transaction object
                if (proposalResponses[i].response && proposalResponses[i].response.status === 200) {
                    proposalResponse = proposalResponses[i];
                    endorsements.push(proposalResponse.endorsement);
                }
            }
        } else {
            if (proposalResponse && proposalResponse.response && proposalResponse.response.status === 200) {
                endorsements.push(proposalResponse.endorsement);
            }
        }

        if(endorsements.length < 1) {
            logger.error('sendTransaction - no valid endorsements found');
            return Promise.reject(new Error('no valid endorsements found'));
}

现在,此代码检查它是否得到了所有签注对等方请求的一致认可响应。

虽然由客户端应用程序逻辑来确保它何时具有可满足的签名签名集。例如。如果认可政策是

AND(OR(Org1.member, Org3.member), OR(Org2.member, Org3.member))

并且您只获得了org1和org2的签名,上述检查将通过,而应用程序必须知道认可规则,并了解org1和org2单独的响应是不够的,需要得到org3的认可。

即将推出的Fabric版本,很可能是v1.2,它将提供服务发现功能,其中应用程序将提供自动检测支持同行的可满足子集的功能,使应用程序开发人员更容易使用此部分。