首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链技术中提到的拜占庭问题,来个通透解释

当前大多数的金融机构、体系基本上都采用一个中心化的交互系统,包括现有的银行体系(央行是中心)、货币系统(央行是中心)。中心化最大的特点是中心节点掌握分支节点的信息并做管控,同时,分支节点之间,互相不掌握信息且无法相互干预。这种中心化,也造成交易布偶透明公开。中心化还有一个最大的痛点,就是风险集中在中心化节点上,中心节点不安全,分支节点即使识别出了风险,也无能为力,因为分支节点根本对此无控制权。

传统中心化

区块链技术,或者说区块链方法论的提出,恰恰能解决上述中心化的痛点或风险。区块链的核心思想,其实就是“去中心化”。区块链将控制权分散,分布到每一个节点上,且取得各个节点的支持,达成信任,当然信息也被加密。总结起来,区块链解决到中心化的三大痛点:

1、去中心化:将系统化风险(中心节点出错,则全出错)降到最低。

2、安全性:一个点被破坏或攻击或篡改,没事。除非把51%的节点同时、全部给破坏或攻击或篡改。

3、信任最大化:一个节点掌握所有节点的信息,链条上当前块以前的块中的信息,无法被修改,大家都放心;同时也可以匿名交易,大家更乐意;还有,随着时间的推移,两条越来越长、节点越来越多,信任感将会越来越强。

去中心化的区块链

OK,去中心化有如此强的优势,但问题也来了,这么多节点,相互之间如何达成一致?A说往东、B说往西、C说不许动、D说向上飞、……,怎么才能解决这些分布节点之间的一致性呢?也就说如何让他们握手一致同意向上飞?(中心化,就不存在这事,一句话“全往下”,各节点执行即可)

关于一致性问题的解决,有很多理论和方法,不做具体叙述了,这里,就来说说耳熟能详的“拜占庭问题”。

一致性问题的解决算法

拜占庭问题

拜占庭问题,又叫拜占庭将军问题,英文Byzantine Generals Problem。这个问题由Leslie Lamport与另外两人在1982年提出,是为了解释一致性问题的一个虚拟模型。拜占庭是古代东罗马帝国的首都,由于地域宽广,首位边境的多个将军(类似各个节点)需要通过信使(网络中的信息)来传递消息,达成某些一致的决定。但是,由于将军中存在一些叛徒或捣乱分子,这些将军会发送干扰信息,破坏一致性的达成。拜占庭问题,就是在这种情况下,如何让忠心的将军们达成一致。例如:10个将军共同去攻打一座城堡,只有一半以上也就是至少要6个将军一起进攻,才可能攻破。但是,这中间有可能存在未知叛徒,有可能造成真正进攻的军队数量少于或等于5,致使进攻失败而遭受灭亡。那么如何相互通信,才能确保有6个将军的进攻命令,从而使军队一致进攻而成功,或者确保少于6个将军的进攻命令,从而使军队一致不进攻避免被灭掉?也就是说,要么一半以上同意一起进攻而决定进攻,要么不到一半同意一起进攻而决定不进攻,但要避免说进攻但命令却是不进攻,使哪些进攻军队数少于或等于一半,造成进攻者的被灭。(好拗口,但愿能明白)(另外,这里不考虑该不该进攻,不考虑正确性,只考虑一致性,即只要达成一致,无论错与否都执行一致意见。这里,叛徒将军数量是未知的,也许叛徒将军数量多,最后一致不进攻)

怎么达成真正的一致呢?

解决方法

首先,要个前提条件,即将军总数为3N,叛徒将军数为N(或者忠诚将军数为N),问题才有解,才能要么忠诚将军达成一致进攻,要么叛徒将军达成一致撤退。同时,以下几点要确保:

A-所有信息都能在指定时间内被传达到位;(网络协议技术保障,发送、回执、……)

B-接收到信息的将军,知道信息来自哪个将军;(签名、签章,数字签名等技术解决)

C-收到的信息没有被篡改;(防篡改由其他加密算法来解决)

D-信息内容如果有短缺(字符数),能够知道缺少了什么;(内容校验,校验技术解决)

以上条件满足后,开始通信。3N个将军的每一位,都向其他3N-1个将军发送一条相同的信息(1或者0),信息包含自己的命令、时间,并加盖签章。如果10个将军,每一位将发出9份,收到9份,共计9*9=81次信息传递。通过上面的4个条件,大家可以试试简单的1和0信息传递,肯定能达到51%的通过率,也就是肯定能达成一致。

遗留问题

上述的解决方法,是一种理想的状态。即使首要条件加上4个确保条件完全满足,但是区块链中,要达成一致的信息,可不仅仅是1或0这么简单。如上例中,每一位将军都可以提议,而且提议可能会很复杂,每一个点的确认,都会非常复杂,运算量会非常庞大。所以,拜占庭问题依然处于难解的状态。

后话:针对区块链中的一致性问题,比特币的设计提出了一个创新——PoW(Proof of Work)算法思路。首先,会限制一段时间内的网络中的提案个数;另外,放宽对最终一一致性的确认的需求,最终一致性不再确认,约定好大家都进行确认并对链条进行扩宽即可。当然,后来还有各种PoX算法,也是这个基础上的改进,有兴趣的朋友可以去查看相关的资料。

比特币PoW算法思路

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180114A0MGZV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券