Skip to content

Latest commit

 

History

History
76 lines (39 loc) · 8.83 KB

dposc.md

File metadata and controls

76 lines (39 loc) · 8.83 KB

委托股权证明共识 Delegated Proof-of-Stake Consensus

一个健壮而灵活的共识协议 A robust and flexible consensus protocol

委托股权证明(DPOS)是现有的最快,最高效,最去中心化和最灵活的共识模型。 DPOS以公平和民主的方式,利用股东的同意投票权来解决共识问题。 所有的网络参数,从收费标准到区块生产者和交易大小,都通过选举的代表调整。确定的区块生产者的选择允许交易在平均1秒内得到确认。或许最重要的,共识协议被设计旨在防止不必要的监管干扰所有参与者。

BitShares首先是一个全球的数据库,作为总账被用来追踪数字资产所有权。所有对总账的更新必须被验证,并且为了允许数据库维护一致性而以正确的顺序被接受,并且是普遍协商认可的。达到有关应被接受更新的顺序的一个共识是代理股权证明(DPOS)的一个目的。

概述

任何共识过程都解答包括但不限于下列问题:

  1. 谁应该处理下一个区块以接受更新数据库
  2. 什么时候下一个区块被处理
  3. 哪些交易应该被包含进区块中
  4. 协议的更改如何被接受
  5. 如何解决冲突的历史交易

目标就是找到以上问题的答案,针对那些希望对网络控制的攻击者,确保共识过程是健壮的。在实践中,获取控制意味着单方面获取审查交易的能力。针对那些利用不同计算机上数据库状态不一致的临时优势的攻击者,这个过程也应该是健壮的。

当选的证人生产区块 Block Production by Elected Witnesses

选择证人这个术语是因为它在法律上是一个中性词表示不受监管的。传统上的合同有一块为证人签字的地方。对于非常重要的合同,有时会启用一个公证人。不但证人和公证人是合同的一部分,而且在指定的时间指定的人签署合同的过程中,都发挥了重要作用。在BitShares中,证人在打包区块过程中,为交易验证签名和打时间戳时,发挥了类似的作用。

在DPOS中,股东可以选择任意数量的证人生产区块。一个区块是一组更新数据库状态的交易。每个账号允许每股一票给每个证人,这个过程被称为同意投票。从总的投票中选出前N个证人。证人的数量(N)定义是投票股东中至少51%的人认为足够去中心化(译注:就是51%的股东投了>=N票)。股东表达他们想要证人的数量,他们必须投票给至少相应数量的证人。一个股东不能为了更加去中心化,投给多于实际票数的证人。

每次证人生产一个区块,他们由于自己的服务被支付费用。费用的比率是靠股东通过他们选举的代表(后面将会讨论)来设置。如果一个证人创建区块失败,那么他不会被支付,也许在未来被踢出局(vote out).

当票数相符的时候,活动证人的状态在每一个维护周期(1天)被更新一次。然后证人们被洗牌,并且每个证人被轮流授予在每2秒一个区块的固定时间内生产区块。当所有证人完成一轮,他们再被重新洗牌。如果一个证人在他的时隙内没能产生一个区块,那么他的时隙被忽略,下一个证人生产下一个区块。

通过观察证人的参与程度,任何人都能查看网络的健康情况。从历史上看,BitShares一直维护99%的证人参与率。任何时候证人参与率低于某一水平,网络用户能够允许更多的时间进行交易确认,并切格外注意网络连接状态。这个属性给了BitShares独特的优势,在麻烦出现一分钟内,能够报警潜在问题的用户。

当选的代表修改参数 Parameter Changes by Elected Delegates

代表的选举形式和证人类似。代表成为一个共同签署人,是成为一个有提议修改网络参数权力的特殊账户。这个账户被称为创世账户。这些参数包括从交易费用,区块大小,证人费用到区块产生周期。大多数代表同意一项修改建议后,股东被授予2周的审查周期,在此期间,他们有可能把代表踢出局和废除修改建议。

