Node.js 结构节点DK中的Hyperledger结构背书策略

Node.js 结构节点DK中的Hyperledger结构背书策略,node.js,hyperledger-fabric,blockchain,hyperledger-chaincode,hyperledger-fabric-sdk-js,Node.js,Hyperledger Fabric,Blockchain,Hyperledger Chaincode,Hyperledger Fabric Sdk Js,我已经实现了fabric sdk来安装和实例化链代码。一切正常,但无法找出在fabric nodesdk中实现认可的正确方法 以下是我在使用命令时使用的背书策略: peer chaincode ${CHAINCODE_ACTION} -o orderer.google.com:7050 \ --tls --cafile ${ORDERER_CA} -C $CHANNEL_NAME \ -n ${CHAINCODE_NAME} -l ${LANG} -v "$CHAINC

我已经实现了fabric sdk来安装和实例化链代码。一切正常,但无法找出在fabric nodesdk中实现认可的正确方法

以下是我在使用命令时使用的背书策略:

peer chaincode ${CHAINCODE_ACTION} -o orderer.google.com:7050 \
    --tls --cafile ${ORDERER_CA} -C $CHANNEL_NAME \
    -n ${CHAINCODE_NAME} -l ${LANG} -v "$CHAINCODE_VERSION" \
    -c '{"Args":[]}' \
    -P "AND (OR('Org1MSP.peer', 'Org1MSP.client','Org1MSP.member','Org1MSP.admin'),
    OR ('Org2MSP.peer', 'Org2MSP.client', 'Org2MSP.member', 'Org2MSP.admin'))"
如果我想在nodesdk中实现同样的功能,下面是我从余额转移示例中获得的参考:

const request = {
      targets: [peer],
      chaincodeId: 'cc1',
      chaincodeType: 'java',
      chaincodeVersion: '7.0',
      txId: tx_id,

      // Use this to demonstrate the following policy:
      // The policy can be fulfilled when members from both orgs signed.
      'endorsement-policy': {
        identities: [
          {role: {name: 'member', mspId: 'Org1MSP'}},
          {role: {name: 'member', mspId: 'Org2MSP'}}
        ],
        policy: {'2-of': [{'signed-by': 0}, {'signed-by': 1}]}
      }
    };
我知道2-of只不过是两次高潮之间的状态。由0和1签名的是标识的索引。但是,我们如何添加组织内成员、客户机、管理员、同级成员或条件


我找不到任何文件来深入研究这个问题。非常感谢您的帮助。

您对node sdk中的
认可政策的理解是绝对正确的。“signaturePolicy”具有以下对象结构

type -- SIGNATURE
rule
    Type -- n_out_of
    n_out_of
        N -- {int}
        rules -- {array}
            Type -- signed_by
            signed_by -- {int}
    identities -- {array}
        principal_classification -- {int}
        msp_identifier -- {string}
        Role -- MEMBER | ADMIN
你可以阅读更多关于它的内容。您也可以参考本节中的示例

现在,我们来讨论您提出的问题,即我们如何在组织成员、客户、管理员、对等体中添加
条件。检查下面的示例,它最初来自NodeSDK文档

背书政策:“由OrderRog管理员和来自某个对等组织的任何成员签署”

如您所见,您可以在背书政策中指定的唯一身份可以是
管理员
会员
。这里的成员可以是除管理员之外的任何成员。它可以是对等方、客户机、用户。如果希望由管理员签名,则必须在
role
对象中为属性
name
明确指定值
admin

对于你的情况,我认为以下结构将是合适的

{
  identities: [
    { role: { name: "member", mspId: "peerOrg1" }},
    { role: { name: "admin", mspId: "peerOrg1" }},
    { role: { name: "member", mspId: "peerOrg2" }},
    { role: { name: "admin", mspId: "peerOrg2" }}
  ],
  policy: {
    "2-of": [
      { "1-of": [{ "signed-by": 0 }, { "signed-by": 1 }]}
      { "1-of": [{ "signed-by": 2 }, { "signed-by": 3 }]}
    ]
  }
}
遗憾的是,我在NodeSDK中找不到更多的背书策略示例,但我认为上面的示例可以解释其工作原理

此外,我认为这将有助于您更好地了解背书政策中的成员和管理员

{
  identities: [
    { role: { name: "member", mspId: "peerOrg1" }},
    { role: { name: "admin", mspId: "peerOrg1" }},
    { role: { name: "member", mspId: "peerOrg2" }},
    { role: { name: "admin", mspId: "peerOrg2" }}
  ],
  policy: {
    "2-of": [
      { "1-of": [{ "signed-by": 0 }, { "signed-by": 1 }]}
      { "1-of": [{ "signed-by": 2 }, { "signed-by": 3 }]}
    ]
  }
}