认可政策不起作用

时间:2018-03-15 05:29:02

标签: hyperledger-fabric hyperledger-composer

当我使用admin部署时,一个组织的网络包括三个对等体。 我的认可 - policy.json如下,它不起作用。

{
    "identities": [
        {
            "role": {
                "name": "member",
                "mspId": "Org1MSP"
            }
        }
    ],
    "policy": {
        "1-of": [
            {
                "signed-by": 0
            }      
       ]
    }
}

1.我如何制定认可政策? 2.我认为赞同同行是唯一的同伴,“会员”或“管理员”的含义是什么?

所以,我想让所有三个同行都支持同行,如何配置它?

3 个答案:

答案 0 :(得分:3)

让我们从解决你的评论开始:

  

no.it应该是一个使用问题。我只有一个组织中有三个同伴。我需要赞同同行的所有三个签名。当我使用docker logs dev-peer * ...命令查看来自每个对等容器的日志.lt通过随机函数得到不同的值。因此,事务执行三次。现在,我只想将交易无法提交。什么是认可政策

您定义的政策是:

"policy": {
    "1-of": [
        {
            "signed-by": 0
        }      
   ]
}

其中"signed-by": 0是必须满足此规则的MSP id的索引。即一个对等方的单一认可基本上将满足认可政策,而您需要确保所有执行都是一致的,因此在您的情况下,您希望有多个同行支持您的交易,因此您需要:

{
    "identities": [
        {
            "role": {
                "name": "member",
                "mspId": "Org1MSP"
            }
        }
    ],
    "policy": {
        "3-of": [
            {
                "signed-by": 0
            },
            {
                "signed-by": 0
            },
            {
                "signed-by": 0
            },
        ]
    }
} 

这意味着来自Org1MSP的所有3个同行必须签署批准该交易的认可,而由于您使用随机功能,它将失败。

  

1.我如何制定认可政策?

您可以在实例化链码时提供认可政策,语法非常简单:

AND("Org1MSP.member")

基本上说你需要至少有一位来自Org1MSP的有效成员的认可。

  
      
  1. 我认为赞同同行是唯一的同伴,“会员”或“管理员”是什么意思?
  2.   

memberadmin是实际为您提供控制的原则,无论何时需要由特权实体(admin)认可或签名,或者简单的实体可能是足够(member)。

  

所以,我想让所有三个同行都支持同行,如何配置它?

支持peer是在其上安装了链代码的对等体,因此能够调用它并与之交互,没有明确的配置需要使对等体成为支持对等体,您只需要在其上安装链代码。

答案 1 :(得分:0)

在使JSON策略文件有效方面,应该这样做:

{
"identities": [
    {
        "role": {
            "name": "member",
            "mspId": "Org1MSP"
        }
    }
],
"policy": {
            "signed-by": 0
        }      
}

策略的JSON定义为here

签名签名是针对每个组织的,因此您只需要添加额外的"身份"如果您有多个组织,则在认可政策中。

答案 2 :(得分:0)

Composer会将事务发送到connection.json文档中的所有Peer。看起来所有人都在根据你在日志中看到的内容进行评估,但因为认可只需要1,我想只有第一个做出回应才会真正写入Ledger。 (设置3个业务网卡,每个connection.json中定义一个对等体 - 然后从每个对等体检索数据应该确认这一点。)

我认为要求来自同一组织的3个同行支持(签署)交易是不寻常的,更典型的情况是您之前与2个组织中的2个同行一起尝试过的。

目前,此处显示的策略包含一个包含1个元素的身份数组,该元素是一个角色。按照下面的2个链接到Fabric Node SDK文档,我认为您可以指定特定标识而不是角色。因此,如果您真的想要拥有来自同一组织的3个对等体,那么您将拥有“身份数组”中对等体的3个特定身份(来自CA),并且您将拥有以下政策部分:

    "policy": {
    "3-of": [
        {
            "signed-by": 0
        },
        {
            "signed-by": 1
        },
        {
            "signed-by": 2
        }
    ]
}

https://fabric-sdk-node.github.io/global.html#Policy https://fabric-sdk-node.github.io/global.html#Identity

(我没有添加特定身份而非角色的语法。)