DPOS共识机制
原文地址:https://bitshares.org/technology/delegated-proof-of-stake-consensus/
一个强健并且可伸缩的共识协议
Delegated Proof of Stake (DPOS)是最快,效率最高,最去中心化并且伸缩性最大的共识模型。DPOS利用权益持有者投票在平等和民主的基础上来解决共识问题。所有的网络参数,从费用清单到出块间隔和交易大小,都可以通过被选举出的代表调整。被确定选择出的块生产者可以平均一秒内确认交易。可能更重要的是,这个共识协议被设计来保护所有的参与者来避免不必要的监管打扰。
比特股是第一个而且是最重要的全球性的分布式数据库来用作跟踪数字资产的账本。所有对于账本的更新必须能以正确的次序被验证及应用,从而保持数据库的一致性和被人们普遍的认同。更新以什么样的次序被应用来达成共识就是Delegated Proof of Stake (DPOS)的目标。
概览
任何共识程序必须回答下面的问题,但是不局限于:
1 谁生成下一个应用于数据库的块?
2 什么时候生成下一个块?
3 哪些交易被包含于块中?
4 对于协议的更改如何被实施?
5 交易历史的冲突如果被解决?
目标是对上面的问题找到答案,来保证共识流程的强壮性,从而防止任何攻击者试图通过网络进行控制。在实践中,控制意味着单方面进行交易的能力。共识流程的强壮性还体现在能够防止攻击者在不同的电脑上使得数据库状态不再保持一致,攻击者从中得到利益。
被选举出的见证人生成区块
选择见证人这个词是因为它在法律上是个中性词,所以不受约束。传统的合约上经常有一个位置要见证人签字。比方说比较重要的合约,有时候会用到公证人。见证人和公证人都不是合约的当事人,但是他们扮演了一个很重要的角色来证明合约在特定的时间被特定的个体签署了。在比特股中,见证人扮演了相似的角色来验证被包含在块中的合约和签名。
在DPOS中,权益持有者可以选举任何数量的见证人来生成区块。一个区块包含着一组更新数据库状态的交易。每一个账户对一个见证人只有一票,这个过程被认为是批准投票。得票最高的前N个见证人当选。至少50%参加选举的权益持有者相信见证人的数量N是足够去中心化。如果权益持有人表达出他们想要多少见证人,他们就必须为多少见证人投票。一个权益持有者不能为更多的见证人投票。
每一次见证人生成区块,他们会得到报酬,权益持有人确定报酬的多少,如果见证人不能够生成区块,他们就不会得到报酬,将来他们会失去资格。
活跃的见证人每一个维护周期(一天)被更新一次。见证人被重新洗牌,每一个见证人在一个确定周期表的确定时刻来生成区块,每2秒生成一个区块。所有的见证人都生成区块后,他们又被重新洗牌。如果一个见证人在他的时间节点没有生成区块,那么这个时间节点就被跳过去,下一个见证人生成下一个区块。
任何人都可以观察见证人的参与程度来监控网络的健康状态。历史上看,比特股能够维护99%的见证人参与度。任何时间如果见证人的参与度下降到一定比例,网络的使用者可以允许更多的时间来进行交易验证,同时警惕网络的连接状态。这个属性给了比特股独特的优势使他能够在麻烦发生的1分钟内来提醒有潜在问题的使用者。
被选举出的代表改变参数
代表的选举类似于见证人的选举。一个代表成为一个特殊账户的共同签名者。这个账户对于修改网络参数的提议有特权,被认为是创世账户。网络参数包括从交易费用,区块大小,见证人报酬,到出块间隔的所有参数。当大多数代表同意了进行修改的提议,权益持有者被授予2个星期的时间来检查,这段时间内他们可以把代表选举出去,也可以使提议无效
这种设计保证了代表们在技术上没有直接的权力,而且所有网络参数的更改最终要得到权益持有者的同意。这么做保证了代表们反对进行虚拟货币管理和监督的监管者的权力。在DPOS中,我们可以很自信的说,行政权力在用户的手中,而不是代码和见证人的手中。
不像见证人,代表没有报酬,网络参数也不希望变化太频繁。
技术上创世账户可以做别的任何账户能做的任何操作,这意味着可以向创世账户发送基金,或者指定创世区块为第三方代理。创世账户也可以发行资产,在数不清的应用中代理可以帮助权益持有者完成要求高度信任的任务。
改变规则(硬分叉)
经常性的,网络需要升级添加新的特征。在DPOS中,所有的改变必须经过活跃的权益持有者的许可才能触发。从技术上来说,见证人密谋单方面改变他们的软件是可能的,但这并不符合他们的利益。见证人被选举时发誓对区块链的政策保持中立。保持中立保证了见证人不受网络经营者,管理者,所有者,操作者的指控。见证人只是权益持有者的员工。
开发者可以实施所有他们认为合适的改变,只要这些改变经过权益持有者的同意。这个政策保护了开发者,就像它保护了权益持有者一样,确保了没有人能够单方面的控制网络的方向。
改变规则的门槛和替换51%的见证者一样,参加选举见证人的权益持有者越多,就越难改变规则。
最终,改变规则依赖于网络上的每一个人升级他们的软件,没有区块链协议可以强迫规则如何改变。这意味着硬分叉“bug修复”没有权益持有者的投票也可以推出,只要他们能对代码期待的行为保持一致。
实际上,只有对安全很关键的硬分叉可以以这种方式实施。开发者和见证人对于最小的改变也要等待权益持有者的同意。
双花攻击
双花可以发生在任何时候,当区块链重新组织时,剔除了一个以前被包含的交易。这意味着见证人的通信因为互联网设施的破坏发生了故障。在DPOS中,因为通信故障发生双花攻击的概率很小。
网络可以管理自己的健康,当见证人未能按照日程表出块时,也可以很快发现通信中的损失
区块链组织
因为所有的见证人是被选举出来的,高度负责的,被授予了时间槽来生成区块,所以很少情况下有两个竞争链同时存在。慢慢的,网络延时会阻止一个见证人准时的收到以前的区块。如果这种情况发生了,下一个见证人会在任何他们接收到的区块上生成新的区块。如果见证人有99%的参与度,一个交易有99%的可能被单个见证人确认。
尽管这个系统对于天然的链组织的事件是强壮的,但是当软件bug,网络瘫痪或者见证人是无能或恶意时,还是有可能生成多个链。软件通常会选择有见证人参与度最高的区块链。一个见证人在自己的链上一轮只能生成一个区块,比大多数的见证人参与度要低。任何一个见证人(或者小的见证人群体)不可能生成一个更高的参与度的区块链。参与度是通过预期生成区块的个数和实际生成区块个数相比较得到的。
最大去中心化
在DPOS中,每个权益持有者拥有的影响力等比于他们的权益,没有权益持有者被排除在实施他们的影响力之外。市场上其它的任何共识都排除了大多数权益持有者的参与。还有很多其它的方式去排除权益持有者。一些使用邀请制。另一些利用花费比挣得还多来排除参与者,还有一些技术上允许所有人都参与,实际上他们被一些生成大多数区块的大户所忽略。只有DPOS允许区块生成在大多数人中均匀分布,而且以在经济上可行的方式发挥他们的影响力。