LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > DPoS投票系统的完善之路

DPoS投票系统的完善之路

2019-10-14 头等仓 来源:区块链网络

1570858611929616.png

Lisk研究导论

去年2月,Lisk的研究论坛上发表了一份关于改变投票机制的提案,提案遵循了Lisk改进提案流程,引发了大量关注和讨论。通常而言,投票和选举是一个富有争议的话题,Lisk也不例外。并不是每一个LIP提案都需要发表一篇博文,只是我们觉得把这个话题扩展到更广泛的社区很有必要。感谢每一位访问论坛的社区成员,以及分享自己对Lisk共识算法未来前景的看法。

很高兴地通知大家,Lisk已成功发布三个新LIP提案,助力“网络共识”路线图里程碑,同时吸收社区的反馈。

本文分为三部分。第一部分,描述我们自认为对投票机制最重要的属性,系统需要改进的地方,以及当前系统迫需更新的原因。第二部分,概述去年2月提出的提案以及社区成员提出的一些解决方案,以及更改路线图优化DPoS的原因。第三部分,详细介绍三个新LIP提案。每个提案在研究论坛都有专门的跟帖供讨论。

本文用到的术语

· 受托人:有兴趣成为区块锻造账户的人。通过Lisk Hub或Lisk Commander发出一个“注册受托人”交易成为受托人,任意账户都能注册,目前有1804位注册受托人。· 活跃的受托人:(在指定的一轮中)在一轮中被选为锻造区块的人,并获得此轮的区块奖励。· 投票权重:选票所受托人的支持数。当前,你的投票权重等于用户账户余额。在新的提案下,你可以选择自己要投票的权重。· 受托人权重:在筛选当中受托人的权重。权重高的受托人比权重低的受托人更可能获得锻造权。目前,受托人权重等于他们接收的选票总数。· 备选受托人:在给定一轮中不活跃的受托人。目前,这些受托人没有锻造区块的权利。在新的DPoS系统中,备选受托人将根据自己的权重成比例获得锻造权。

为什么选择改进投票机制?

在描述细节之前,先来定义与DPoS系统的选择相关的因素。也就是说,如何定义Lisk中筛选锻造受托人的流程以及规则?正如“更改为一账户一票”提案中的观点,没有完美的投票机制,取决于特定区块链的用例和规范,可以优先考虑特定属性。而Lisk,在看了社区的反馈(通过提案以及其他渠道收集)以及内部研究之后,我们得出了投票机制的5个属性:

· 去中心化:投票机制不鼓励投票团体或投票结盟。可以由于社区参与或社会因素成立这样的团体,但投票机制本身不鼓励。· 开放和公正:鼓励积极的个人来运行锻造节点。公平难以界定,但针对PoS系统,当锻造受托人接收的区块奖励与他们质押的代币成正比,就可以实现公平。· 安全性:鼓励利益相关者选举那些维护安全和有效网络的受托人。我们的DPoS系统也要对受托人实行某种问责制。也就是说,如果受托人不按规则行事,那么作弊行为被发现,受托人就会受到惩罚。· 高效:投票机制要高效地计算锻造受托人集。同时,投票交易不仅要小还要高效,这样网络就能更迅速地处理数据区块,而且随着选民增加,网络也能轻松实现扩展。· 灵活性:选民有投给自己喜欢的各个受托人不同的投票权重的自由。

为什么要改进DPoS机制?

当前的Lisk,每个账户至多投票给101位受托人,每个账户的权重也就等于账户的余额。投票机制面临三大挑战:

有可能形成联盟:当前投票的权重与票数无关。极大地刺激受托人结盟,彼此给彼此投票。Lisk区块链要成为一个去信任的系统,以去中心化来保障安全性。简单地说,投票机制不在经济上鼓励受托人结盟,而要尽可能保持去中心化。

门槛高:目前对于任何想成为活跃受托人的人来说,门槛都很高。例如,一个LSK总量支持率大约为5%的受托人可能与活跃受托人失之交臂。这点违背了PoS的核心原则,PoS主张的是锻造概率与帐户余额大致成正比。

复杂的受托人权重更新:在当前系统中,交易就意味着账户余额发生变化,而账户余额的变化又影响受托人权重。这给网络增加了很大的压力,影响效率。特别当一个区块打包一笔余额交易,而交易的发送人与接收人又正在投票给101位受托人的账户,效率更是低下。这笔交易更新需要更新节点数据库中200多个数值(因为这些账户正在给不同的受托人投票)。

为了深入探讨上述挑战解决方案,先来详细了解研究论坛上的三个提案。

先前的解决方案

一账户一票

