协议:SCP
SCP分布式共识呈现最主要的挑战是:系统达成一致声明时不能规避被阻断和失去活跃度的风险。
在系统达成一致前,一份声明有可能在长期不确定状态中停滞。SCP的目标就是使得这些阻碍和分支的潜因降至最少。该协议因此精心包装了声明,如果这些声明在选举过程中停滞,就会中立化这些被阻断的声明——所有的魔力都被深植于针对该问题的基于选票策略里。
一份选票就是代表自身份额的一份公投表决,例如,“我们投票份额是多少?”,基于选票策略意味着,节点须提交选票以表明它的份额,才能使一份选票额度最终能被具体化。
提交或者中断
每个节点要么提交选票,要么中止选票。回到预订午餐按例,这群工作同伴可能因为不能达成一致协定而停滞下订单。这就需要一种方法去中立化某一选择——如,汉堡(如果该组因汉堡而停滞下订单,),只有中立化汉堡的选择,他们才能前进并最终下订单。
为了使汉堡选项中立化,工作同伴都接受“中止汉堡”,汉堡就变成了无关的选项。团队开始转移为其它午餐选项进行投票。
另一方面,工作同伴们认可“提交披萨”的声明,该组便将达成一致的披萨选票份额。“提交披萨”的声明是有效的,也只有当所有不相同的选票少于已被中止的披萨选票时,声明因此才有理由出现在投票中。
在一个存在法定体交集的SCP系统里,完好的节点不会有被封堵的状态,通过一系列的事件,完好的节点就可以达成一致协定并提交选票份额。
如果节点过于倚重恶意节点,这样的节点称为堕坏(befouled)。在FBAS中,堕坏的节点形成一组可忽略的集合,这意味着完好的节点不需要堕坏节点的合作便可以认可声明,而且堕坏的节点不能破坏完好节点间的协定。如没有完好节点投票提交任何选票,他们就可以转向任一高于其已承诺中止的选票。堕坏节点的响应并不会阻止完好节点汇集法定体及其前进的步伐。
该协议证明我们能达成一致协定并预订午餐,但是当一群人投票不一样的东西且没有法定体认可任和选择时,此时会发生什么?这个问题——投票分裂——严格地讲便是我们为什么需要将每个午餐投票选项联系起来。投票的过程,包括如何处理好分裂投票类似的情况,其过程错综复杂并且包含这里没有谈到的细节。更完整的版本,还有定理及证明,请参考白皮书。
文章:
http://256kw.com/articles/443