当前位置: 首页 > >

恒星共识协议白皮书概论

发布时间:

当前的金融基础设施是一堆杂乱封闭的系统,这些封闭系统之间存在着的鸿沟,意味着交易需要花费很高的成本,资本突破政治和地理界限进行转移是非常缓慢的。这些*纪下私鹑诜竦某沙ぃ谌宋薹ǖ玫浇鹑诜瘛


?


解决此类问题,我们能否建立一个这样金融基础系统,以支持在互联网所见到的一些有机的成长与创新,还能确保金融交易被正确地记录?一个非中心化的全球金融网络可清除金融接入的藩篱,允许拥有适度金融和计算资源的新入者、创新参与者成为基础设施的一部分,将金融入口延伸至尚未接受服务的社区。


?


这种低门槛的网络将会刺激有机的增长,但这也意味着不再仅仅依靠现有的金融机构准确记录交易。相反地,所有的参与者都会协定一笔交易的有效性来确保精确记录。这一协定取决于一种达成全球共识的机制。


?


我们引入了恒星共识协议(Stellar Consensus Protocol-abbr:SCP),这是一个适用于全球共识的模型。SCP是第一个可证的安全共识机制,同时拥有四大关键属性:分散控制、灵活信任、低延迟、渐进安全。


上图中一些主流的共识方法最多仅拥有FBA四大关键属性中的三个属性。( FBA:federated Byzantine agreement.联邦拜占庭协议)


?


模型:联邦拜占庭协议(Federated Byzantine Agreement)


?


SCP是建立在联邦拜占庭协议(Federated Byzantine Agreement)之上的成果,是一种新的共识方法。


?


什么是分布式共识?


?


在分布式系统里面,所有的节点必须定期地更新他们之间不断复制的情况??如一笔交易分类账。我们通过独特的槽位来识别每一个更新;共识协议将确保所有节点达成槽位上内容一致。


?


当所有节点更新了它们的分类帐并呈现相同的值时,共识即达成。


?


当节点们决定某个更新可以被安全地使用时,它们会将协商一致的声明具体化并发布至它们的分类账副本去。


?


拜占庭容错


?


即使个别节点任意妄为时我们也要确保达成共识,该行为即拜占庭错误。为了容忍拜占庭错误,SCP被设计成不需要完整节点集合的全体一致同意,整个系统便可达成一致协定,并且能够允许一些节点的欺诈或向系统发送错误的信息。


?


法定体丛群:引入联邦


?


在一个分布式系统里面,法定体是指能满足达成一致协议的节点集合。联邦拜占庭协议引入了一个法定体丛的概念,一个法定体子集能够说服特定节点达成一致。







在传统的非联邦拜占庭协议和联邦拜占庭协议之间存在几个重要的区别。尽管有导致拜占庭错误的搅局者,拜占庭协议仍然能保证达成分布式共识。然而它需要系统成员中所有的参与者全体达成一致。所有网络中的节点必须是已知的并且是提前认证的节点。


?


FBA带来了开放的成员和拜占庭协议的非中心化控制。拜占庭协议系统和联邦拜占庭协议系统关键的区别在于FBA中每个节点选择各自的法定体丛群,整个系统的法定体结果由单个节点做出的决定所致。


?


FBA里,没有守门员,没有集权者,单个节点自己决定它们该信任哪些参与者的信息。节点们能选择多个群,并且这些单个的节点做出的选择可能依赖系统外部的标准。例如,某一特定的银行被视为信誉良好的,造成其它节点所有交易需要它的认可;某个公司与一家信用社已经保持有一种金融关系,要确保这种关系,双方同时签署所有的交易。


?


好的法定体共享着它们的节点,致使不同法定体之间有了节点重叠。我们把这种重叠称之为法定体交集。当法定体间没有交集时,我们得到的是不相交法定体。假如法定体不相交,例如,法定体A,可能认可了一披萨订单的声明,同时法定体B认可的是一汉堡订单的声明。因它们能够独立地认可相矛盾的声明,所以不相交的法定体会破坏共识。







?


做出较好的选择


?


每个节点都有责任确保所选择的法定体丛不违背法定体交集。做出负责任的选择,通常归结于确认法定体丛群足够大,且丛群所含节点足够重要而不会欺骗或为不同的人产生不一样的信息而危害自身的信誉。


?


协定方式存在的问题


?


在丛的选择上,节点需要在安全性和活跃度上保持一个*衡。我们希望系统能反应灵敏而不失正确性。


?


当节点协定方式上被阻断节点缺少活跃度而拖慢系统反应。


?


当节点具体化声明产生的值不同于其它节点,破坏了整个系统的协议,节点因而缺少安全性。这种节点是 有分歧的。


?


一个 分歧情况产生于不同节点保持的分类账存储着矛盾不可调和的因素。一个封闭的系统也没有分叉的系统那么危险。


?


联邦投票表决:接受,确认。


?


联邦拜占庭协议系统(FBAS)中的节点使用一种联邦投票表决技术来实现本协议。







联邦投票表决技术引导FBAS,或一群共同协作的人们,达成一致。


?


午餐共识


?


为更为详细地描述一个节点投票和最终接受某一声明同时允许系统达成一致的过程,我们举一个许多人都熟悉的例子。来聊聊一群人为午餐吃什么进行的投票。在本例中,人们的名字就是节点,所有食物选项就是节点需参考的声明。


?


瓦内萨(Vanessa)在某公用办公场所工作,在那里一大群人预订午餐是很随意的。那有大量选项,而且不是每个人都会作出选择;当确定好足够的人数后,他们就下个订单。


