BitShares的DPoS共识

DPoS共识的BitShares官方英文介绍:https://bitshares.org/technology/delegated-proof-of-stake-consensus/

关于BitShares的DPoS共识的概述请参考:股份授权证明(DPOS)概述

关于BitShares的DPoS共识的详细介绍请参考:BitShares的DPoS共识

关于BitShares的DPoS共识的竞争链共识补充说明请参考:DPOS共识算法 - 缺失的白皮书

关于BitShares的DPoS共识之代码实现概述请参考:BTS的DPoS共识之代码实现概述

一个健壮(robust)而又灵活的共识协议

股份授权证明(DPOS: Delegated Proof of Stake)共识机制是最快,最有效,最去中心化,最灵活的共识模式。 DPOS共识利用股东(shareholder)赞成投票(approval voting)的权力以公平和民主的方式去解决共识问题。 所有网络参数(从费用安排到区块间隔和交易规模)都可以通过选定的代表(delegate)进行调整。 区块的生产者是提前选择出来的,这一确定性保证了交易(transaction)能在平均仅1秒内被确认。也许,本共识协议最重要的是旨在保护所有参与者免受不必要的监管干扰。


BitShares比特股(BTS)首先是一个全球分布式数据库,这个数据库被用作分类账簿来追踪数字资产的所有权。 为了使所有节点的数据库保持一致并得到认同,对分类帐的所有更新都必须经过验证并按正确的顺序添加。 而股份授权证明(DPOS)共识机制的目的就是要就更新顺序达成共识。

1. 共识机制概述

任何共识机制都必须回答包括但不限于如下的问题:

  1. 下一个添加到数据库的新区块应该由谁来生成?
  2. 下一个块应该何时产生?
  3. 该区块应包含哪些交易?
  4. 怎样对本协议进行修改?
  5. 该如何解决交易历史的竞争问题?

共识机制的目标是找到这些问题的答案,并确保其健壮性以抵制攻击者试图获得网络的控制权。 实际上,获得控制就意味着获得了单方面审查交易的能力。共识机制也应当能健壮地抵御攻击者利用在不同计算机上的数据库状态中的临时不一致性获取好处。

2. 通过选举出证人(Witnesses)来生产区块

选择使用证人这个词是因为它是一个法律上不受监管的中立的术语。 传统的合同上通常有证人签名的位置。 对于极其重要的合同,有时会使用公证人(public notary)。 证人和公证人都不是合同的缔约方,但他们在证明合同是在何时由何人签署的起到非常重要的作用。 在比特股(BitShares)中,证人充当着类似的角色,证人的任务是验证签名、给交易添加时间戳、并将交易打包到区块中。

基于DPOS共识机制,股东可以选择任意数量的证人来生成区块。 区块是一组更新数据库状态的交易。 每个账户每个股份允许给每个证人投一票,这个过程被称做赞成投票(approval voting)。 选出总赞成票数排名前N的证人。 证人的数量(N)是通过至少有50%投票的股东认为该数量足够去中心化来确定的。 当股东表达他们希望的证人数量时,他们也必须给至少那么多的证人投票。 股东不能投票支持比他们实际投票的证人更多的去中心化。(译者注:以上两句的意思是:股东给多少个证人投票就表达了他支持多少多少去中心化)

每当证人生产一个区块时,他们都会获取相应的服务费。 证人的薪酬水平由股东选出的代表(delegate)来制定(稍后讨论)。 如果某个证人没有生产出区块,那么就不会给他支付薪酬,并可能在未来被投票踢出。

每经过一个维护间隔(maintenance interval)时间(1天),选票就会被统计一次,届时活跃证人的名单也会更新一次。 然后将证人名单洗牌(shuffle),并且每个证人会轮流地在固定的预先计划好的2秒内生产一个区块。 当所有证人轮完之后,他们又将被洗牌。 如果某个证人没有在他自己的时间段内生产一个区块,那么该时间段将被跳过,下一个证人继续产生下一个区块。

任何人都可以通过观察证人参与率来监测网络健康状况。 历史上,比特股保持99%的证人参与率。 在任何目击者的参与率低于一定水平的时候,网络中的用户都可能预留出更多的时间来进行交易确认,并且格外警惕他们的网络连接性。 这一特点使得BitShares可以在出现问题后的1分钟内提醒用户潜在的问题,是BitShares独特的优势。

3. 通过选出的代表(Delegates)来修改参数

代表也是通过类似选举证人的方式选举出来。 创始账户(the genesis account)有权对网络参数提出修改,而代表就是该特殊账户的共同签署者。这些参数包括交易费用,区块大小,证人工资和区块间隔等。 在大多数代表批准了提议的变更后,股东有2周的复审期(review period),在此期间他们可以投票踢出代表并作废被提议的变更。

