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

区块链中的核心共识机制 二

我们来看重点看下共识机制,区块链有三个 基本特征:区块链是一个分布式数据库(系统)、区块链采用密码学,保证数据不被篡改、区块链采用共识算法来对于新增的数据达成共识。这三点可以简单的从哲学上理解为:

区块链技术的伟大之处就是它的共识机制,在去中心化的思想上解决了节点间互相信任的问题。区块链拥有众多节点并达到一种平衡状态是因为共识机制。尽管密码学占据了区块链的半壁江山,但是共识机制才是让区块链系统不断运行下去的关键。所以,要深入谈及区块链的共识机制,就避不开一个问题,拜占庭问题。

共识机制的起源:现代共识机制的基础起源于1962年提出。RAND Corporation的一名工程师Paul Baran 在论文《论分布式通讯网络》中提出了加密签名的概念。这些数字化签名不久就成为了系统对修改数据或文档的用户进行验的方法。二十年后,三名学者发表了一篇关于去中心化系统可靠性问题的论文。在《拜占庭将军问题》中。提出了一个思维实验:拜占庭将军问题。

拜占庭问题是容错计算中的一个老问题,有莱斯特兰伯特等人在1982年提出。拜占庭帝国为公元395年至1453年的东罗马帝国,拜占庭城邦拥有巨大的财富,令他的十个邻邦垂延已久,但是拜占庭高墙耸立,固若金汤,没有任何一个单独的邻邦能够成功入侵,任何单个城邦的入侵行动都会失败,而入侵者的军队也会被歼灭,使得其自身反而容易遭到其它九个城邦的入侵。这十个城邦之间也互相觊觎对方的财富并经常爆发战争。

拜占庭的防御能力如此之强,非大多数人一起不能攻破。而且中要其中一个城邦背叛盟军,那么所有进攻军队都会被歼灭,并随后被其它邻邦所劫掠。因此这是一个互相不信任和各邻邦构成的分布式网络。每一方都小心行事,因为稍有不慎就会给自已带来灾难。为了获取拜占庭的巨额财富,这些邻邦分散在拜占庭的周围,依靠士兵传递消息来协商进攻目的及进攻时间,这些邻邦将军想要攻克拜占庭,但面临的一个困扰,邻邦将军不确定他之中是否有叛徒,叛徒是否擅自变更进攻意图或者进攻时间?在这种状态下,将军们能否找到一种分布式协议来进行远程协商达成他们的共识,进而赢取拜占庭城邦的财富呢?

对于将军们的通讯过程,在“拜占庭将军问题”中也是有默认假设的:点对点的通讯是没有问题的,也就是在这里传令兵是互通的。但问题在于,如果每个城邦身其它9个城邦派出一名信使,那么就是十个城邦,每一个城邦都派出一名信使向各城邦传递信息,也就是在任何一个时间总共有90次信息传输,但每一条信息都写着不同的进攻时间和方法;除此之外,信息传输过程中,如果叛徒想要破坏原有的约定时间,就会自已修改相关信息,然后发给其它城邦以混淆视听,这样的结果是,部份城邦收到错识信息后会按一个或多个城帮已修改过的攻击时间或命令,从而背叛发起人的意图。这样一来,按错识信息的城邦(包含叛徒)将重新广播超过一条信息的信息链,整个信息链会随着他们所发送的错误信息,迅速变成不可信的信息和攻击时间,变成一个相互矛盾的纠结体。

针对这个问题,人们主要提出了两种解决方法,一个是口头协议算法;别一个是书面协议算法。

口头协议算法的核心思想:要求每一个被发送的消息都能被正确投递,信息接收者明确知道消息发送者的身份,并且信息接收者知道信息中是否缺少信息。采用口头协议算法,若叛徒数少于1/3时,则拜占庭将军问题可以很容易解决。但是口头协议算法存在着明显的缺点,就是消息不可溯源。

为了解决该问题,提出了书面协议算法。该算法要求签名不,不可伪造,一旦被篡改就可发现,同时任何人都可以验证签名的可靠性。就算是书面协议算法,也不能完全解决拜占庭将军问题,因为该算法没有考虑信息传输中的延迟、签名体系难以实现的问题。且签名消息记录的保存,也难以摆脱中心化机构。那这个问题要如何解决?中本聪就给出了一个好的思维:不能让所有人都有资格发信息,而是给发信息设置一个条件:“工作量”。将军们同时做一道计算题,谁先算完,谁才能获得给其也小国发信息的资格。而其它小国在收到信息,必须采用加密技术进行签字盖戳,以确认身份。然后继续做题,做对题的再继续发信息。。。。。对这种先后顺序达成共识算法,开创了共识机制的先河。

区块链共识机制解决方案,中本聪所创建的比特币,通过对这个系统,做出一个简单的变化解决了这个问题。它为发送信息加入成本,这降低了信息传递的速率,并加入一个随机元素,以保证在一个时间只有一个城邦,可以进行广播。中本聪加入的成本是“工作量证明”---挖矿,并且工作量证明是基于计算一个随机哈希算法。哈希算法唯一做的事情就是获得一些输入,然后进行计算,并得到一串64位的随机数字和字母的字符串。

今天就先讲到这,大家需要好好吃透这个连载文章。学习永远是对的!未完待续。。。。。。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券