?


瓦内萨(Vanessa)和工作同伴决定使用SCP(恒星共识协议)处理这个问题。


?


初始投票


?


我们假设,瓦内萨想要披萨,但仍需保持开放的思想准备,以免本组很大一部分的人选择了披萨外的其它选项。


?


投票是准备工作并且仅发生在节点阶段。在联邦选举过程的第一步中,瓦内萨声明披萨是有效的,且允诺没有也不会分别为任何与披萨相左的选项投票。除非足够多工作同伴为披萨投了票,否则她或许得到结果是接受非披萨选项。(同伴的压力山大!)


?


接纳


?


幸亏有法定体交集,体群能影响另外的节点。想象一下另一路径(在图中“voted hamburger”的指示),在那瓦内萨投票了汉堡。但请记住,投票仅仅是准备工作。


?


温妮(Winnie)、安德鲁(Andrew)、及伊娃( Eva)都同瓦内萨在法定体群里,他们能够阻止接受汉堡的过程。一个v-blocking(v形限制)的节点集合至少包含有一个来自瓦内萨所有体群的节点,并能阻止所有包含瓦内萨的法定体里的行为,致使瓦内萨接受披萨。


?


下面情况瓦内萨实际上都接受了披萨:


?


她从没接受过与披萨相左的声明。


?


每个v形限制集合中的成员都声明接受披萨,或者每个包含瓦内萨的法定体成员也投票披萨或声明接受披萨。


?


正式认可


?


当每一个法定体成员都投票披萨时,我们说这个法定体认可披萨。一个节点不需要再亲自认可声明。


?


例如,斯科特(Scott)常常信赖安德鲁和爱丽丝(Iris )决定自己吃什么。他们就是斯科特的法定体。假如他们三者都投票披萨,法定体就认可了披萨。


?


一个工作同伴可以投票一份午餐选项,之后接受与其投票相左的午餐。投票披萨不用坚持披萨作午餐??披萨仅当被认可后才被接受为午餐。


?


确认报文


?


确认是选举过程的最后一步,并会实现整个系统的一致协定。


?


为确保协商一致,节点会相互交换确认报文。系统同意某个声明;一旦充足的报文被分发及处理,不管其后发生什么事件,每一可响应的、无误的节点都将接受该声明。


?


例如,伊娃声明她接受披萨并发送确认报文,“accept(pizza).”,这报文是“I have accepted pizza.”的简写。


?


当伊娃发送确认报文后,温妮、安德鲁、格雷顿(Graydon)、及伊娃法定体中的其他人都广播“accept(pizza).”


?


这些报文能说服另外的人接受披萨,在上例的接受中,假如瓦内萨投票与披萨相左,如汉堡,如果v型限制集合接受披萨那么瓦内萨还是接受披萨。这些其他人尽可能多的说服更多人,一直广播 “accept(pizza)” 直到每一个人能够接受披萨。


?


随后确认报文的法定体允许瓦内萨确认披萨,并实现系统达成一致。公司定购披萨,皆大欢喜。


?


协议:SCP


?


SCP分布式共识呈现最主要的挑战是:系统达成一致声明时不能规避被阻断和失去活跃度的风险。


?


在系统达成一致前,一份声明有可能在长期不确定状态中停滞。SCP的目标就是使得这些阻碍和分支的潜因降至最少。该协议因此精心包装了声明,如果这些声明在选举过程中停滞,就会中立化这些被阻断的声明??所有的魔力都被深植于针对该问题的基于选票策略里。


?


一份选票就是代表自身份额的一份公投表决,例如,“我们投票份额是多少?”,基于选票策略意味着,节点须提交选票以表明它的份额,才能使一份选票额度最终能被具体化。


?


提交或者中断


?


每个节点要么提交选票,要么中止选票。回到预订午餐按例,这群工作同伴可能因为不能达成一致协定而停滞下订单。这就需要一种方法去中立化某一选择??如,汉堡(如果该组因汉堡而停滞下订单,),只有中立化汉堡的选择,他们才能前进并最终下订单。


?


为了使汉堡选项中立化,工作同伴都接受“中止汉堡”,汉堡就变成了无关的选项。团队开始转移为其它午餐选项进行投票。


?


另一方面,工作同伴们认可“提交披萨”的声明,该组便将达成一致的披萨选票份额。“提交披萨”的声明是有效的,也只有当所有不相同的选票少于已被中止的披萨选票时,声明因此才有理由出现在投票中。


?


在一个存在法定体交集的SCP系统里,完好的节点不会有被封堵的状态,通过一系列的事件,完好的节点就可以达成一致协定并提交选票份额。


?


如果节点过于倚重恶意节点,这样的节点称为堕坏(befouled)。在FBAS中,堕坏的节点形成一组可忽略的集合,这意味着完好的节点不需要堕坏节点的合作便可以认可声明,而且堕坏的节点不能破坏完好节点间的协定。如没有完好节点投票提交任何选票,他们就可以转向任一高于其已承诺中止的选票。堕坏节点的响应并不会阻止完好节点汇集法定体及其前进的步伐。


?


该协议证明我们能达成一致协定并预订午餐,但是当一群人投票不一样的东西且没有法定体认可任和选择时,此时会发生什么?这个问题??投票分裂??严格地讲便是我们为什么需要将每个午餐投票选项联系起来。投票的过程,包括如何处理好分裂投票类似的情况,其过程错综复杂并且包含这里没有谈到的细节。更完整的版本,还有定理及证明,请参考白皮书。


博主QQ: 122209017



友情链接: