量子学派之区块链课程第四章《区块链的共识机制——从拜占庭共识谈起》读书笔记

第四章 区块链的共识机制:从拜占庭共识谈起

· 本文由【区块链研习社】优质内容计划支持,更多关于区块链的深度好文,请点击【区块链研习社】简书专栏: • • [http://www.jianshu.com/c/b17f09dc2831] • • 欢迎打赏: QR84f2aPKn3kupbroQPeF8hnhgjW9f1VeH • • 写在前面: • • “区块链研习社”是一很有意思的自组织,加入后以输出文章倒逼阅读学习输入的方式学习,效果不错。 • • 作为长期从事律师工作的文科生,对于理工科知识的认知是短板。感谢《量子学派》的课程,从另一个角度来开启了我的理性思维的大门。近期,又开始在《量子学派》学习《人人都懂区块链》课程,特记下读书笔记,以资记录。

· 如果说区块链是比特币运行的躯干

那共识机制就是灵魂

· 区块链哲学三问

· 区块链被确认有以下三个基本特征:

· 1.区块链是一个分布式数据库(系统);

· 2.区块链采用密码学,保证已有数据不被篡改;

· 3.区块链采用共识算法来对于新增的数据达成共识。

· 这三点可以简单的从哲学上理解为:我是谁?我来自哪里?我要去哪里?

· 我是谁?我是一个分布式的数据库;

· 我来自哪里?密码学告诉我过往的记忆;

· 我要去哪里?共识算法告诉我应该怎么往前走。

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

· 要深入谈及区块链的共识机制,就避不开一个问题——拜占庭问题。

·

· 拜占庭问题及其分析(前方烧脑)

·

· 拜占庭问题是容错计算中的一个老问题,由莱斯特.兰伯特等人在1982年提出。

· 问题是:拜占廷帝国为5-15世纪的东罗马帝国,拜占庭城邦拥有巨大的财富,令他的十个邻邦垂涎已久,但是拜占庭高墙耸立,固若金汤,没有任何一个单独的邻邦能够成功入侵。任何单个城邦的入侵行动都会失败,而入侵者的军队也会被歼灭,使得其自身反而容易遭到其它九个城邦的入侵。这十个城邦之间也互相觊觎对方的财富并经常爆发战争。

· 拜占庭的防御能力如此之强,非大多数人一起不能攻破。而且只要其中一个城邦背叛盟军,那么该邻邦的所有进攻军队都会被歼灭,随后还会被其他邻邦劫掠。因此这是一个由互不信任的各个邻邦构成的分布式网络。每一方都小心行事,因为稍有不慎,就会给自己带来灾难。

· 为了获取拜占庭的巨额财富,这些邻邦分散在拜占庭的周围,依靠士兵传递消息来协商进攻目的及进攻时间,这些邻邦将军想要攻克拜占庭,但面临的一个困扰:邻邦将军不确定他们之中是否有叛徒,叛徒是否会擅自变更进攻意向或者进攻时间?在这种状态下,将军们能否找到一种分布式协议来进行远程协商达成他们的共识,进而赢取拜占庭城邦的财富呢?

· 拜占庭将军问题模型中,对于将军们(节点)有两个公认的假设:

· 假设一、所有忠诚的将军受到相同的命令后,执行这条命令,得到的结果一定是相同的;(含义是所有节点对命令的理解和执行是一样的)

· 假设二、如果命令是正确的,那么所有忠诚的将军必须执行这条命令。(忠诚的将军需要判断接收到的命令是否正确。这个判断命令道方法是整个拜占庭问题容错技术的核心。)

· 对于将军们的通讯过程,在“拜占庭将军问题”中也是有默认假设的:点对点通信是没有问题的。也就是说,假设A将军要给B将军一条命令X,那么派出去的传令兵一定会准确的把命令X传给B将军。

· 问题在于,如果每个城邦向其他9个城邦派出一名信使,那么就是这10个城邦,每一个都派出了9名信使,也就是在任何一个时间有总计90次的信息传输,并且每个城市分别收到9条信息,可能每一条都写着不同的进攻时间。

· 除此以外,信息传输过程中,如果叛徒想要破坏原有的约定时间,就会自己修改相关信息,然后发给其他城邦以混淆试听,这样的结果是,部分城邦收到错误信息后,会遵循一个或者多个城邦已经修改过的攻击时间相关信息,从而背叛发起人的本意。这样一来,遵循错误信息的城邦(包含叛徒),将重新广播超过一条信息的信息链,整个信息链会随着他们所发送的错误信息,迅速变成不可信的信息和攻击时间,变成一个相互矛盾的纠结体。

· 针对这个问题,有两种解决方法。一个是口头协议算法;另一个是书面协议算法。

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

· 为解决该问题,提出了书面协议算法。该算法要求签名不可伪造,一旦被篡改即可发现,同时任何人都可以验证签名的可靠性。

· 书面协议算法也不能完全解决拜占庭将军问题,因为该算法没有考虑信息传输延时、签名体系难以实现的问题。且签名消息记录的保存难以摆脱中心化机构。

·

· 以比特币为例的区块链共识机制解决方案

·

· 中本聪所创建的比特币,通过对这个系统,做出一个简单的变化解决了这个问题。它为发送信息加入成本,这降低了信息传递的速率,并加入了一个随机元素,以保证在一个时间只有一个“城邦”可以进行广播。

· 中本聪加入的成本是“工作量证明”(挖矿),并且工作量证明是基于计算一个随机哈希算法。哈希算法唯一做的事情就是获得一些输入,然后进行计算,并得到一串64位的随机数字和字母的字符串。

· 在比特币的世界中,输入数据包括到当前时间点的整个总帐(区块链)。

· 尽管单个哈希值用现在的计算机几乎可以及时的计算出来,但是比特币系统接受的工作量证明,是无数个64位哈希值中唯一的哈希值,而且这个哈希值前13个字符均为0,这样一个哈希值是极其罕见、不可能被破解的,并且在当前却要花费整个比特币网络总算力约十分钟的时间才能找到一个。

· 在一台网络机器随机的找到一个有效哈希值之前,上十亿个的无效值会被计算出来,计算哈希值就需要花费大量时间,增加了发送信息的时间间隔,造成信息传递速率减慢,这就是使得整个系统可用的“工作量证明”。

· 而那台发现下一个有效哈希值的机器,能将所有之前的信息放到一起,附上它自己的辨识信息,以及它的签名/印章等,向网络中的其他机器广播出去。只要其他网络中的机器接收到并验证通过了这个有效的哈希值和附着在上面的签名信息,他们才会停止他们当下的计算,使用新的信息更新他们的总账复制,然后把新更新的总账作为哈希算法的输入,再次开始计算哈希值。哈希计算竞赛,从一个新的开始点重新开始。

· 如此这般,网络持续同步着,所有网络上的节点都使用着同一版本的总账。

· 与此同时,每一次成功找到有效哈希值以及区块链更新的间隔,大概是10分钟(这是故意的,算法难度每两周调整一次,以保证网络一直需要花费10分钟来找到一个有效的哈希值)。在这10分钟以内,参与者可以发送信息并完成交易,所有的交易信息会随着分布式账本扩展到其他每一个节点,直到每个节点都完成总账复制。当区块链更新并在全网复制同步之后,在之前10分钟内进入区块链的所有交易也被更新并同步。因此分散的交易记录,是在所有的参与者之间进行对账和同步的。

· 最后,在用户向网络输入一笔交易的时候,他们使用内嵌在比特币客户端的标准公钥加密工具来加密,同时用他们的私钥以及接收者的公钥为这笔交易签名。这对应于拜占庭将军问题中他们用来签名和验证消息时使用的“印章”。因此,哈希计算速率的限制,加上公钥加密,使得一个不可信网络变成一个可信的网络,所有参与者可以在某些事情上达成一致(比如说攻击时间、或者一系列的交易域名记录,政治投票系统,或者任何其他的需要分布式协议的地方)。

· 将比特币的共识机制引入拜占庭问题,就形成了这样一种情况:城邦A向其他九个城邦发送进攻相关信息,是直接将相关信息及其当时发送的时间,附加在通过哈希算法加密的信息中,并且加上独属于自己的数字签名传递给其他城邦。当城邦B收到城邦A发送的消息后,用相应的网络机器验证通过有效哈希值和附加的签名和时间戳信息,通过解密获得其中信息,并将这条信息的相关记录同步在城邦B机器内(节点)。这条信息从城邦B发向城邦C时,会在原来的的消息上加入城邦B查阅了该信息的记录,加盖时间戳后,利用哈希算法对城邦B所有信息加密,再发给其他城邦。

· 在其他城邦接受消息后,重复此流程直至所有城邦都收到消息。

· 如果叛徒想要修改进攻信息来误导其他城邦时,其他城邦的机器会立刻识别到异常信息,同步的虚假信息将不被认可,机器依旧会同步其他大部分共同的信息,这样叛徒就失败了。他无法破坏10个城邦当中的大多数节点,也就是至少6个节点,这样信息的一致性就得到了保证,完美地解决了拜占庭问题。

· 这就是区块链共识机制为何如此特别的关键,它为一个算法上的难题提供了解决方案。区块链的共识机制,通过不断同步各个节点的信息,使得各分布式节点之间达到一种平衡,保证了绝大多数节点的一致性,即达成了共识。

·

· 区块链共识机制的发展变迁

·

· 区块链的共识机制发展到现在,也出现了很多种,这里列举一些比较典型的共识机制:

· 1.POW(Proof -of -Work) 工作量证明

· 依赖机器进行数学运算来获取记账权,资源消耗多、可监管性弱。同时每一次达成共识,需要全网共同参与,运算性能效率比较低,容错性方面允许全网50%节点出错,优点是完全去中心化,节点自由进出。

· 当然现在由于POW算力的中心化,使得很多人对POW机制中的中心化问题出了怀疑,其中被质疑最多的就是算力中心化问题。

· 2.POS(Proof- of -Stake) 权益证明

·

· 总体来说,就是存在一个持币人的集合,他们把手中的代币放入POS机制中,这样他们就变成验证者。假设很多验证者,在区块链最前面发现了一个新区块(区块链中最新的块),这时POS算法在这些验证者中随机选取一个人(选择验证着的权重依据他们投入的代币多少而定,比如一个投入押金问10000代币的验证着,被选择的概率是一个投入1000代币验证着的10倍),给他们权利产生下一个区块。与POW一样,以最长的链为准。如果在一定时间内,这个验证者没有产生出一个新区块,POS会继续选出第二个验证者,代替原来被选中的验证者来产生新的区块。

· 和POW算法相比,选择POS算法有什么好处呢?

· 简而言之:不再需要为了安全产生区块,而大量消耗电能。

· 由于不再需要大量能耗,通过发行新币以激励参与者继续参与网络的压力会下降,理论上负总发行量甚至成为可能,由于一部分交易费被烧掉,因此货币供应会随着时间减少。

· 从“合作博弈论”观点来看,POS算法可以减少因自私挖矿而造成系统被攻击的弱点。随着规模经济的消失(指扩大生产规模引起经济效益增加的现象),中心化所带来的风险就会减小,价值1000万美元的代币带来的回报是10万美元,即作恶所付出的成本需要价值1000万美元的代币,而收益只能得到价值10万美元的代币,这样一来,因为作恶获得与付出不成正比,人们不会去攻击整个区块链。

· 同样,POS也存在很多问题,比如POS相当于是大股东说了算,但如果大股东作恶怎么办?这也一直存在争议。

· 3.DPOS(Delegate- Proof- of- Stake)股份授权证明

· BitShares社区首先提出了DPOS机制。DPOS与POS的主要区别在于,其节点选取若干代理人。由代理人验证和记账,其合规监管、性能、资源消耗和容错性与POS相似。这种方式类似于董事会投票,持币者投出一定数量的节点,由代理他们进行验证和记账。

· DPOS的工作原理如下。

· 去中心化表示每个股东按其持股比例拥有影响力,51%的股东投票的结果,将是不可逆且有约束力的,其运作方式是通过及时而高效的方式,采用51%以上份额的股东投票来决定方案。为达到这个目标,每个股东可以将其投票权授予一名代表。

· 网络延迟有可能使某些代表没能力及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接,而建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接,是为了确保你能得到报酬。

· 该模式可以每30秒产生一个新区块,并且在正常的网络条件下,区块链分叉的可能性极小,即使发生也可以在几分钟内得到解决,这样就可以大幅缩小参与验证和计算节点的数量,达到秒级的共识验证。

· 4.Ripple Consensus:瑞波共识机制

· 它的算法是:使一组节点,能够基于特殊节点列表达成共识。初始特殊节点列表,就像一个俱乐部要接纳一个新成员,必须由当前该俱乐部中51%以上的会员投票通过。共识遵循这个核心成员的51%权利,外部人员则没有影响力。与比特币和点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。

· 5.Pool验证池

· 这是一种基于传统的分布式一致性技术,加上数据验证的机制,是目前行业链大范围在使用的共识机制。

· 优点是不需要代币也可以工作,在成熟的分布式一致性算法基础上,实现秒级共识验证。缺点是去中心化程度不如比特币,更适合多方参与的多中心商业模式。

· 除此之外,还有很多的共识机制,现在主流的共识机制是POW共识机制,POS共识机制和DPOS共识机制。

· 但是目前这些主流共识机制都还存在着一定不足,比特币已经吸引全球大部分的算力,其它在用POW共识机制的区块链应用,很难获得相同的算力来保障自身的安全,同时挖矿也会造成资源大量浪费,共识达成的周期较长等问题。POW之外出现最早的也是最重要的算法是POS,它的原则是一个节点,持有的币越多,越有机会产生下一个区块,也就是如果想要造假,需要持有大量的币,而既然造假者持有了那么多币,破坏网络的可信度,就会造成资产的大量损失,这个损失极有可能是超过造假的收益。

· POS相比POW节约了大量的电力资源,但是它的缺点也显而易见:会造成富者越富,穷者越穷,然后用户会流失,新用户不愿意加入。而且还是需要挖矿,本质上并没有解决商业应用的痛点,所有的确认都只是一个概率上的表达,而不是一个确定性的事件,理论上很有可能存在其它攻击影响。而DPOS共识机制还是依赖于代币,很多商业应用是不需要代币存在的。

·

· 结语 没有一种****共识****机制是完美的

·

· 由此看来,没有一种共识机制是完美无缺的,同时也意味着没有一种共识机制,是适合所有应用场景的,所以区块链的共识机制也都还在不断的进步与发展。

· 虽然目前主流的区块链共识机制中绝大多数都是去中心化的公有链,但本身仍存在一些缺点。并且还有少部分机构采用了半中性化或者中心化的共识机制,而半中性化甚至中心化的共识机制,是明显有违区块链的一致性的,会使权力掌握在少数人手里,出现很多问题,信用机器也将因此崩溃。

· 如今世界还在等待一种新的共识机制,一种能让所有人都信服的共识机制。

· 但这可能是一个哲学问题,世界上永远没有完美的共识机制。

我的感受:

1、解决价值传递的问题,依赖于共识;

2、共识的达成,必定是有成本的;

3、共识机制也在不断地发展之中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342