专栏名称: Hi区块链
可能是最靠谱不忽悠的区块链资讯平台
目录
相关文章推荐
51好读  ›  专栏  ›  Hi区块链

坐看邻国领袖打高尔夫球

Hi区块链  · 公众号  ·  · 2018-02-21 15:32

正文

Hi区块链

可能是 最靠谱 不忽悠 的区块链资讯平台


导读

这是汤强区块链系列文章之:深入解析DPOS, 更多精彩干货,请关注公众号“汤强”。

DPOS就像一个公司一样运行,股东们选出董事会,董事会成员轮流生产区块,验证通过后上链。区块生产者既没有创造无效区块的权力,也没有改变社区共识的权利。

这些共识算法就是平时人与人之间达成共识的方式,BM做的事只是用代码提高了达成共识的速度,在无声无息间熨平了所有纷扰,携手向前。


1994年,金二胖第一次摸高尔夫球杆,本应挥汗如雨地练习挥杆,但老人家偏偏脸不红心、不跳地11次一杆进洞,最后领先第二名37杆夺魁,坐实“宇宙伟人”称号。

据朝鲜媒体说:证明他成绩的是11名贴身警卫。

图1 金正日的高尔夫球成绩板

2011年,二胖的逝世堪称高尔夫界一大损失,但同时使得全球高尔夫球手排名自动上升一位,卢克·唐纳德终于松口气,确认自己是世界第一了。


我们借这个故事类比三个概念:

1、图1成绩板是 区块 ,记录“事实”。

2、金正日是 生产者 ,按其意愿生产区块。

3、11名警卫是 验证者 ,检验后让区块上链。


但如果换其他人当验证者,就不会认这个块,这就是为什么我们看成绩板不像事实更像段子的原因: 共识机制有故障,区块一定出问题


在所有共识机制中,存在两个根本问题:

1、谁生产区块?

2、谁验证区块?


一旦确定这两个问题后,那么一系列问题,都迎刃而解,比如:何时生产区块、如何验证区块、接在哪个区块后面生产下一个区块等。

我们邻国的共识算法是让生产者和验证者合二为一:都是金sir一个人,全网拿他没办法,于是生产出来的区块总是很清奇,比如徒手砸卫星:

图2 邻国课本佳篇欣赏《金正日爷爷认错》节选

https://www.douban.com/group/topic/10038166/


邻国的共识算法之外,还有我们熟悉的 工作量证明(POW) 权益证明(POS) 两种算法,它们生产的区块可不是成绩板或教科书,而是你资产的踪迹——交易信息。


POW算法让所有算力一起竞争猜随机数,第一个猜到的好运人士有资格生产区块,同时全网节点都是验证者。

POW虽然安全,但效率偏低,比如比特币:10分钟只能记2000多笔账,原因是矿工把99.99%的精力都花在找随机数上,哪个矿工胆敢沉迷记账而不找随机数,他的下场就是一毛钱奖励都拿不到,白白燃烧电和电脑。

POS算法中,全网节点都是生产者,持有权益者(持币者)负责验证。比如未来的以太坊:没有矿工,只有验证者,验证正确获得奖励,验证错误没收押金。

POW与POS两种共识算法不仅能抗住一些恶意节点、达成正确共识,而且被实践证明可行。但,它们是否是最安全、最快速的共识算法呢?

至少现在看来不是,因为有DPOS。

一、什么是DPOS?

Delegated Proof of Stake —— 代理权益证明。 这是一种基于投票选举的共识算法,有点像人民代表大会:

持有权益者(持币者)有资格选出生产者,如果生产者正确记录,那大家鼓掌;如果生产者不称职,那下次就不选它。

DPOS是否安全呢?至少比人民代表大会安全,因为算法要求系统做三件事:

第一,随机指定生产者出场顺序;
第二,不按顺序生产的区块无效;
第三,每过一个周期洗牌一次,打乱原有顺序;

于是,没有节点能像邻国领袖那样,垄断生产者或验证者的岗位。所以,谦虚地说是“安全”,嚣张点说是“牢不可破”,正常运行三年的Bitshare和一年多的Steemit已经说明了这一点。

DPOS下,生产者做的工作有点像比特币的矿池,不同的是,生产者不再花任何精力找随机数,只把全部精力投在生产正确的区块上。

我们通过第一季的文章已知:找随机数的工作劳心费神,很慢,DPOS不找随机数,只验证交易,而验证工作又极其简单。所以,DPOS的出块速度犹如飞电过隙珠翻荷。

如果你只想记住DPOS的一个属性,那就是快。

货比三家一下吧:

基于POW的比特币每秒处理7笔交易;
基于POW和POS的以太坊每秒处理15笔交易;
基于DPOS的比特股(BTS)每秒能处理超10万的交易量。

而且,DPOS允许所有矿池每三秒钟轮换一次,并且其他人已被安排在后续进程中,于是,没有人可以在预设位置外生产区块。

这意味着,生产者之间没有争夺,也不会遗漏区块,每三秒会有一个区块,理论上来说,矿池能做同样的事情,只是比特币和以太坊待共识算法不允许这样做。

那DPOS具体是如何运作的呢?

二、DPOS的运行方式

下文大面积借鉴《DPOS共识算法——缺失的白皮书》内容,实在找不到更能清晰描述DPOS的文字,因为此文作者就是算法发明人:Dan Larimer,网名Byte Master,大家习惯称他BM。


图3 DPOS共识算法发明人:BM

BM他假设一个最简模型:有3个区块生产者:

A、B、C


另外,有两个朴素的前提:

1、最长链胜出

2、诚实节点总是追随有效更长链


基于此,BM开始解释DPOS如何运行,共有六种场景:


1、天下太平的正常情况:生产者按系统排序生产区块。

注意,千万别看反了。上图的意思是:从左边的A开始生产区块,B接在A后面产块,C接在B后面产块,然后轮回到A,以此类推。


这种顺位是系统安排的,生产者在系统调度轮次之外生产的区块都无效。


2、总有不良节点搞事情:少数人的小分叉。


由于生产者顺位由系统安排,所以少数人在出块速度上注定比多数人慢: 恶意的 少数节点产一个块时,正常的多数节点至少产两个 。于是,诚实的2/3多数节点产的链永远比少数节点长。


少数人的鸡飞狗跳丝毫不会影响高铁向前奔腾


3、断网:网络碎片化

断网会导致任何分叉上都没有绝对多数的生成者。此时,最长的链将倒向最大的那个少数群体。但当网络恢复时,较小的少数群体会切换到最长的那条链,以恢复并修正共识。


可能存在这样三个分叉:其中两个最长的分叉长度相同。在这种情况下,第3个(较小)分叉的块生产者重新加入网络时会打破平局。 只要块生产者总数为奇数,不可能长时间保持平局。


另外,生产者的顺位会被系统“洗牌”,这使得出块顺序随机化,从而确保即使是生产者数目相同的两个分叉也会以不同的步长增长,最终导致一个分叉超过另一个。


4、双重生产:少数人多产两个块


少数节点B在其时间段内产生了两个或更多可供选择的块。下一个计划生产者C可以选择跟在B产生的任何一个区块后构建链条。一旦如此,这个选择就成为最长的链,而所有选择B1的节点都将切换分叉。

所以,少数恶意节点企图广播再多的替代块也无关紧要,它们当最长链的光景永远不会超过一轮。


5、最后不可逆的区块


在网络碎片化的情况下,多个分叉都可能持续变长。长远来看,最长的链终将获胜,但观察者需要一种确切的手段来判定一个块是否绝对处于增长最快的那条链。







请到「今天看啥」查看全文