我想知道在HLFabric下实现以下方案的可能性。
(A)在Org1下具有peer0和peer1,在Org2下具有peer0,在Org3下具有Peer0。
(B)认可政策为1项(Org1的对等1,Org2的peer0,Org3的peer0)。
当我们尝试上述方案时,它可以在所有认可节点正常运行的情况下正常工作。但是,当我故意关闭Org1的peer1或Org2的peer0或Org3的peer0之一时,只是为了模拟即使即使其中一个认可节点发生故障,区块链网络也能正常工作。但是我观察到的是,如果所有同位体都不处于运行状态,则putState事务将失败。
请注意,我想在来自不同地理区域或由不同网络管理的不同超级账本结构组织中运行单个同级。在这种情况下,我想知道是否有任何认可的同行拒绝了如何使区块链网络无故障运行。
可以实现上述方案吗?
答案 0 :(得分:0)
以这种方式理解它。有些组织互不信任,但想开展业务。
Org1,Org2和Org3。协议是,只有三个组织都同意的情况下,业务交易才能通过。这意味着他们所有人都必须参与背书政策,而他们的做法是通过同行。现在,这意味着每个组织都应该有一个同等身份的UP,才能使每个组织都认可。
在我的理解中,如果每个组织有多个同级,则另一个同级仅用于“备份”(我不确定)。在您的情况下,Org1有两个对等体,其余两个对等体。如果您要取消Org2和Org3中的任何同级,则它们将无法参与认可过程,并且原来的问题陈述“三个组织彼此不信任,但仍想开展业务”会丢失。这就是HLF无法通过“ putState”的原因。
每个组织至少有一个同龄人,事情应该会发生。
如果像其他人指出的那样,您的认可政策具有“ OR('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')”,则这意味着只要任何一个组织拥有一个同行。这意味着最初的问题陈述“三个组织不相互信任,但仍然想做生意”正变为“三个组织相互信任,并且如果任何一个组织认可,就可以做生意”。您需要了解这是否适合您的业务案例。
我自己还没有测试过,但是正在加深我的理解。
希望这会有所帮助。
答案 1 :(得分:0)
根据您的要求,用于将链码实例化为次要更正的请求对象。正确的对象应如下所示:
{
targets:'peer0.example.org',
chaincodeId : 'clog',
chaincodeVersion : 'v1',
chaincodeType.. : 'node',
args: ,
txId:tx_id,
'endorsement-policy':
{
identities:
[{
role:
{
name:'member',
mspId:'Org1MSP'
}
},
{
role:
{
name:'member',
mspId:'Org2MSP'
}
},
{
role:
{
name:'member',
mspId:'Org3MSP'
}
}
],
policy:{
'1-of':[
{
'signed-by':0
},
{
'signed-by':1
},
{
'signed-by':2
}
]
}
}
}
如果您仔细观察,该错误将出现在“策略”部分,这是因为您将'signed-by':2
放置在'signed-by':1
的另一个块中的方式。
此外,请注意,我们不能限制策略指向组织的特定对等方。在这里,如果您想要更严格的策略,也可以将“角色”类型更改为peer
,而不使用member
。
除此之外,如果发现服务未运行,请确保将交易建议发送给网络中的每个对等方,以获取有效的认可数量。