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

区块链学堂——深入浅出共识机制

转载请注明出处,微信公众号:叶先生的鱼

什么是共识?

在理解共识的概念之前,先简单粗爆地假设——咱们村有100人,现在要投票选举谁当村长,如果100人都亲自到场投出自己的一票,那参与度是100%;如果这100人选出了10个代表去投票,参与度则只有10%。这两种投票,哪一种投票更能代表民意呢?毫无疑问是前者,因为参与度更高;相反,后者选出了10位代表去投票,参与度低,难免以偏盖全。通过这个假设,我们可以对什么是参与度有一个简单粗暴的理解。

共识(Consensus)是一切交易的基础,达成共识越分散(参与度越高),其效率就越低,但满意度越高,因此也越稳定;相反,达成共识越集中(参与度越低),效率越高,也越容易出现独裁和腐败现象。

区块链技术的伟大之处在于去中心化和去信任(或降低信用成本),如何在一个完全陌生的网络环境里,通过代码撮合交易?言外之意,这些代码究竟发挥了何种神奇的魔力,让买卖双方产生信任呢?

答案就是共识机制。

共识的重要性和意义

共识机制是区块链技术自带颠覆(改善)世界的光芒,得以被全世界逐步接受和认可的最大幕后功臣,它让互联网上,陌生人之间,在没有第三方作为信用背书的情况下,发生一切交易变成可能,它赋予了机械的代码以人性和温度。

在区块链中最常用的三种共识算法有工作量证明、权益证明和股份授权证明。学习共识算法是掌握区块链技术的必由之路,共识机制是区块链技术的核心点之一,一个区块链系统,共识机制设计得好与坏直接决定了系统的工作效率、运行成本、安全性、甚至毫不夸张地说,直接决定了系统存在的价值。

下面我们抛开所有术语,一起来探索这三种并不神秘的共识机制(算法)。

一:工作量证明PoW

顾名思义,工作量证明是证明你完全某项任务所花费的精力(包括时间、脑力、体力等),同时也证明你达到了某个水平。在生活中,它类似于毕业证、驾照,大学毕业证可以证明你读完了学制四年的大学课程,并通过了所有课程的考试,达到了所学专业的某个水平;驾照可以证明你学完了所有学时,并通过了四个科目的考试,达到了开车上路的水平。

在众多的区块链应用中,使用工作量证明作为共识算法的典型案例就是比特币,如果了解比特币,对比特币挖矿一定不会陌生(如果对挖矿不太了解,强烈建议先看看《区块链学堂——比特币挖矿(一)》),假设比特币的世界里有A、B、C、D四个人,现在这四个人都在争抢记账权限(挖矿),到底用什么方式在保证公开、公正、透明的情况下,快速决定把记账权限归谁呢?

科学家们脑洞大开,发明了工作量证明机制,即每一次要争夺记账权限,都给A、B、C、D四个人出一道题,谁要是第一时间算出了这道题的正确答案,就可以获得一个证书——工作量证明,凭这个证明,就可以获得记账权限。

优点:完全去中心化 缺点:挖矿造成了巨大的资源浪费(为了争夺记账权限不停地轮询计算,耗电量巨大),而且达成共识的周期过长,导致每秒仅仅只能做几笔交易(比特币每秒只能做7笔交易),不适合商业应用。

二:权益证明PoS

为了弥补工作量证明达成共识周期过长的缺点,科学家们发明权益证明共识算法,权益证明就是用股权代替PoW中的挖矿算力,来模拟比特币的挖矿过程。A、B、C、D四个人谁拥有的代币(类似于比特币等数字货币)数量多,谁就有机会获得记账权限。

这样做的好处显而易见,A、B、C、D都不需要拼命地算题,从而节省了大量算力和电费,同时大大缩减了达成共识的时间,但缺点也很明显:钱多的的人(节点),获得记账权的机率更大,这会使得共识成为少数有钱人的游戏,从而失去公正性。

三:股份授权证明DPos

股份授权证明类似于董事会投票,假设某个区块链系统的世界里有10万人,现在这10万人投票选出了4位股东作为代表来行驶记账权,这4位董事分别是A、B、C、D,在记账过程中,按顺序每位董事有两秒钟的时间来记账,如果在规定的时间内记账失败,则直接把权限交给下一位董事,这样原本10万人参与记账竞争的游戏,现在变成了4人。

这样做的优点是大幅缩减了参与验证和记账的数量,形成共识几乎可以达到秒级,缺点是固定数量的董事作为记账候选人,与去中心化的理念相违背,董事数量太少,参与度太低,也缺乏一定的代表性。

对比这三种最常用的共识算法,不难发现各有利弊,它们的诞生都围绕着一个核心——如何更加公平、公正、透明、轻量(不过多消耗资源)、高效(更快)地达成共识,挑选出记账的人(节点)。

文中尽可能地避免引用专业名词和术语,只是为了更加通俗易懂地讲明白三种不同共识算法的定义,以及各自的优缺点,为后面更加深入学习区块链技术打下基础。欢迎大家留言讨论,共同学习进步。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券