Decred Staking 创新(上): DCR PoW+PoS混合共识

decredStakey.jpg

Decred的发起团队是开发比特币GO语言版本的Btcsuite / btcd 团队。Decred虽然上线主网已经有3年多了,但普通人对DCR了解的比较少。Decred Staking系列分上下两篇,第一篇介绍Decred PoW/PoS混合机制以及Staking 教程,第二篇探讨Decred staking相对其他PoS项目的优势。

Decred的起源

  • 2013年,Decred的发起团队 (原Conformal Systems LLC,现名 Company 0 ) 以 Go实作了一个Bitcoin Core版本: btcsuite。尽管这具有高度的技术价值,比特币核心开发小组非但没有对此举与此释出善意,甚至将其拒之门外。同时,在Bitcointalk论坛上,一位用户名为tacotime的匿名用户,开始了一个名为 memcoin2的项目开发。这是最早提出混合共识机制的加密货币项目之一,旨在创建一个「透过参与式投票,让货币资源的掌控以民主的形式交至用户手中」的货币系统。 2014年初,tacotime和_ingsoc(另一名Bitcointalk论坛的用户)向Jake (Conformal Systems创始人)联络,讨论memcoin2项目以及关于“decentralizedcredits”的想法。tacotime在提出了这样一个作为启发Decred日后发展的种子后,随后于2014年4月与一些人创建了Monero项目。而Conformal Systems在接受了这样的启发后,便将开发重心从btcsuite转移至一个新的项目-Decred。
  • 开发团队花费了约41.5万美元,并经过大约2年时间的开发,Decred于2016年2月份正式上线主网。更详细的DCR创立历史可以到这里了解。

Decred是工作证明(proof-of-work)+权益证明(proof-of-stake)的混合共识机制,主要基于Adam Mackenzie (门罗币前开发人员)编写的MC2白皮书, 其中部分参考Iddo Bentov、Charlie Lee(莱特币创始人)、Alex Mizrahi 和 Meni Rosenfeld共同撰写的活动证明Proof of Activity白皮书。

Decred的PoW+PoS混合共识机制,实质是对纯PoW的改进和扩展,改进纯PoW存在的很多固有问题,扩展纯PoW上没办法实现的一些功能。 Decred独特的混合共识机制提高了攻击Decred的成本,也实现了其他项目不具备的去中心化治理。

Decred的PoW+PoS混合机制比纯PoS/纯PoW有更多作用:

  1. 链上验证,验证PoW矿工挖出的块,以保证PoW矿工挖出的块符合Decred网络的共识规则

    使用纯PoW,是PoW矿工打包区块并进行验证。而Decred把PoW的工作进行分解,让PoW矿工打包区块,PoS选民验证PoW矿工打包的块,划分了PoW矿工的一部分工作。PoS对PoW矿工日常出块的确认,可以制衡PoW矿工作恶,比如:可以防止PoW矿工51%算力攻击,防止PoW矿工强制硬分叉,阻止PoW矿工打包空块等等。使Decred成为同等条件下攻击成本最高的币,攻击DCR,除了需要大多数算力,还需要需要大多数的PoS选票。

  2. 链上共识投票,决定Decred区块链共识规则的变更

    Decred链上共识投票分为两个阶段:第一个阶段是要满足区块链变更升级的前置条件,第二个阶段是链上共识投票阶段。第一个阶段中,开发者要发布共识变更升级的分叉代码,95%的PoW算力节点要升级,75%的PoS选民节点要升级。如果这三者中的任何一方不合作、不配合,链上共识投票就根本没办法进行,因为达不到区块链变更升级的前置条件。第二个阶段,在链上共识投票过程中,需要75%的PoS选票同意,链上共识规则投票才算通过。Decred的链上共识规则投票,把普通PoW区块链升级模糊不清的权责明确下来,可以最大程度让Decred的各方参与,形成更加广泛、更加强大的共识。

  3. 链下投票,决定Decred的发展方向,决定Decred的政策

    这个投票是通过脱链但锚定Decred区块链的Politeia提案系统来进行的,将Decred今后发展方向的制定和决策权,下放给整个社区。

  4. 链下投票,决定如何花费Decred社区基金

    Politeia除了决定Decred的发展方向,也是一个讨论和投票如何使用社区基金的平台,把Decred社区基金的资金使用权,下放给整个社区。

