区块链DPoS共识机制的研究与改进

2019-04-08 00:48谈森鹏杨超
现代计算机 2019年6期
关键词:检查点代币记账

谈森鹏,杨超

(上海师范大学信息与机电学院,上海201400)

0 引言

探寻区块链的机制和发展,比特币永远是无法绕过的话题。区块链作为一种独立的技术出现,最早可以追溯到比特币系统中。2008年一个笔名为中本聪(Satoshi Nakamoto)的人(或团队)发布了一篇名为《比特币:一种点对点的电子现金系统》的文章,又在2009年公开了其早期的实现代码,比特币就此诞生[1]。

区块链的诞生,标志着人类开始构建真正可以信任的互联网[2-4]。区块链能够在网络中建立点对点之间可靠的信任,使得价值传递过程去除了中介的干扰,既公开信息又保护隐私,既共同决策又保护个体权益,这种机制提高了价值交互的效率并降低了成本。而共识机制作为区块链的灵魂,解决了在互不信任或若信任的参与者之间达成共识的问题。

分布式系统的共识达成需要依赖可靠的共识机制,共识机制通常解决的是分布式系统中由哪个节点发起提案,以及其他节点如何就这个提案达成一致的问题。我们根据传统分布式系统与区块链系统间的区别,将共识机制分为可信节点间的共识机制与不可信节点间的共识机制。前者已经被深入研究,并且在现在流行的分布式系统中广泛应用,其中Paxos[5]和Raft及其相应变种算法最为著名。对于后者,虽然也早被研究,但直到近年区块链技术发展如火如荼,相关共识机制才得到大量应用。而根据应用场景的不同,后者又分为以 PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,股权证明)和 DPoS(Delegated Proof Of Stake,股权授权证明)等算法为代表的适用于公链的共识算法和以 PBFT(Practical Byzantine Fault Tolerance,拜占庭容错)及其变种算法为代表的适用于联盟链或私有链的共识算法。

但区块链技术处于前期发展阶段,现今出现的这些共识机制都存在一定的问题,本文根据DPoS中存在的问题进行优化改进,提出投票激励机制配合节点互评两种核心方案来提升社区活跃度,以及及时对恶意节点进行剔除和惩罚,促进系统始终保持高安全和高效率。

1 共识机制

所谓共识,是指多方参与的节点在预设规则下,通过节点交互对某些数据、行为或流程达成一致的过程。共识机制是指定义共识过程的算法、协议和规则。

1.1 工作量证明

PoW共识机制[6]通过各节点进行哈希运算,第一个运算出达到要求的结果的节点获得记账权,再由此节点生成一个区块,将十分钟内发生的交易打包装进区块并全网广播以供其他节点验证,验证完成则获得一定的收益。比特币和以太坊都采用PoW共识机制来进行共识,并成功运行至今。虽然PoW共识机制为比特币和以太坊的飞速发展提供了良好的基础,但它的能源消耗过多和共识时间过长导致的交易速度太慢等问题广受诟病。

1.2 股权证明

PoS共识机制是为解决PoW在资源浪费和达成共识所耗时间过长而提出的替代者。PoS共识机制的实质是一种依据币龄来决定节点获得记账所有权的概率[7]。所谓币龄,就是持有币的数额与持有天数的乘积。可以说币龄越高,节点越容易获得记账权。故PoS相较于PoW通过算力获得记账权而言,大大降低了资源的浪费,也缩短了达成共识所耗费的时间。但PoS依旧需要挖矿,本质上没有解决问题,而且会降低虚拟货币的流通性提高中心化的风险。

1.3 拜占庭容错

PBFT共识机制是针对拜占庭将军问题[8]而提出的。PBFT主要由一致性协议、视图更换协议和检查点协议组成[9]。一致性协议保证区块在全网达成一致,在总结点个数为3f+1的情况下能容纳f个错误节点。检查点协议的主要目的是维护节点所储信息的规模,减轻节点的存储负担,同时同步系统状态不一致的节点。PBFT在视图切换协议中提出了View(视图)概念,View是达成一致的节点群,在一个View中,只有一个主节点,其余均为备份节点。主节点将客户端的请求排好序,然后广播给备份节点,但主节点可能会是拜占庭的。所以备份节点有职责主动检查主节点排序的合法性,并通过timeout机制检测主节点是否宕机。当出现异常出现,则触发View Change(视图切换)下个编号的节点成为主节点以保证系统稳定运行。IBM创建的Hyperledger 0.6版本就是使用该共识机制。虽然PBFT优化通信过程提高共识效率,但它的容错率相较于PoW和PoS偏低[10]。

1.4 股权授权证明

DPoS共识机制[11]通过代币持有者投票,选出101个节点,对中心化作出了一定的妥协。通过减少节点来实现秒级验证,进一步降低网络能耗和运行成本。但当投票选出的101个节点中出现恶意节点,DPoS对恶意节点的处理存在诸多困难,因为投票亦不能有效地阻止恶意节点的出现,而且还会存在投票不积极的问题致使不能及时处理恶意节点,会给网络安全造成隐患。

2 DPoS共识机制改进方案

本文引入投票激励机制以及PBFT的检查点协议,针对DPoS共识机制投票的积极性不高和对恶意节点的不能及时有效地处理等问题,提出投票激励机制和检查点协议两种核心方案。通过投票激励机制可以鼓励代币持有者积极投票,选出相对公正的101个节点,配合检查点协议,通过101个节点间互相检查,做到及时删除恶意节点。下面给出了投票激励机制和检查点协议的详细介绍。

