共识与共识机制

相信区块链的共识和共识机制是大家谈的最多的,但是真正能够理解的可能不是太多,尤其对非技术人员而言。而一些别有用心者就故意混淆这两者的差别,以达到自身某种目的。

image

定义

首先,我们可以简单下个定义:

共识:系统里大家都能认可的一种结果。

共识机制:系统中获取共识的方法。

在目前的区块链中:

共识:大家认可的交易记录

共识机制:使交易记录大家都认可的方法。

image

原因

  • 为什么要有共识机制

在区块链中,节点之间通过数据通信进行沟通,只要符合某一种区块链约定的数据格式,任何一个节点都可以加入到这个区块链系统中。也就是说,每个节点可以使用任意编写的程序来攻击区块链获取利益。

  • 矿工的本质

目前区块链矿工的本质是记账,每个矿工监听网络中广播的交易信息,并且把这些信息记录下来。由于系统中有大量的矿工存在,因此需要一种方法来确认是哪个矿工记的帐有效。有效记账就称为出块

  • 共识机制的本质

在去中心化的系统里,每个记账节点(矿工)都会维护一个账本,当他自己在记账的时候,会检查前面的记录是否有效,同时也希望自己记的账被别人认可有效--因为一旦认可有效,他就能得到相应的奖励

这时候,每个矿工的利益最大化的方法就是让自己的记录的账本被别人认可。从矿工的利益来说,最好就是把记账权尽可能地抢到手,让自己出块,但从系统的角度来说,这是一个巨大的安全问题:

如果出块成功的节点总是某一个或是某几个,那么这个或是这组节点就可以做假,比如:把以前某个交易记录删除,这样,某个交易的接收者当时以为收么币了,但是过一阵子后,币却消失不见了,而且没有任何记录可以查到。想想当年的新闻,某人的银行账号里突然多了几个亿,过会儿又莫名消失了的故事.......

因此系统想要安全,就必须让出块节点尽可能的分散,因为在这种情况下,某个节点如果记了假账,会被其的记账节点推翻。

因此,我们可以简单地看待共识机制共识机制本质就是一种让出块的节点尽可能随机和分散的方法。

image

问题及解决方案

看到这里,大家可能会想,这么简单啊,那系统不断生成一个随机数,大家按照这个随机数匹配出块节点不就行了么?问题就在这时,系统没有一个中心,所以没有一个节点可以生成大家认可的随机数--谁知道你的随机数是不是真的随机啊,而且假随机的可能性大于真随机的可能啊。

共识机制的设计本质就是寻找一种能够使出块节点随机化的方法。

image

常见共识机制及其安全性分析

PoW机制

通过时刻使出块节点随机化:那在这么一个去中心化的系统中,有什么是可信的?每个人信自己嘛,交易和出块的结果数据到达我这里的时刻,是无法作假的:数据可能会延时到达(由于网络延时),但绝对不会提前到达(除非时光倒流)。我们可以设计一种机制,让每个节点的记账结果必须达到某个条件,每个节点都认第一个达到这个条件的节点的记录。

Proof-Of-Work,每个节点在记账的同时,按照某种规则找一个随机数,通过这个随机数可以算出某个符合条件的(哈希)值,谁第一个找到的,他就出块成功。这个找随机数的过程就是不断调整随机数-->计算的过程,只要这种算法能够足够离散(这一次和下一次的计算没有任何关联,随机数的变化导致计算结果变化足够离散),那么就能够实现出块节点的随机化。

举个简单的例子,如果算法得到的哈希值总是在0-10000之间,而算法要求得到的(哈希值)小于1,一台机器如果一秒钟能够计算一次,那么平均计算一万次,就有一次值可能小于1;或者反过来说,每次计算,有万分之一的机会小于1。 如果有一万台节点同时在计算,那么每秒都有可能有一台节点得到符合条件的结果,得到符合条件结果的节点就是出块成功。而每一秒,得到结果的机器都可能不一样。这样就获得了足够随机的结果。

军备竞赛

有人说,我升级机器,把机器的算力提升到每秒计算10次,那么他出块的几率就变成了万分之十,其它人一看,我也可以啊,于是大家都升级机器。这样,军备大赛就开始了,提升机器需要花钱,算力提供了功耗增加,但是只要产出大于投入,大家都会不断升级。

