DPoS股权委托证明机制
一个健壮且灵活的一致性共识协议
股权委托证明机制(DelegatedProofofStake,DPOS)是目前最快、最高效、最分布式且最灵活的共识模型。DPOS最大程度的用股东投票权通过一种公平且民主的方式解决共识问题。所有的网络参数,从费率计划到区块间隔及交易大小,可由选举产生的代表来调整。明确选定区块生产者使得平均只需1秒就能确认交易。也许最重要的是,共识协议的目的是保护所有参与者不受不必要的监管干扰。
BitShares是一个最早的和最重要的用于跟踪数字资产的账本形式的全球分布式数据库。所有对总帐的变更都必须以适当的顺序验证并写入数据库来保持一致性并持续提升共识。变更写入顺序达成共识的过程就是股权委托证明机制。
概览
任何一致性共识机制必须解决的问题都包括但不限于:
应该由谁产生下一个打包了数据库变更的区块?
应该在什么时间产生下一个区块?
什么交易应被打包进区块?
对协议的变更如何生效?
应该如何来解决竞争的交易历史?
目标是要找到这些问题的答案,从而确保达成共识的过程足够健壮以抵御试图控制网络的攻击。在实践中,取得控制意味着能够单方面篡改交易。这个过程也应该足够健壮来抵御试图利用不同电脑上短时间内出现数据库不一致而获利的攻击。
由选定见证人来生成区块
选择见证人这个词是因为它是一个不受管制的法律上中立的用语。传统合同一般有见证人签字的地方。对于极其重要的合同,有时会用公证人。无论是见证人还是公证人都不是合同的当事人,但他们在证明特定人士在特定时间签署了合同中扮演了重要角色。在BitShares,见证人在证明交易签名和时间上,通过将其打包进区块扮演了类似的角色。
在DPOS中,股权持有者可以选择任意数量的见证人来生成区块。每个区块是一组变更数据库状态的交易的集合。每个帐户允许每股一票选举见证人,这个过程称为批准投票。获票前N名的见证人会被选用。见证人的个数的确定需要至少50%的投票人认为足够去中心化。在股权持有者设置他们心仪的见证人个数时,也必须投票给至少这个数目的见证人。股权持有者不能超限投票。
见证人每生成一个区块都会因提供服务而获得报酬。他们的费率是由股权持有者通过他们选出的委托人设置。如果一个见证人未能生成一个区块,那么他将得不到报酬,并在将来有可能落选。
活跃见证人的名单每个维护间隔在统计选票是更新一次。然后,这些见证人会随机排序,根据这个固定顺序每2秒有一个见证人获得生成一个区块的机会。当所有见证人都获得了机会后,他们被再次随机排序。如果某个见证人在他的时间窗口中没有生成区块,这个时间窗口将被跳过,下一个见证人来生成下一个区块。
任何人都可以通过观察见证人参与率来监控网络健康状况。从历史上看,BitShares一直保持着99%的见证人参与率。无论何时出现见证人参与率低于一定水平时,网络的用户可以延长交易确认时间,并提高对网络连通性的警惕。这个特性让BitShares有了独特的优势,就是在问题出现1分钟内便能提醒用户潜在的风险。
选定委托人进行参数调整
选出委托人的方法和见证人类似。委托人能够成为一个有着发布网络参数修改权限的特殊账号的共同签名者。这个账号被称为创世账号。这些参数包括交易费、区块大小、见证人报酬以及区块的时间间隔等所有内容。当大多数委托人都认可了一个的变更提议后,股权持有者有2周的审核周期,在此期间,他们可以投票罢免委托人从而废止变更提议。
选择这种设计是为了保证委托人从技术角度并没有任何直接的权力,所有对网络参数的变更最终都是由股权持有者批准。这样做是为了保护委托人脱离可能施加在密码学货币经营者或管理员上的管制。在DPOS下,我们可以真正地说,管理权掌握在用户手中,而不是委托人或见证人。
不同于见证人,委托人没有报酬。当然,这些参数并不期望被频繁更改。
技术上创世账号可以执行任何其他帐户可以执行的操作,这意味着可以向创世账号发送资金或指定创世账号作为仲裁代理。创世帐户也可同样用于发行新资产。还有无数个应用中,选定的委托人可以帮助股权持有者完成需要高信任度和责任背书的任务。
规则变更
有时,有必要对网络进行升级来添加新的功能。在DPOS下,所有更改必须由活跃的股权持有者的准许而触发。虽然在技术上见证人可以串谋单方面修改软件,但这么做不符合他们的利益。见证人是基于他们对区块链的中立承诺而被选中。保持中立让见证人免受他们是网络的管理者、经理、老板、运营商的指责。见证人仅仅是股权持有者的雇员。
开发人员会去实现他们认为合适的变更,只要这些变更得到股权持有者的批准。这一策略尽可能相同的保护开发者和股权持有者,并确保没有人能单方面控制网络的发展方向。
改变规则的阈值和更换51%的选定见证人是相同的。参与选举见证人的股权持有者越多,改变规则就越难。
从根本上,改变规则取决于网络上的所有人升级他们的软件,且没有什么区块链层面的协议强行规定了变更规则是如何执行的。这意味着,硬分叉式的“漏洞修复”可以在不需要股权持有者投票的情况下推出,只要代码的行为符合普遍预期。
在实践中,只有严重影响安全的硬分叉应该以这种方式实现。即使是最轻微的修改,开发人员和见证人也应等待股权持有者批准。
双重支付型攻击
双重支付可以随时发生在区块链重选导致之前包含的交易被排除时。这意味着见证人因互联网基础架构的干扰引发了通讯中断。有了DPOS,因通讯故障带来可能的双重支付型攻击的概率是很低的。
网络有能力监测其自身的健康状态,因此可以立即检测到任何如见证人没有按时生成区块这样的通讯丢失。如果发生这种情况,用户有必要等超过半数的见证人确认了他们的交易,这可能需要一到两分钟。
交易作为工作量证明
网络上的每笔交易都可选的包含一个最近区块的哈希值。如果这样的话,交易的签署人就可以相确信这个交易不会被包含在任何不包含这个指定的区块的链上。这个过程的一个副作用是,随着时间的推移,所有的持股人都会直接认定交易历史的长时间的完整性。
区块链的重组
因为所有的见证者都是被推选的,高度可信任的,被给予了特定的时间区间来生产区块,很要有机会出现两个相互竞争链的情况。有时候,网络延迟会组织见证者及时的接受前置区块。如果这种情况发生的话,下一个见证者会通过在他首先收到的前一个区块的基础上构建新区块的方式来解决这个问题。在有99%见证者参与的情况下,一个交易有99%的几率被单一的见证者来确认。
虽然系统有足够的鲁棒性对抗区块链的自然重组事件,仍然会有一些潜在的软件bug,网络中断,不称职甚至是恶意的见证者会生产出多个长于一两个区块的竞争链条。软件总是会选择有参与度最高的见证者生产出来的链。一个脱离了网络的见证者只能在一个回合生产一个区块,而且起参与度总是会低于网络中的大多数。任何单一的见证者(或者少数一小撮见证找)没有任何办法生产出一个参与度更高的链条来。参与度是通过比较期望的生产的区块数目和实际生产的区块数目来计算出来的。
最大程度的去中心化
在股权委托证明机制下,所有的持股人都可以影响系统,这种影响直接与持股数目成比例,没有任何一个持股人可以被排除在外。市场上的很多其他的共识系统都把绝大多数的持股人的的参与排除在外。有很多可选择的方法可以把持股人排除在外,有些用邀请制的系统;有些使参与的收益小于花费来组织参与。确实有些系统技术上来说允许所有人来参与,但是这些参与在几个大玩家产生绝大多数区块的情况下被变得基本可以忽略不计。只有股权委托证明机制保证了区块生产被分散在绝大多数人中间,并且每个人都有经济上切实可行的方式来影响这些区块生产者被选拔的方式。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。