2.1 投票激励机制

由于DPoS共识机制需要从竞选节点中选出101个节点来轮流执行区块链的记账和上链等职责,但由于缺乏对投票的激励机制,致使广大代币持有者投票积极性不高,最终导致票选出101个节点耗费了大量的时间效率不高。

故本文提出了投票激励机制,以奖励投票的代币持有者,减少票选101个节点以及其他去要投票的场景所耗时间,提高效率。

社区发起投票活动时,代币持有者从投票到获得收益需要两个阶段。具体步骤如下:

①代币持有者进行投票,至投票活动结束时,对投票者是否有资格后的收益及获得多少收益进行清算。

②当计算完收益后,投票者并不能立刻收到奖励,需要经过锁定期才能获得奖励。

奖励公式:

以投票选出101个节点为例,其中VOTES为投票数,与投票者所持代币数量一比一的关系。N为常数,表示此次奖励总数。I只有1和0两个值,表示投票者是否有权获得奖励,例如:投票者所投的竞选节点是否成为最终节点。T与投票者投票的日期相关,投票者投票的日期与社区发起投票的日期相差越大,则T越小。

2.2 检查点协议

在PBFT中存在主节点(primary)和从节点(replica)两种角色。一次共识中只有一个主节点,其他都为从节点。主节点负责对一段时间内的交易进行验证,通过验证的交易被打包进区块,最后上链。这一概念与DPoS的101个节点的概念类似。在DPoS中101个节点轮流获得记账权,获得记账权的节点与PBFT主节点的职责大致相同,其余100个节点也与PBFT从节点的职责类似。在PBFT中,一旦主节点出现问题或为恶,可以立即进行试图切换,但在DPoS中,却无法及时删除有问题的节点。

故引入PBFT的检查点协议。在PBFT的检查点协议中,由于拜占庭服务器的存在,一致性协议并不能保证每一台服务器都执行了相同的请求,所以,不同服务器状态可能不一致。因此,设置周期性的检查点协议,将服务器同步到某一个相同状态。本文基于检查点协议添加了节点状态和惩罚机制。

(1)节点状态

为了有效防止恶意节点持续地产生无效区块或其他恶意行为,给101个节点都添加一个节点状态,本文将节点状态定义为4种,如表1所示。

表1 节点状态及权限

成为代理节点后,初始状态为Normal,多次产出有效区块,则状态转换为Good。当代理节点产出无效区块时,不管当前状态是Good或Normal,直接转换为Exception。代理节点若产出无效区块的次数超过标准定值,则节点状态转化为Error。

(2)惩罚机制

当代理节点状态转换为Exception时,会限制其权限,此时节点仅有参与检查点协议权限,轮空记账权。下一轮,其状态自动恢复为Normal,产出无效区块的次数累计不清空。

当代理节点的状态转换为Error时,首先节点不具备任何权限,其次会将其作为代理节点时间段内的收益锁定,并将其从代理节点中删除,此后不再具备竞选代理节点资格。

惩罚机制主要针对的是状态为Error的代理节点,因为其产出无效区块的累计次数超过了标准定值,故可认定其为恶意节点,需对其采取一定的惩罚措施。

3 实验与分析

本文引入PBFT的检查点协议与投票激励机制,对DPoS的恶意节点无法及时处理和效率两方面进行改善,由于投票激励机制更多的是与代币拥有着主观思想相关,本实验无法有效分析。故仅对DPoS引入检查点协议前后进行实验分析。

3.1 恶意节点处理速度比较

引入检查点协议的目的就是为了即使处理恶意节点提高效率。当系统中出现记账节点状态为Exception或Error时,恶意节点处理速度如图1所示。改进后相比于改进前,对恶意节点处理效率明显要更高效。该实验表明,改进后的DPoS在处理恶意节点时更为高效。

图1 DPoS改进前后对恶意节点处理速度对比

3.2 运行效率比较

随着改进后的DPoS对恶意节点的处理速度更快,相较于改进前的DPoS,它的运行效率更快,能够更高效地完成区块生成。图2为改进前后的DPoS的运行效率对比图。可以看到改进后的DPoS由于减少了处理恶意节点的时间,运行效率更快。

图2 DPoS改进前后每分钟确认交易量对比

4 结语

DPoS引入PBFT的检查点协议和投票激励机制很好地解决了无法及时剔除和惩罚恶意节点以及社区活跃度不高的问题,但仍然有许多地方需要优化。

区块链作为近几年的热点技术,最早出现在比特币中,而PoW共识机制作为比特币的基础,在互不信任的互联网中创造信任,让互不认识的人们协同工作产生价值。共识机制时区块链的核心基石,是区块链系统安全性的重要保障。PoW、PoS、DPoS、PBFT等共识机制在不同的场景又各自的优势。在不同的场景下,使用最合适的共识机制,显然现在的共识机制并不能满足所有场景,所以共识机制的研究还有很长的路要走。

猜你喜欢
检查点代币记账
Spark效用感知的检查点缓存并行清理策略①
财务自由第1步,从记账开始
记账类APP
记账理财的好处有哪些
央行等七部门叫停各类代币发行融资
央行等七部门叫停各类代币发行融资
央行等七部门叫停各类代币发行融资
代币“清零”
让手机帮你记账吧!