讨论“更改投票机制”的路线图时,研究团队提出了“一账户一票”提案。在该提案下,一个账号只有一张选票,选票权重取决于账户余额。该提案解决了当前系统面临的三大难题:只允许账户投一票,消除结盟在数学上(多数人对少数人)的优势。同时,降低准入门槛,获得LSK总数1%的支持率就能成为一个活跃的受托人。另外,使受托人的计算变得非常高效。

但是,由于每个帐户只能投惟一一张票,因此充足的灵活性让用户根据自己的喜好投票。该提案引发了广泛的关注,提案你阅读相关完整讨论。

每轮按比例重新选举

cc001在研究论坛上提议,按受托人的总投票权重比,在每轮投票中随机重新选择锻造的受托人。该提案没有固定的活跃受托人集,每轮都重新选举锻造受托人。这种选举方式饶有趣味,事实上,我们用类似的方式选举两个备选受托人。

这种受托人选举方式也解决了上面三个难题。但据称在PoS系统中执行很困难,比如锻造受托人集不稳定和缺乏一个良好随机数来源。上面的研究论坛有关于该话题的讨论。

更改最大投票数

另一项关键提案提案保留现行的投票机制,但修改最高票数。名为“共识”的论坛成员提案将最高票数降低到20。这样一来,就能限制联盟互相投票的情况,提高网络的去中心化。从另一方面来说,“cc001”更倾向于将最高票数增加到131。这样账户就能为101名活跃受托人投票,获得奖励,并仍留出30票支持备选受托人。

总之,对Lisk来说,改变受托人的人数可能是朝着正确方向迈出的一步,但无法直接解决上面的三大难题。修改投票数量可以降低受托人相互投票的概率,或缓解高门槛问题。但没有降低复杂度,也没有增加当前系统的可靠性。所以我们需要一个更有说服力的提案。

在研究论坛上进行了大量的讨论和团队内部的其他研究之后。我们认为,上述提案不能完全解决当前的难题,亦或者某种情况会生成新的问题。在此感谢cc001, thepool, st3v3n_delegate, carbonara, carolina_delegate, 5an1ty, Matthew_Alexander, Santerr, hirish, korben3, Simon Warta, JesusTheHun, lisk.central在论坛讨论中的贡献。

更新开发路线图

鉴于目前投票机制存在不足,以及社区反馈较多,于是Lisk打算更新去年底提出的协议路线图时间表。“网络共识”的里程碑会先于“网络延寿”实现。也就意味着达到“网络经济”里程碑之后,就会更改投票机制和共识算法。

做出这一决定,是为了尽快更改DPoS系统和网络共识。我们认为改进共识比实现一个新的ID系统更重要。此外,“网络延寿”阶段包括“引入再生去中心化”目标。一旦DPoS的协议发生更改,实现“引入再生去中心化”的目标就更高效。

介绍三个新DPoS LIP提案

三个新新DPoS LIP提案重新定义了Lisk当中的锻造受托人机制。如果通过这三个LIP提案,则要引入新的投票交易、投票代币锁定机制、新的计算受托人权重方法以及新的按照权重筛选锻造受托人的方法。Lisk相信三个提案解决了Lisk共识算法面临的难题。三个提案允许用户支持他们最喜欢的受托人,用户的选票也具备相当大的权重,还激励个人运行单个锻造节点获得奖励。

同时违反共识规则的受托人及其选民将承担后果。因此投票变得需要慎重起来,建议你对自己要投的受托人做一些可用信息研究。

展示新的Lisk DPoS

新的投票机制

该LIP提案引入了投票锁定期,并重新定义了投票权重,提出要更改投票机制。Lisk提案选民在投票时要锁定自己的代币,进一步靠近PoS机制。这意味着投票更重要了(你的代币锁住了),但也更加灵活了(你可自行选择你每张选票锁定多少代币)。

1570862426191625.png

账户至多可以给10位受托人投票,但LSK代币只能投票一次。这样的好处是,譬如受托人“交换”选票就没有动机了。也就是受托人没有动力去结盟,因为受托人彼此要独立竞争每一枚票了。

也就意味着任意受托人获得总质押1/101的支持,就能成为一位活跃的受托人。这是PoS机制的一个重要特性,Lisk团队认为Lisk要满足这点。

1570862440312999.png

锁定的代币

即使代币被锁住了,用来投票的代币你仍可以自由使用。受托人无法访问你的这些投票代币。无论是怎样的情况,请不要在投票时给受托人发送代币。

取消投票也采取同类型的交易,但交易金额为负数。取消投票后,你需要等待一定时间才能解锁代币。选民等待时间为2000个区块,大约5小时40分钟。这样网络中的普通用户就能给自己喜欢的受托人投票,在短时间内就能重新恢复对自己代币的访问。受托人对Lisk不可或缺,他们担负着保护网络以及处理每笔交易的重任。因此受托人的承诺更有重要意义,也因此,受托人等待为自己投票(自投)的时间为30天。

