当我使用admin部署时,一个组织的网络包括三个对等体。 我的认可 - policy.json如下,它不起作用。
{
"identities": [
{
"role": {
"name": "member",
"mspId": "Org1MSP"
}
}
],
"policy": {
"1-of": [
{
"signed-by": 0
}
]
}
}
1.我如何制定认可政策? 2.我认为赞同同行是唯一的同伴,“会员”或“管理员”的含义是什么?
所以,我想让所有三个同行都支持同行,如何配置它?
答案 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
的有效成员的认可。
- 我认为赞同同行是唯一的同伴,“会员”或“管理员”是什么意思?
醇>
member
和admin
是实际为您提供控制的原则,无论何时需要由特权实体(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
(我没有添加特定身份而非角色的语法。)