DPos共识算法

参考

中文白皮书啊
https://blog.csdn.net/lsttoy/article/details/80041033

DPos的特点

  1. 不需要通过挖矿来争夺记账权,代表们轮流记账,从而避免了算力的浪费,这是真正的告别了挖矿的共识算法

  2. 记账权的竞争最终变成了股权的竞争,摆脱了对算力的束缚。记账权的竞争变成了 代表角色Node的竞争,谁能上位成代表,谁就有记账权。而代表角色的竞争,依赖于选票的结果,也就是币龄的竞争。谁拥有更多的股权,谁就更有更多的投票权,谁就越有可能当选成代表,并最终获得记账权。

  3. 交易速度特别快,大约3s钟,而且不需要后续区块的再次确认。每个区块最终能否添加到主链中,需要超过2/3个代表的验证之后才生效,但是一旦生效就永久生效。

  4. DPos吸收了Pos的精华,并且从Pos当中剥离开算力对记账权竞争的影响,并且开放了更多民主投票的措施。

概念

整个流程:选举代表和代表们工作的流程

  • 利用Pos的思想,由利益相关者投票产生N个受托人负责记账
  • N个受托人不需要竞争记账权,随机轮流负责记账,从而避免了挖矿的难度运算
  • 每个新区块都要超过2/3的代表的认同之后,才被认为是有效的区块,这样避免了受托人作弊,滥用权力
  • 为了避免受托人作弊(不管是有意的还是无意的),引入了相关的保证金制度,如果产生了错误的区块,或者没有在规定的时间内产生区块,不仅不会得到奖励,而且会损失保证金,以及很快会被投票人从受托人名单中替换掉

受托人

  • 每个受托人是完全等价的(不关心币龄了,降低了中心化的风险)
  • 受托人在完成本职工作的同时可以领取区块奖励和交易的手续费

受托人的选举

  • 一个区块链项目的受托人个数由项目发起方决定,一般是101个受托人。(受托人的数量在比特股中是由委员会提议,并且最终得到半数股权的投票同意后,可以动态修改的,至少11个)
  • 任何一个持币用户都可以参与到投票和竞选受托人这两个过程中。(股权越多,投票的权重越高)
  • 用户可以随时投票、撤票,每个用户投票的权重和自己的持币量成正比。投票和撤票可以随时进行,在每一轮(round)选举结束后,得票率最高的101(一般为101,也可以是其他数字,具体由区块链项目方决定)个用户则成为该项目的受托人
  • 受托人负责打包区块、维持系统的运转并获得相应的奖励
  • 在每一轮循环里,系统会重新统计得票排名。在选出最高的N个受托人里,系统采用先打乱顺序,然后受托人依此生产区块。一轮区块生产完毕后进入下一个周期。

DPos在项目中的应用

  1. Bitshares:最早应用DPoS机制的项目,其DPoS机制里包含见证人(Witnesses)和委员(committee), 见证人负责区块的打包,委员会负责系统参数的修改。
  2. EOS:共识算法DPoS + BFT, 有21个受托人。
  3. Asch:共识算法为DPoS + PBFT, 有101个受托人, 目前正在开放竞选。

TPS

每秒能确认的交易数:TPS = transactions / block_time
这里的block_time指的是 从交易广播发起开始 到最终交易安全确认 所需要的时间,不是出块时间,近似等于 出块时间* 需要确认的区块数量。

  • Transactions 是由区块大小 block_size 和平均每笔交易大小决定的: Blocksize = transactions* aveTranSize
  • TransactionSize由这笔交易的input[]的个数和output[]的个数决定,以及其它的一些参数,比特币区块大小平均:700kb(很多人呼吁要提高一些,这样交易的速度会提高
  • Blocksize受全网网络状态 network_bandwidth 限制,也是由记账节点之间物理带宽witness_performance 决定的。每个单位区块体积越大,在网络带宽不变的情况下,扩散的速度越慢,需要验证交易的时间越长。

TPS的影响因子: (block_size network_bandwidth witness_performance) / (block_time * witness_count)
witness_count指的是见证人的数量,3个人达成网络共识,比300个人快多了,网络传输的总体积和不确定性小多了。

为了提升TPS:

  • 压缩每笔交易的内存大小,让一个区块可以存储更多笔交易,同时空间越小,交易的网络扩散越快
  • 降低 (出块时间*需要确认区块个数)的乘积,可以通过算法上面的细节的设计,比如提升恶性硬分叉的难度

你可能感兴趣的:(DPos共识算法)