Decred PoS参与者获得30%区块奖励

为了参与PoS投票,利益相关者锁定一些DCR以换取选票。锁定DCR的数量被称为票价(票价也可以称为Stake难度),每144个块(约12小时)动态调整。当票价动态调整时,Stake难度算法计算新的票价以试图使全网票数维持在40960票左右。当前的票价可以在Decrediton钱包或区块浏览器上找到。

Decred每个区块产生时,随机从全网票池中选出5张选票进行链上出块投票,其中至少3张选票同意,这个区块才有效,才能添加到区块链上。如果区块选择少于5张票,则每少1张选票,PoW矿工区块奖励减少20%;如果少于3张选票,则判定PoW矿工打包的区块无效。在这个过程中,调用PoS选票进行投票后,锁定该票的DCR将被解锁并返回给购买者的钱包,如果选票成功投票,则会发放PoS奖励。这个出块过程中的成功投票,我们一般称为中票 (注意:只有在这个出块过程中的投票,才会有PoS奖励。在链上共识投票或者Politeia提案投票时,是没有PoS奖励的,这些投票是赋予PoS选民的权力)

为了补偿选票持有人验证区块和保护Decred网络,30%的区块奖励(PoS奖励)被发送给持票人进行区块投票 (每个区块由5选票确认,每张选票获得6%的区块奖励;如果选票被选中参与区块确认,但错过投票,则这张选票原本应该获得的6%区块奖励被直接放弃,任何人都获得不了,换句话说Decred的总量会相应地减少这部分); 剩余的区块奖励发放给PoW矿工(60%)和社区基金(10%)(社区基金用来资助项目的开发、市场运营等)。

Decred把锁定一些DCR来PoS,称为购票。以2019年5月1号的票价和区块奖励计算,Decred staking 能获得年化11%收入。

Decred PoS选票的具体生命周期如下:

  1. 您使用Decrediton GUI钱包或dcrwallet命令行钱包购买选票。购买每张选票的总费用应为:票价(Ticket Price) + 选票手续费(Ticket Fee,这个费用实际是POW矿工打包选票的矿工手续费)。
  2. 你的选票进入了内存池,这时您的选票等待被PoW矿工打包。每个区块,最多只有20张新选票被打包。
  3. 选票被打包进一个区块中,高的选票手续费更可能被先打包。
  4. 您的选票被打包进一个区块,它就变成了一张不成熟票。这个状态要持续256个块(约21.3小时),这个过程称为选票成熟期。在此期间,选票无法参与投票。被打包后,选票手续费是不可退回的。
  5. 您的选票成熟(256个区块)后,它将进入全网票池并拥有投票资格。这时的选票,称为成熟票。
  6. A - 选票被选中投出的机会符合泊松概率分布,平均为28天。
    B – 设定的全网票数为40960张,任何成熟票在40960个区块(约142.2天,约4.7个月)内有99.5%的机会投出去。如果在此时间之后,选票尚未投出,则该选票将过期,选票过期的概率是0.5%。选票过期后,您将收到购票时原票价的退款。
    C - 如果选票被选中投票时:1)您的钱包或委托代投的VSP没有响应;2)两个区块生成时间太靠近导致选票可能会来不及响应投票。如果发生这两种情况,会发生选票错过,您将收到购票时原票价的退款。
  7. 在选票投中,错过或过期后,需要经过256个区块,资金(原票价,或原票价+区块奖励,或原票价 + 区块奖励 - VSP手续费;如果是用委托代投VSP的,还要减去VSP相应的手续费,VSP的手续费小于中票奖励的5%,目前VSP手续费为0.5%-5%)才能被释放。如果选票发生错过或过期时,则钱包会提交选票撤销事务来释放被锁定的选票。注意:只能为错过的选票提交撤销,您无法撤销正常的成熟票。

想更多了解选票周期,可以参考图解


PoS相关链接:

作者: Neil
Decred微信公众号:Decred中文社区

推荐阅读更多精彩内容