【问题标题】:Can I get an example that check 'Endorsement Policy' in node.js application?我可以获得一个在 node.js 应用程序中检查“背书策略”的示例吗?
【发布时间】:2018-01-22 08:10:01
【问题描述】:

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

如果客户端应用程序打算将交易提交给 Ordering Service 以更新账本,应用程序会在提交之前确定指定的背书政策是否已经满足

“背书政策”是否意味着可以在 CLI 中指定的链代码背书政策? ( c.f. -P "OR ('Org1MSP.member','Org2MSP.member')" )

如果是这样,我能否获得一个在 node.js 应用程序中检查“背书政策”的示例? 谢谢。

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

    检查背书的一致性已经是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 将具有服务发现功能,其中应用程序将提供自动检测可满足的背书节点子集的功能,从而使这部分对应用程序开发人员来说更容易。

    【讨论】:

    • 感谢您的回复。 :) 你知道我在哪里可以找到上面提到的检查背书策略的客户端应用程序逻辑示例。
    • 不,但这现在相当简单,因为背书策略在客户端应用程序中静态配置,例如客户端逻辑知道背书策略,因此已经向相关对等方发送背书请求。
    猜你喜欢
    • 2011-02-27
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多