难度值

可能有人发现了问题,大家算力都提高了十倍,本来平均一秒钟才能够算出来的值,现在0.1秒就算出来了,那最后岂不是快的啥事都干 了 ,就是算着玩 ,这样大家都受不了,还有什么意义?

算算术只是为了实现随机,本质还是要记账啊。为了解决这个问题,引进了难度的概念,当算力提高了,本来大家希望1秒出一个块,结果有人算力提高了,0.5秒就出块了,怎么办?增加难度啊,本来小于1的,现在大家都要求结果小于0.5嘛,于是算力提高了一倍,难度提高了一倍,结果出块的时间还是接近1秒。如果算力提高了10倍怎么办?要求结果小于0.1啊。

有了难度值后,随着军备竞赛的发展,算力越来越高,但是出块的时间保持不变,第一个想到这个的中本聪太牛了!

PoW中的TPS

TPS(throughout per second)是吞吐量的意思,也就是每秒可以执行的交易数。刚入行的就会觉得奇怪,为什么网络带宽、CPU性能不断提升,比特币和以太坊的TPS却只有那么多?

前面讲到出块,系统通过难度值的调整,比特币把出块的时间固定在10-15分钟时间内,以太坊把出块时间固定在12秒左右。而每一个块的大小是有限制的,因此每个块之内的交易笔数是有限的。TPS=每块最大交易笔数/出块时间。因此在系统在设计之初的算法上就固定了TPS数了。

由于TPS=每块最大交易笔数/出块时间,增加TPS的方法就很简单了:

扩大分子:扩大每个区块的容量,比如说BCH就是这么干的。

减小分母:即缩短出块时间,从比特币到以太坊就是减小了分母。

但是这个是有限的,区块大小总是有限的,总不至于每个区块几百M吧。缩短出块时间也是有限的,因为网络有延时,缩小到一定的程度的时候,节点之间的数据来不及同步了。

POS

Proof-Of-Stake,权益证明。

PoW机制很好用,但是有个问题,军备竞赛后,太耗电了,都是做些无意义的计算,除了这个结果和到达时间之外,还有什么可信的数据作为随机值的呢?有想到一个新的点子,每个人存在账号里的币的数量是不一样的么 ,是不是可以用来作为一种随机数呢?

想想也可以啊,每一次出块的时候,出块节点(账号)里谁的币最多,就认谁的。但这样有个问题:币最多的岂不是一直在出块?

加个币龄,某个账号(节点)一旦出块成功,币龄就清零,如果没有出块成功,币龄就加上。

比如账号A有7个币,B有8个币,C有3个币

初始币龄值 : A: 7, B: 8, C :3 第一轮: B出块

第一轮后币龄:A:14, B:0,C:6 第二轮 A出块

第二轮后币龄:A:0,B:8,C:9 第三轮:C出块

第三轮后币龄:A:7 B:16,C:0

通过上述结果,可以看到达到了随机出块的效果,而且没有额外耗电的计算。但是POS有两个问题:

  1. 如果币被集中在一些人手机,这些人的节点的出块概率非常高;

  2. 如果轮到某个节点出块,最后他没出怎么办?

DPoS

在PoS的基础上,有人就想了,哦,去中心化的意思就是不要在一个节点上出块啊,那我选出一些节点,让这些节点轮流出块不就可以了么。于是就有了DPoS(delegated Proof-Of-Stake),我们选出一些节点,让这些节点为大家服务,他们来出块,OK,省事又省心。

慢着,这个好像有点不对味啊,去中心化的方法是让出块节点尽可能的分散,防止总是由某一个或是一些节点出块,因此如果总是他们出块,那他们完全就可以为所欲为啊,这个dPos岂不是与这个原则背道而驰?

这个结论部分正确,因为区块链不仅仅有公链,还有联盟链的存在。比如说各国海关设立一个联盟链,他们代表各自国家的利益,因此是处于互联监督的状态,再说,他们如果联合作恶,没有作恶的对象啊,因此没有联合作恶的意义和条件。

那dPos在公链上会有什么后果呢?dPos在公链上有主节点,备选节点,还有广大的币民,DPoS主节点联合作恶的前提条件就是他们作恶的收益大于成本(愿赌服输,输家最后可能会抛弃这个链)。这个前提会不会存在呢?见仁见智吧:)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容