前言
以下文章有关DPoS共识机制的部分撷取自DPOS Consensus Algorithm - The Missing White Paper一文,有兴趣的读者可以点击连结阅读原文。本文并同时参考了《区块链与新经济》这本书的内容撰写。
暨复式簿记后,记帐上的第二次重大革命--分布式帐本
有人说过:“复式簿记法”(double-entry bookkeeping ledger)是人类历史上最伟大的发明,因为它促进了整个资本主义的兴盛。
复式簿记法是在500年前被发明出来的,它最简单的概念就是:有进必有出、借贷必平衡,在结构上具有不重复、不遗漏的特征,便于审计(audit)。
没有学过财务报表的人,可能会觉得这个概念听起来很抽象。
先来看一张资产负债表(Balance Sheet) 长什么样子?
左边是资产,右边是负债与股东权益,左边与右边的金额必定相等。
首先我在钱包里放了1000元,这时我的资产负债表就会变成:
资产 | 负债与权益 |
---|---|
现金: 1000 | 权益: 1000 |
我在帐户内投入了1000元,使可用现金多出1000元。
今天我拿了100元去买咖啡,当这笔交易产生时,我会借记费用、贷记现金,费用在结算时会作为股东权益的减少,这时我的资产负债表就会变成:
资产 | 负债与权益 |
---|---|
现金: �900 | 权益: 900 |
分布式记帐技术(也就是区块链技术)沿袭了复式簿记法的精神,每一笔交易必定有输入(Inputs)与输出(Outputs),输入是“钱从哪里来”,输出则是“钱流向哪里”(如下图所示)。
在分布式帐本的世界里,每一笔交易要被验证,记录到区块中,最重要的核心过程就是达成网络中各节点(node)的“共识”。
共识算法
共识算法目前最主要有三种:PoW、PoS、DPoS。
PoW
PoW 工作量证明是最早被比特币采用的共识算法,背后运作的原理是为信息的传递加入了成本,借此减少假信息传递的诱因。工作量证明的核心特征是不对称性,验证者在大量地试错(Trial and Error)后才能找到正确的数值(通常要花10分钟左右),而当数值被找出来后,其他人可以轻易地反向验证这个值的正确性。
PoW最大的缺点在于,在一个有效的信息被验证之前,会有大量的无效值先被计算出来,浪费了大量的电力能源,除了运算不具效率外,也很容易使算力集中在少数人手里,即资本足够大的少数矿池拥有记帐权。
PoW的缺点:耗能、效率低、记帐权向资本集中。
PoS
PoS 权益证明隐含的概念是:帐本理应由持有最大经济利益的人去维护。如果是以一家企业作为比方,持有最大经济利益的就是股东,所以公司的每个重大决策都必须股东会投票决议通过后才能执行(看议案的重大程度,可以是1/2以上表决通过,或是2/3)。
PoS计算权重靠的是“币天数销毁量”
币天数代表一个特定的币距离最后一次在网路上交易的时间。假设我在2017/1/1买了10个币,一直到2017/6/30前我都没有交易。我在2017/7/1用10个币买了一杯咖啡,这时我的“币天数销毁量”就是10*180天,总量共1,800单位。
以挖矿来说,某个矿工节点,一旦挖到新区块后,他的币天数就会被归零,并重新开始计数(币天销毁)。同时间一起参与挖矿的其他矿工,虽然没有成功挖到区块,但他的币因为没有产生交易,所以币天数还能继续保留计算。
在给定的时间点下,只存在有限的币天数,币天数在那些长期持有大量货币结余的人手中持续增加。币天数可以被视为在网络中权益的代表。每当这些币有交易时,币天数即被销毁,因此不能被重复使用。
这和一般股权制的企业相比下,会出现一个问题,一般股份公司是按照某个时间基准日时,股东名册的持股数量,决定股东在股东会上的表决权有多少;而在PoS制度下,持币期间很长的人理所当然地说话就可以比较大声,渐渐会演变成只有长期持有的大股东能说话,小股东完全没有置喙的余地。大多数资源与记帐权集中在少数人手里,这个币的流通性也会渐渐衰弱。
PoS: 解决了PoW的效率难题(约每5秒产生一个区块),但只要时间一久,最终也会有记帐权分配不均的现象。因为只要够早进入、持币够久,就有话语权,权力最终还是向资本集中。
DPoS
DPoS 股份授权证明机制引入了“受托人”的角色。
DPoS 的运作机制如下:
所有持币者先选出受托人负责签署区块:选举过程比较类似由股东会选举出董事会(101人代表),代替股东会做出日常营运决策。授权董事会后,决策会更有效率 (相较于PoW每10分钟产生一个区块,DPoS每3秒钟即可产生一个区块。)
与PoW相同,DPoS的规则也是最长链胜出。其中每个受托人必须按照生产排程,轮流产生区块,拿一间工厂作为比方,假设排程排定A、B、C分别轮早、中、晚班生产,A在晚上是无法刷门禁卡进入厂房生产的,同样地,C在早班时段也是无法进厂房的。
- 今天有一些恶意的节点生产了分叉区块,假设A、C都是诚实的节点,只有B节点是恶意的,由于B产生区块的速度(每9秒只能产生1个)慢于A、C合力产生区块的速度(每9秒产生2个),根据最长链胜出的规则,诚实的节点还是会胜出。
- 同理,因为一个节点要产生重复两个区块的速度必定慢于诚实区块产生的速度,所以根据最长链胜出的规则,诚实的节点还是会胜出。
- 如果今天A、B、C三个受托人的网络有段时间是碎片化、各自为政的呢?在短期内的确有可能三链并行,但一旦网络连结恢复,短链自然会向最长的链回归。
因为受托可签署人数为奇数,所以两大派系势均力敌僵持不下的情况不会维持太久,最终势必会有其中一方的链更长。
对恶意节点的惩罚
注册成为候选受托人需要支付一笔保证金(约10 XTS),就像是参与民意代表选举前缴纳的保证金一样,一般来说担任受托人约两周后才可达到损益平衡,这促进了受托人的稳定性,确保至少会挖满两周的矿。
惩罚机制为:不按排程产生区块的节点将在下一轮被投票剔除,也会被没收之前缴纳的保证金。
DPoS优缺点:优点是效率较PoW和PoS更高、产生区块的速度更快;
缺点是虽然恶意的节点将在下一轮投票被踢出,但单个恶意区块在短期仍有可能是有效的状态。
短期虽然可能存在恶意区块,但长期下来,可以透过受托人的自主选择来回归链条的有效性:
假定现在总共有3个受托人A、B、C,D加入排程后,只要确认之前的区块中,有2/3以上个受托人遵循的链是哪条就可以了。
小结
DPoS制度下,汰换恶意节点的频率是关键,虽然照上面的场景来看,长期都会回归有效正确的区块,但短期来看,恶意节点产生的glitch也可能对整体健全具有破坏性。