之所以选择这样的设计,是要确保代表在技术上没有直接的权利,并且所有网络参数的修改最终需要股东的同意。这样做是防止作为加密货币的管理者或管理员的代表们违规。在DPOS,我们可以真正的说,行政机关掌握在用户手中,而不是代表或者证人。

不同于证人,代表不因他们的职位被支付。并且,这些参数也没有预计会经常修改。

技术上,创世账户可以执行任何其他账户执行的操作,这意味着发送资金给创世账户或者指定创世账户作为一个托管代理是可能的。创世账户也可以被用来发行新的资产。在很多应用中,代表能够帮助股东执行一个需要高度信任和责任的任务。

改变规则(硬分叉) Changing the Rules (aka Hard Forks)

有时,更新网络以加入新的特性是必要的。在DPOS中,所有的修改必须经过股东的认同才能触发。虽然在技术上,证人相互串通单方面修改他们的软件是可能的,但这样做不符合他们的利益。证人被选择是基于他们承若对区块链政策保持中立。保持中立会保护证人抵抗网络的管理员/主管/所有者/操作者的指控。一个证人仅是股东的一个雇员。

开发人员会实现他们认为合适的任何变化,只要这些变化是股东批准的。这个策略保护开发者和保护股东一样,确保没有谁拥有对网络发展方向的单方面控制权。

改变规则的阈值是替换当选证人的51%。在选举证人过程中,越多的股东参与,改变规则就越难。

最终,改变规则依赖网络中每个人升级他们的软件,没有区块链级协议被强制执行如何改变。这意味着,硬分叉(Hard-Forking)"bug 修复"可以推出,而不需要股东的投票,只要他们忠于代码的普遍预期行为。

在实践中,只有严重安全的Hard-Forks才以这样的方式来实现。开发者和证人应该等待股东批准,即使是最轻微的变化。

双重花费攻击 Double Spend Attack

一个双重花费可以发生在当一个区块链重组排除一个之前已经包含的交易的任何时候。这意味着证人遇到个由互联网基础设施中断造成的通信故障。在DPOS,由于通信故障造成双花的可能性非常低。

网络能够监控它自己的健康状态并能立即检测任何通信的缺失,这种缺失表明证人如期处理区块的失败。当故障发生时,对用户来说等待直到半数证人确认他们的交易是必要的,这可能长达1或2分钟。

交易作为股权证明 Transactions as Proof of Stake

网络上的每个交易可以选择包含一个最近区块的hash。如果这样做,该交易的签名者可以确信他们的交易可以不被任何不包含这个区块的区块链所包含。这一过程的一个副作用是,随着时间的推移,所有股东最终直接证明交易历史的长期完整性。

区块链重组 Blockchain Reorganizations

因为所有的证人都被选举产生,高度负责,并且授予专用时隙以生产区块,很少有两条竞争链共存的情况。有时,网络延迟会阻止一个证人及时接收之前的区块。如果发生这样情况,下一个证人将通过建立任何他们接收到的第一个区块来解决这个问题。因为99%的证人参与,一个交易在单个证人之后有99%的机会被确认。

虽然系统针对自然区块重组事件是健壮的,但是仍有一些潜在的软件bug,网络中断,以及不称职或者恶意的证人建立多个竞争的长1或2个区块的历史。软件总是选择最高证人参与率的区块链。一个证人对自己的操作只能在每轮产生一个区块,对比大多数证人而言只是一个低参与率。没有任何证人(或证人中小群体)在高参与率的情况下能够生产一条区块链。参与率的计算是通过比较预期区块的产生数量和真实区块的产生数量得出。

最大的去中心化 Maximally Decentralized

在DPOS,每个股东的影响力和其股份成正比,没有股东能从行使这种影响中被排除。目前市场上所有其他共识系统排除了大多数股东的参与。有许多排除股东的其他的不同方式。有些方式使用invite-only系统。另一些通过花费大于所得把参与者排除。仍然有些系统技术上每个人都能参与,可是却通过少数几个大的玩家产生绝大多数区块,而其他人被安全的忽略。只有DPOS确保区块的产生均匀的分布在大多数人当中,而且每个都有经济上可行的方式影响这些人。