专栏首页企鹅号快讯区块链学堂——深入浅出共识机制

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

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

什么是共识?

在理解共识的概念之前,先简单粗爆地假设——咱们村有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人。

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

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

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

本文来自企鹅号 - 全球大搜罗媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习三人行-神奇的分类回归决策树

    系列五我们一起学习并实战了支持向量机的分类和回归,见下面链接: 文末附代码关键字,回复即可下载。 今天,我们一起学习下决策树算法,该算法和SVM一样,既可以用来...

    企鹅号小编
  • 2018值得尝试的无参数全局优化新算法,所有测试取得最优结果

    有一个常见的问题:你想使用某个机器学习算法,但它总有一些难搞的超参数。例如权重衰减大小,高斯核宽度等等。算法不会设置这些参数,而是需要你去决定它们的值。如果不把...

    企鹅号小编
  • 解密区块链(四):什么是共识机制

    区块链是一个融合了点对点传输(P2P),加密算法等技术的分布式数据库,它必须基于计算机网络来进行。 ? 分布式记账的方式带来了的好处就是大家都来记账,每个人手里...

    企鹅号小编
  • tensorflow学习笔记(三):损失函数

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u01...

    ke1th
  • 区块链共识算法

      依赖机器进行数学运算来获取记账权,资源消耗相比其它共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点...

    JouyPub
  • 程序员小白入行区块链的六种方式

    区块链大本营
  • 装饰者模式、观察者模式、拦截器模式及其Go语言实现

    (1)什么是装饰者模式? 装饰者模式是在不使用继承和不改变原类文件的情况下,动态地扩展一个对象的功能。在设计模式的八大原则中,开闭原则规定了对扩展开放,对修改...

    魏晓蕾
  • caffe安装过程中遇到的问题以及解决方法

    1. 在安装依赖库的时候,遇到: @gxjun-Latitude-E5440:~$ sudo apt-get install libatlas-base-de...

    Gxjun
  • 面试:Spring Boot项目怎么用AOP

    将通用的逻辑用AOP技术实现可以极大的简化程序的编写,例如验签、鉴权等。Spring的声明式事务也是通过AOP技术实现的。 Spring的AOP技术主要有4个...

    用户5546570
  • 为什么很多人觉得C语言只要学会了指针基本上差不多掌握这门语言?

    从事嵌入式开发十几年,只要使用的编程语言有三种,C/C++ Java三种,其中C语言使用的时间最长,这门编程语言的最大特别是语法细节简介,但是灵活性非常强,从大...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券