Fabric SDK 定义endorsement policy
- 语法
"endorsementPolicy":{
"identities": [
{"role":{"name":"member","mspId":"${MSPID}"}},
{"role":{"name":"admin","mspId":"${MSPID}"}}
],
"policy": {"1-of":[{"signed-by":0}]}
}
有两个类别:
- identity标识所有的实体,目前是以role来区分的。
- policy定义具体的policy,policy里面目前支持两个关键词
- signed-by:对应的是某一个identity
- N-of:标识满足多少个;后面的值是一个数组,需要包含只是N的元素,否则永远不会满足了。
- 举个例子
假设instance包含三个peer: peer0,peer1,和peer2
其中: peer0和peer1是member role,peer2是adminrole,那么下面的policy:
- {"1-of":[{"signed-by":0}]} : 一个任意member签名
对应的签名组合与结果:
<peer0>:success // peer0签名
<peer1>:success // peer1签名
<peer2>:success // peer2签名,peer2是admin当然也是member
另外policy {"1-of":[{"signed-by":0}, {"signed-by":1}]}
,其含义是任意member或者admin签名
,达到的是一样的效果。
- {"1-of":[{"signed-by":1}]} :一个任意admin签名
对应的签名组合与结果:
<0>:failure // peer0签名,但peer0是member
<1>:failure // peer1签名,但peer1是member
<2>:success // peer2签名
- {"2-of":[{"signed-by":0}]} :希望是任意两个member签名
但是前面我们提到过,这个写法是不对的,永远不会满足,因为2-of
对应的数组值必须包含至少两个元素;看下面:
- {"2-of":[{"signed-by":0},{"signed-by":0}]} :两个任意member签名
对应的签名组合与结果:
<0, 1>:success // peer0和peer1签名
<0, 2>:success // peer0和peer2签名
<1, 2>:success // peer1和peer2签名
- {"2-of":[{"signed-by":0},{"signed-by":1}]} :任意一个member和任意一个admin
对应的签名组合与结果:
<0, 1>:failure // peer0和peer1签名,但peer0和peer1都是member
<0, 2>:success // peer0和peer2签名
<1, 2>:success // peer1和peer2签名
- {"1-of": [{"2-of":[{"signed-by":0},{"signed-by":0}]}, {"signed-by":1}]} // 任意一个admin, 或者任意两个member
对应的签名组合与结果:
<0>:failure // peer0签名,但peer0是member
<1>:failure // peer1签名,但peer1是member
<2>:success // peer2签名,但peer2是admin
<0, 1>:success //两个member签名
<0, 2>:success //一个member和一个admin签名
<1, 2>:success //一个member和一个admin签名