鉴于受托人自投票的数量考虑,受托人权重的计算也进行了修改。新的受托人权重取最小值,即该受托人的自选票数乘以10倍以及该受托人所获得的全部票数(自选票数加上来自其他帐户的票数)中的最小值。这意味着受托人权重必须包含至少10%的自投票。

1570862458403640.png

这种计算受托人权重的新方法,使得受托人必须也自己锁定一部分代币。这样受托人对自己锻造的区块就会更加负责,变成一个额外激励安全的设置。

新的筛选机制

该LIP使用了基于Randao方案来选择备选受托人和重新筛选受托人列表,每轮引入两个锻造空位。现在一轮的长度是103个区块。两个新锻造空位会随机分配给两位备选受托人,随机性按照备选受托人的权重正比来筛选。

1570862477443459.png

第二个DPoS LIP提案定义了如何选择两个备选受托人,并分析了备选受托人预期的锻造空位数。如果所有备选受托人的总权重是1,000,000,而你的总权重是10,000,那么你将平均每50轮被选中一次。相当于每个月锻造50个区块。当然,这只是估计——受托人要锻造的区块实际数量是随机的,并且取决于备选受托人的数量和总权重。但总的来说,这种改进使得大多数注册的受托人能够锻造区块,这将鼓励它们运行一个节点并保护网络安全。

违反协议的惩罚

第三个 LIP Punish BFT罚规引入了一种方法,让用户来向网络报告受托人创建的冲突区块。路线图“安全性和可靠性”里程碑引入了更改协议的拜占庭共识集。 LIP Punish BFT规定了受托人们要遵守的规则,避免出现诸如“无质押”之类的PoS问题。但目前拜占庭共识协议没有鼓励诚实和惩罚不当行为的措施。该新LIP引入了一种“不当行为证据”的交易类型。该交易允许用户向网络披露任何受托人违反拜占庭共识协议的情况。这项提案还规定了违反协议的后果。

1570862506767873.png

简单地说,受惩罚的受托人90天内不得锻造区块。自选投票锁定90天,所有选民的投票锁定30天。

这样受托人才会真诚地尊重拜占庭共识规则。任意违规行为无利益可言,帮助网络去除那些运行错误或不可靠软件的受托人。

这种惩罚机制有一个共同诟病:牺牲一些活力换取安全性。事实上现在错失一个区块比重复锻造的坏处更少。错失区块只是一个小问题,在稳定的网络上连接稳定的服务器便可缓和这个问题。而违背共识(重复锻造)可以对全网发起攻击,这种情况要完全避免。

改善后的DPoS的主要好处

现在我们对提议的DPoS修改有了大致了解,现在一览三个新LIP提案如何实现前面概述的五个属性:

· 去中心化:新DPoS提案规定,一个LSK只能锁定一位受托人。鼓励受托人们独立竞选,破坏联盟可能获得的最大回报。包括备选受托人空位。用户现在将更愿意去注册一个受托人来获得一些区块奖励,从而增加了网络的去中心化。· 开放与公平:与前面的去中心化相一致,新DPoS机制意味着基于受托人比例的投票机制。每轮有两个备选受托人空位,使拥有较少受托人权重的受托人能有一定机会锻造新区块。假设100万LSK选票投给备选受托人,一位权重为10,000 LSK左右的受托人每个月可以锻造50个区块。与目前的方案相比,是一个巨大的进步,当前受托人们需要超过25,000,000 LSK才能开始锻造第一个区块。· 安全性:提案的投票机制关键特点是,引入了受托人和选民责任。要想被选为锻造受托人,就必须以自选的方式锁定自己当大一部分的质押代币。在受托人与网络之间,自动建立起一道承诺,如果受托人不遵守协议规则,就可能失去对质押代币的访问权,在一定时间内无法再次参与锻造。同样,也会激励选民投票给那些信誉良好且有生产力的受托人。采用“ LIP Punish BFT 罚规”的概念,激励用户来监督网络,查出行为不当的受托人。· 高效:引入锁定投票机制,极大地提升区块处理效率。在上述“改进DPoS机制的原因”一节中复杂性在该锁定投票机制当中消失了,因为账户提交的投票是锁定的,无法用其他类型交易解锁这些投票。基本意味受托人权重更新地更加高效了,也意味区块处理速度更快了。· 灵活性:新提案中的Lisk用户可自行决定为每个受托人提供多少支持。这样用户就能根据自己持有的代币和自己对各位受托人的信心来制定投票策略。

1570862527731977.png

本文来源Lisk官方博客

翻译由头等仓(First.VIP)_Tracey提供,任何转载请保留文末信息。

原文:https://blog.lisk.io/our-path-to-changing-the-voting-system-aa6e8fcaf33d

稿源(译):https://first.vip/shareNews id=2282&uid=1

—-

编译者/作者:头等仓

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...