选择这种设计是为了确保代表在技术上没有直接的权力,并且对网络参数的所有变更最终都必须得到股东的批准。这样做是为了保护代表免受那些可能只适用于加密货币的管理人员的监管。 在DPOS共识机制下,我们可以确切地说,行政权力掌握在用户手中,而不是代表或证人的手中。

与证人不同,代表没有薪酬。 无论如何,这些参数也不期望经常修改。

创始帐户在技术上可以执行任何其他帐户能执行的任何操作,这意味着可以将资金发送到创始帐户或将创始帐户指定托管代理(escrow agent)。 创始账户也可以用来发行新资产。目前有大量的应用程序,在这些程序中当选的代表可以帮助股东完成那些需要高信任度和高责任度的任务。

4. 更改规则(又名硬分叉Hard Forks)

有时需要升级网络以添加新的功能。 在DPOS共识机制下,所有的变更必须由积极的股东批准后才能发起。 虽然从技术上来讲,证人可以单方面地串通起来修改他们的软件,但这样做并不符合他们的利益。证人是在基于他们承诺对区块链相关政策保持中立的基础之上选举出来的 。保持中立能保护证人免受网络的管理员/经理/业主/经营者的指控。 证人只是股东们的雇员。

只要变更获得股东的批准,开发人员可以实施任何他们认为合适的变更。 这项政策可以保护开发者,也在同等程度上保护股东,并确保没有任何人单方面控制区整个网络的发展方向。

改变规则的门槛与替换51%的当选证人的难度一样高。 当股东参与证人选举的人数越多,就越难改变规则。

最终,规则的更改取决于网络上的每个人是否升级他们的软件,并且没有区块链版本协议来规定规则如何改变。 这意味着只要股东坚持代码普遍预期的行为,就可以在不需要股东投票的情况下推出硬分支“错误修复”。

实际上,只有安全紧要的硬分叉可以以这种方式实施。即使是再小的变更, 开发者和证人都应该等待股东批准。

5. 双重支付攻击(Double Spend Attack)

当区块链排除之前包含的交易进行重组时,就可能会发生双重花费。 这意味着证人因互联网基础设施的中断而导致通信故障。利用DPOS共识机制,导致双重支付攻击的通信中断的概率会非常低。

该网络能够监测自己的健康状况,并可以立即检测到通信中出现的任何损失,并能显示证人没有按计划生产区块。 当发生这种情况时,用户可能需要等待一半的证人验证其交易,这可能长达1至2分钟。

6. 交易作为股份证明(Transactions as Proof of Stake)

网络上的每一笔交易都可以选择性地包含最近一个区块的哈希值。 如果这样做了,交易的签名节点可以确信他们的交易可能不适用于任何不包含该区块的区块链(译者注:本句可以理解为:签名节点包含了那个区块就认可该区块为主链)。 这一过程的另一个作用就是,随着时间的推移,所有股东最终直接证明了交易历史的长期完整性。

7. 竞争链问题(Blockchain Reorganizations)

关于该问题的详细讨论可参考: DPoS共识算法 - 缺失的白皮书

由于所有证人都是选举产生的,高度负责任的,并且授予了专门的时间段来生产区块,所以几乎不可能存在两条竞争链的情况。网络延迟偶尔会使得某个证人不能及时收到上一个区块。 如果发生这种情况,下一个证人将通过建立在他们首先收到的区块之上来解决这种问题。 凭借99%的证人参与率,每一笔交易有99%的机会在单个证人之后得到验证。

尽管该系统能健壮地抵御自然的链重组事件,但仍然存在如下的一些可能性:软件错误、网络中断和不称职或恶意的证人创造多于一个到两个区块的多个竞争历史。 软件始终选择证人参与率最高的那一条区块链。 证人控制自己在每轮中只能生产一个区块,其参与率总是比大多数人低。 没有任何单个证人(或少数几个证人)能够做到更高参与率的生产区块链。 参与率通过将预期生产的区块数量和实际生产的区块数量相比较来计算的。

8. 最大限度地去中心化

在DPOS共识机制下,每个股东的影响力和他的股份数量成正比,所有的股东都如此这般行使这种影响力。市面上的其他共识机制都无法做到如此绝大多数股东参与。 有许多不同方式的排斥股东的可选方案。 一些替代方案使用邀请限定的系统。 其他共识机制通过让参与费高于收入的方法来排斥自由参与。还有其他系统在技术上允许每个人参与,但是通过少数几个玩家生产绝大多数区块的方式来妥善的排斥其他人。 只有DPOS共识机制能确保区块的生产均衡地分配给大多数人,并且能确保每个人都有一种经济可行的方式来决定生产区块的人是谁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值