分布式一致性问题本质上可以从两个维度来认识:一是如何就某一个值达成一致的决策;二是如何就一系列连续的值达成一致的顺序决策。很显然,如果我们能够找到问题一的解决方案,那么问题二也就迎刃而解了。下面我们就从一个生活中的小问题来入手,看看如何去设计一个合理的算法来解决问题一。
有这样一个家庭,由6个成员组成,分别是爸爸妈妈、爷爷奶奶、姐姐和一个3岁的弟弟。这一天,大家要线上决定一下明天出游时,弟弟戴什么颜色的帽子。由于此时5位家长分处在不同的地方,因此只能通过微信来交流。我们尝试通过这样一个案例来剖析一个最简单的共识问题。
单点故障
既然目的是要做出一个一致的决策,最简单的方式就是找出一个公信度最高的人,由他负责给出一个决策,大家都同意即可。比如,我们始终选择妈妈的决策,因为平时都是妈妈负责弟弟的着装。可是如果每次决策都需要等待妈妈的提案的话,难免有时候妈妈的手机会不在线,比如在坐飞机的时候手机开了飞行模式。因此,始终选择一个人来做决定是不行的。这种因为一个参与方就导致整个集群出现阻塞的情况就是典型的单点故障问题。
少数服从多数
既然由一个人来做决策不可靠,最容易想到的一个解决方案就是:少数服从多数。即每次决策都至少得到半数以上人的同意才可以通过。当然,这里我们不考虑有人乱投票,即向不同人发送不一样的投票。以当前的场景为例,5个人当中需要至少3个人接受同一个提案才能表明该提案值被选定。并且我们需要保证一旦某个提案值被选定了,就不可能在后续出现另外一个提案值也被选定。
民盟中央建议加速元宇宙科普和立法:3月4日消息,民盟中央已起草了《关于“元宇宙”技术发展的提案》,并将提交全国政协十三届五次会议。在提案中,民盟中央建议,在科普层面需加速知识传播,法律层面则需加快立法步伐。民盟中央拟提交的提案指出,目前,在新兴网络层面,相关政策法规相对缺失。“元宇宙”在未来将会带动形成全新的网络形态,当遇到突发舆情,全虚拟的环境、场景将更难进行源头追踪、问题疏导。因此建议应尽早加快立法研究,尽快形成与技术、市场发展相适应的治理模式和法律基础,全面提升我国社会治理的水平。建议组织相关部门,针对“元宇宙”相关需求、风险进行立法研究,并尽快发布。此前消息,民进中央拟向全国政协十三届五次会议提交《关于积极稳妥推进元宇宙技术和产业发展的提案》。建议推进元宇宙技术产业发展,建立相关监管治理体系。(华夏时报)[2022/3/4 13:37:12]
注:这里的选定是全局视角的,而接受是单个人的视角的,即同一个人可能会接受多次提案,但是整个群体最终只能选定一个提案值。
▲场景1
首先依旧给出一个最简单的方案,为了能够完成最终的决策,我们规定每个人必须接受他收到的第一个提案,这样也可以调动起大家的积极心,如果想要自己的提案通过就必须快速想出一种颜色并发出提案。
欧易OKEx将于3月18日推出DeFi系列科普视频:据欧易OKEx官方消息显示,欧易OKEx将正式推出DeFi系列科普视频《欧易DeFi20讲》,本系列节目由欧易OKEx亚太区CEO马克金主讲。该视频首期将于3月18日11:00(HKT)推出,用户可以在欧易OKEx官方学院、金色财经观看。
《欧易DeFi20讲》主要包含DeFi入门指南、全景解读DeFi生态及如何参与DeFi三个篇章,可以轻松使用户了解DeFi原理,洞察DeFi价值,掌握DeFi热点,更多详情请关注欧易OKEx官方学院。[2021/3/18 18:55:59]
但是,这种方案可能导致一种无法完成决策的困境。如上图所示,爸爸提出了红色帽子,觉得比较正能量!并及时将提案私戳给了妈妈,妈妈也欣然接受。几乎同一时间,爷爷提出了蓝色帽子,觉得比较复古!并及时将提案私戳给了奶奶,奶奶也欣然接受。而姐姐认为绿色比较时髦,然而等她将消息发送出去后,发现大家都已经有了自己的选择。最终形成了2-2-1的局面,没有哪个提案能够达到半数以上。因此,我们发现,如果想要最终完成决策,有些人可能要接受多个不同的提案。
▲场景2
既然如此,我们再考虑如下方案,即每个人都接受他收到的所有提案。
火币推出《一分钟读懂DeFi》系列科普视频:据官方消息,8月24日,火币推出《一分钟读懂DeFi》系列科普视频,并与微博财经合作冠名播出,布道DeFi认知,助力行业发展《一分钟读懂DeFi》是由火币成长学院打造的业内首个系统全面讲解DeFi的系列科普动画,继推出《区块链100问》后的再续佳作。《一分钟读懂DeFi》系列动画对DeFi的发展进行系统梳理,适合想要由浅入深、全面系统了解区块链DeFi的人们轻松了解DeFi。目前视频已由火币网官方微博发布。[2020/8/24]
这次,我们只考虑有两个人发起了提案,分别是爸爸的红色提案和姐姐的绿色提案。如果爸爸的提案已经获得了3票的同意达到了选定状态,随后姐姐才发起提案,根据每个人都接受所有提案的原则,绿色提案最终也能够达到选定状态。显然,这种方案违背了唯一性的原则,如果一直这样运转下去可能最终也没法选定一个提案值。
此时,我们发现一个问题,即爸爸的红色提案既然事先已经达到了选定状态,那么我们可以让姐姐在提案之前确认下所有人的状态,如果已经有半数节点对某个提案值达成了共识,那么姐姐就可以停止发出提案,或者再发出一个包含相同提案值的提案来保证唯一性。这样是否就能够解决问题了呢?
▲场景3
动态 | 报告:区块链等热点词促使童书科普百科类成交额同比增速最高:近日,京东图书与艾瑞咨询联合发布了《2019中国图书市场报告》。报告指出,AI、5G、区块链、机器人、VR、智能家居、AR这些热点词,不断点燃科技热潮,科技在改变大众生活的同时,也吸引了越来越多家长的关注,从小培养孩子对科技的兴趣和热爱。因此童书中科普百科类成交额同比增速最高,占比将近40%。[2020/1/8]
场景2中的问题依然存在,如上图所示,如果爸爸和姐姐分别事先确认了下所有人的状态都处在未投票的状态,并依次发出了各自的提案,由于爸爸是分别私戳的,因此消息有一定的延迟,而姐姐直接拉了一个群聊一次性通知给了爷爷和奶奶,因此姐姐的提案先于爸爸的提案达到选定状态,稍后等爸爸的提案通知到了妈妈和爷爷的时候,他们又该如何决策呢?
通过上面的问题,我们发现,为了防止整个决策进入到一种无法终止的状态,我们还需要通过某种方式对提案进行排序,从而拒绝一些旧的、无效的提案,并及时地向提案者反馈自己接受的提案值,避免提案者一直发起相同的提案。也就是说,如果爷爷在收到爸爸的延迟提案时,能够知道先前已经存在一个更新的提案并拒绝旧提案,同时告知爸爸已经接受了姐姐的绿色提案的话,就可以避免出现多种提案达到选定状态的困境。
例如,我们可以分别为5个人分配一系列提案号,提案号按如下规则递增:
金色财经独家分析 监管机构、媒体、业界提示风险 区块链科普道阻且长:新华社今日发文表示,近来“区块链”类案件频发,不法分子以“投资虚拟货币周期短、收益高、风险低”为借口,取用户信任并诱使其转账进行投资。无独有偶,同日消息,腾讯手机管家安全专家也提醒此类风险,并从技术上提出防建议。在美国,监管机构警示加密货币欺诈现象普遍承诺高收益而不披露潜在风险。金色财经独家分析,不法分子假借新技术之名进行,一方面是抓住民众趋利的心理,一方面反映出区块链科普的欠缺。区块链是新兴科技和底层技术并有改变社会生产关系的潜力,应该进行系统性的科普教育,当前,部分大学已经开始设置了区块链课程,但对于普通民众仍然有科普的需求,人们应该了解到系统和正确的知识,不仅要了解区块链的好,也要明确局限和弊端,以在高收益的诱惑下,保持清醒客观。[2018/4/11]
同时做如下规定:
一条提案由提案值color和提案号seqNo组成,可表示为(color,seqNo)每个人记录下自己收到的最大提案号,并拒绝提案号比它更小的提案当提案者收到一个已经被接受的提案时,必须无条件接受该提案,否则有可能陷入无限提案的循环每个提案都需要分为两阶段来完成,分别为事先询问阶段与最终确认阶段,其中询问阶段用来确定一个序号值seqNo并及时检测出是否已经存在被接受的提案值,确认阶段用来确定一个提案值color。
场景1的解决方案比较简单,即在一定时间内无法收到大多数人的同意消息之后,尝试用新的提案号再发起一次提案,直到某次提案消息能够成功传达到大多数人后,即可完成决策。
下面我们来看一下如何解决场景2与场景3。
注:下图中,以Pn表示事先询问消息,询问其他节点是否接受提案号n;以R(v,n)表示响应消息,告知提案者当前已经接受的最大提案号和提案值;以A(v,n)表示最终确认消息,告诉其他节点尝试最终确认一个提案值v,其提案号为n。
场景2解决方案
对于已经达成选定状态的提案,我们可以保证后续的提案不会覆盖原先的提案值。
此时提案决策流程如下:
爸爸使用提案号1发起询问爸爸、妈妈、爷爷都同意提案号1,并且反馈当前未接收任何提案值,提案号默认为0由于收到了大多数人的同意,爸爸发出最终确认消息给到了大多数人,提案号为1,提案值为红色,此时红色其实已经达到选定状态姐姐使用提案号5发起询问由于提案必须经过至少3人同意,而任选3人必然与此前同意爸爸提案的人群有交集,因此处在交集中的人能够及时反馈之前已经同意的提案,即1号红色提案,其余人还是反馈空投票姐姐在等到大多数人的反馈结果之后,发现此前已经有提案被其他人同意了,选择提案号最高的那个提案值,覆盖自己的提案值姐姐发出最终确认消息,提案号为5,提案值为红色最终所有人都接受了红色提案,虽然提案号可能不尽相同场景3解决方案
对于未达成选定状态的提案,如果有新的提案提出,最终选定的提案值可能有两种情况。
第一种情况是新提案者能够发现旧的提案值,最终会选定旧的提案值。
第二种情况是新提案者不能够发现旧的提案值,最终会选定新的提案值。
场景3-1解决方案
新提案者能够发现旧的提案值,最终会选定旧的提案值。
此时提案决策流程如下:
爸爸使用提案号1发起询问爸爸、妈妈、爷爷都同意提案号1,并且反馈当前未接收任何提案值,提案号默认为0由于收到了大多数人的同意,爸爸发出最终确认消息,但是因为消息延迟的原因,最终确认消息只发送到了爸爸、爷爷。妈妈延迟接受了该消息,因此红色其实并未达到选定状态姐姐使用提案号5发起询问由于提案必须经过至少3人同意,而如果此时选中的3人中恰巧有一人接受过爸爸的最终确认消息,他会立即反馈之前已经同意的提案,即1号红色提案,其余人还是反馈空投票姐姐在等到大多数人的反馈结果之后,发现此前已经有提案被其他人同意了,选择提案号最高的那个提案,覆盖自己的提案值姐姐发出最终确认消息,提案号为5,提案值为红色妈妈延迟接收到了爸爸的最终确认消息,由于没有收到提案号更大的提案,因此也接受了红色提案最终所有人都接受了红色提案,虽然提案号可能不尽相同场景3-2解决方案
新提案者不能够发现旧的提案值,最终会选定新的提案值。
此时提案决策流程如下:
爸爸使用提案号1发起询问爸爸、妈妈、爷爷都同意提案号1,并且反馈当前未接收任何提案值,提案号默认为0由于收到了大多数人的同意,爸爸发出最终确认消息,但是因为消息延迟的原因,最终确认消息只发送到了爸爸、妈妈。爷爷延迟接受了该消息,因此红色其实并未达到选定状态姐姐使用提案号5发起询问由于提案必须经过至少3人同意,而如果此时选中的3人中恰巧都没有人接受过爸爸的最终确认消息,那么姐姐会收到3个人反馈的空投票由于收到了大多数人的同意,姐姐发出最终确认消息给到了大多数人,提案号为5,提案值为绿色,此时绿色其实已经达到选定状态妈妈延迟接收到了爸爸的最终确认消息,由于之前已经接受了提案号更大的提案,因此拒接爸爸的旧提案值,并将新提案值及时反馈给爸爸爸爸在收到拒接响应消息后,会尝试从头开始重新发起提案,最终选择绿色提案最终所有人都接受了绿色提案,虽然提案号可能不尽相同总结
总结一下,为了能够让决策最终能够收敛,其实我们已经显式或者隐式地做了一些约束:
1.每个人的手机需要实时在线并且任意一条微信消息都可以在一定时延内收到,当出现网络断开的场景时,可能会导致共识无法达成
2.每个人都需要严格按照上述规则进行提案/投票,不能有胡乱提案/投票的动作
上面其实就是运用了经典分布式一致性算法Paxos的原理。然而Paxos解决的仅仅是一个最基本的共识的问题,即在非拜占庭的同步网络环境下,如何就一个决策值达成一致。如果系统进入了异步网络环境呢?如果出现了拜占庭节点呢?当我们将这一系列的问题考虑进去之后,整个问题就变得复杂的多了。
好在前人已经给我们提供了非常多的理论基础,为了应对不同的问题,已经出现了非常多优秀的共识算法。大家感兴趣的话,后面会有详细的共识算法分类介绍,为大家全面地展示不同场景下共识算法的选择与权衡。添加小助手加入技术交流群,欢迎您和我们共享观点,共论区块链的无限未来~
作者简介
端豪
趣链科技基础平台部共识算法研究小组
在就业、租房和其他日常流程方面,签订合同是不可避免的。但是,如果有一种方法可以在像DocuSign这样的平台上以完全去中心化的方式签署文档呢?新加坡初创公司EthSign的目标就是做到这一点.
1900/1/1 0:00:00据Rand7月28日消息,高级政策分析师SaleLilly和非营利、无党派兰德公司的高级科学家ScottW.Harold在日经亚洲发表评论文章《加密货币应加入日美贸易协定》.
1900/1/1 0:00:00本文来自?Decrypt,原文作者:TimHakkiOdaily?星球日报译者?|念银思唐摘要:-LINEPLUS?发布了供各国央行发行数字货币的区块链。-该公司目前正在与几家亚洲央行进行谈判.
1900/1/1 0:00:00Bytom2.0即将来临!Bytom1.0与Bytom2.0在节点上到底有何区别? 一图对比,直观感受! Art Blocks引入BytecodeStorage V1,以增强链上存储能力:5月15日消息.
1900/1/1 0:00:00Coincover是一家位于英国威尔士卡迪夫的初创公司,为加密投资者提供保险保护,已获得920万美元的A轮融资.
1900/1/1 0:00:00因为伦敦升级纳入的EIP-3554提议将难度炸弹延迟到12月,以太坊开发者TimBeiko发帖讨论将于12月份进行的网络升级.
1900/1/1 0:00:00