正文
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多数节点产的链永远比少数节点长。