区块链的共识机制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
区块链11:区块链的共识机制
为什么需要共识机制
首先,我们要理解,为什么需要有共识机制这个东西。在一个中心化的结构体系中,系统的共识是由中心决定的,各参与方只需要服从中心下达的命令就可以了。因此,中心化体系共识建立是极为高效的。这也就是为什么中心化的机构要比去中心化的机构相对来说效率更高的缘故。比如说,你上一所大学,什么时间之前要交多少学费,要转到哪个指定账号,到哪栋楼报到,基本都是学校规定的,你服从就行。如果你不按照规定的时间、地点和方式进行报到,你有可能损失你上学的机会,从而没有资格加入这个中心化的体系。所以你一定要按照要求进行报到。这种中心化的方式也会让入学报名工作井井有条,并且快速完成程序。
而在一个去中心化的结构体系中,由于各个参与方的地位是平等的,当出现分歧时候,如何达成共识就成了问题。试想一下,如果你和学校、老师之间的地位是平等的,如果办理入学,会出现什么样的情况呢?是不是很有意思呢。在报名环节,你和同学们、老师、校长最有可能上移出来,谁年纪大听谁的。这样一种协商后的达成统一的规则,就叫做共识机制。
在前面,我们了解够在中本聪之前有很多的虚拟货币的尝试,其中有以为叫戴维的密码学专家,不知道是否还记得,他发明了匿名的、分布式的电子加密货币系统B-money, 实现了点对点的交易和不可更改的交易记录。为什么B-money没有成功呢?因为在B-Money系统中,每个节点分别记录自己的账本,这不可避免的会产生节点间的不一致。戴维为此设计了复杂的奖惩机制,但并没有从根本上解决问题。
由此可见,一个设计精妙、实际操作起来简单的共同机制是一个分布式的体系能够顺利运转下去的关键所在。简而言之,共识机制就是解决达成共识的依据,也就是区块链的核心之一,它使得去中心化的体系能够公共维护同一个账本。目前比较知名的共识机制有:工作量证明(Pow)和权益证明(PoS)。
早期大部分区块链都是模仿比特币,实行工作量证明。这里再讲一下比特币的共识机制,工作量证明和最长链机制。
之前我们讲过英国的密码学家亚当(Adam Back)。贝壳1997年发明了哈希现金(Hashcash),就是用工作量证明系统(Proof Of Work)这个方法来解决了互联网垃圾邮件问题。它要求计算机在获得发送信息权限之前做一定的计算工作,这对正常的信息传播来讲,几乎很难擦觉,但是对向全网大量散布式垃圾信息的计算机来说,就成为了巨大的工作量和负担。在比特币之前,哈希现金被用于垃圾邮件的过滤,也被微
软用于Hotmail\Outlook等产品中。
工作量证明
工作量证明,简单的说就是一份证明,用来确认你做过一定量的工作。你拿到了大学的毕业证,能够可观证明你进行过大学4年的学习,具备一个大学生的学习呢你。前面讲过,监测工作的整个过程通常是效率极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,这样的方式是一种非常高效的方式。
比特币的工作量证明,关于挖矿、算力,我们之间已经系统的学习过,这里不再详细描述。这里再来说说最长链机制。一般区块链网络为了长久的发展下去,都会要求所有节点遵守一个公式,就是所有保存到本地的区块链,都必须是被本地节点验证通过的最长链。由于区块链的每个区块都必须引用它的上一个区块,所以最长链是最难推翻的。
那么,如何来保证最长链呢?理论上,矿工可以在任意区块的基础上开始计算下一个区块的。但只有最长区块链上的区块才能获得系统的承认并得到挖矿奖励。打包区块获得的奖励只有在该区块上被增加之后才能获得使用。也就是说,如果你是矿工,你挖出来了新的区块,你获得了新生的比特币奖励,只有往后诞生了99个区块之后,你才能动用这个区块里的奖励。这是保证区块链不发生分裂的重要机制。
回到工作量证明,虽然工作量证明很公平,然而对它大家也有一些批评。一个常见的职责就是消耗能源,因为节点进行运算力竞赛是需要消耗电力的。在比特币的挖矿介绍中,我们了解电力占挖矿成本中很大的比重,就可以实际感受到工作量证明的对于能够消耗是很大的。
权益证明
“权益证明”,和比特币“工作量证明”相应对应的另外一种共识机制。“权益证明”是根据你在这个网络里拥有多少币的多少来竞争记账权力,反正如果你持有的币越多,你的记账权力的获取概率就越大,这种证明机制在一定程度上缩短了共识的达成时间,也不再需要大量消耗能源挖矿。简而言之“持有越多,活的记账权力概率越大”,这种共识机制叫“权益证明”。
你可能会问,在这个共识机制下,是不是我买入大量的币,就能获得在这个网络里的话语权?这里介绍一下“币龄”这概念,也就是数字货币年龄。我们之前学过,UTXO(Unspen Transaction Output)是躺在你的地址里还没有花出去的币。在比特币世界里,UTXO所位于区块的高度与当前最长链高度之间的差值决定着该笔Unspent的币龄的大小,差值越大,币龄越大,差值越小,币龄越小。如果你花费了这个UTXO,也就代表着这个币龄被消耗了。举个例子,你的朋友之前转给
了你1枚比特币,这笔交易被矿工42万个区块高度时打包。现在的区块高度是48万,到目前为止你还没有把这枚比特币花出去。那么你有的这枚比特币的币龄6万,你的权益能力是6万*1枚=6万。假设全网的UTXO加起来的币乘以币龄是1000亿,那么你进行记账并获得奖励的概率是一千万分之六。在PoS机制里,拥有币和币龄越高的节点拥有着越高产生新区块的权力。简单来说,就是你拥有的越多币,并且你拥有的币的币龄越久,就有可能获得记账权的概率越大。这一段是否有点烧脑?建议多看两遍,就明白其中的奥妙了。
由于工作量证明带来的能源消耗和其他缺陷,越来越多的区块链项目开始抛弃原来单一的工作量证明,开始实行工作量证明+权益证明的混合共识机制。以太坊的设计也是在后期会由工作量证明转换成为权益证明共识机制。而真正将权益证明共识机制运用起来的区块链项目早在2012年就诞生了,中文名字叫点点币,英文名叫PeerCoin,由一个叫山尼.金Sunny King的匿名极客开发出来的。
除了工作量证明和权益证明之外,其他的共识机制还没有股份授权证明机制(DPoS),它类似于董事会投票,持币者投出一定数量票,代理他们进行验证和记账。另外还有燃烧证明(PoB, Proof of Burn)、沉淀证明(PoD, Proof of Deposit)、能力证明(PoC,Proof of Capactiy)、消失时间证明(PoET, Proof of Elapsed Time)等方案。这些方案都目前还不够成熟,你如果有兴趣,可以在网上搜索了解一下。