委任权益证明Delegated Proof of Stake(简称DPoS)是比特股BitShares采用的区块链公识算法。在加密货币技术中,使用共识算法来保证整个区块链网络的安全可靠,著名的共识算法包括比特币网络使用的工作量证明PoW,以及Peercoin和NXT使用的权益证明PoS。但是,这些共识算法都不能解决交易性能问题,尤其是PoW算法大量消耗计算所需的电力。而委任权益证明DPoS很好地解决了性能和能耗的问题。

背景

DPoS算法中使用见证人机制(witness)解决中心化问题。总共有N个见证人对区块进行签名,而这些见证人由使用区块链网络的主体投票产生。由于使用了去中心化的投票机制,DPoS相比其他的系统更加民主化。DPoS并没有完全去除对于信任的要求,代表整个网络对区块进行签名的被信任主体在保护机制下确保行为正确而没有偏见。另外,每个被签名的区块都有先前区块被可信任节点签名的证明。DPoS消除了交易需要等待一定数量区块被非信任节点验证的时间消耗。

通过减少确认的要求,DPoS算法大大提高了交易的速度。通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤。DPoS的区块可以比PoW或者PoW容纳更多的交易数量,从而使加密数字货币的交易速度接近像Visa和Mastercard这样的中心化清算系统。

DPoS系统任然存在中心化,但是这种中心化是受到控制的,因为每个客户端都有能力决定哪些节点可以被信任。DPoS使得这样的区块链网络保留了一些中心化系统的关键优势,同时又能保证一定的去中心化。系统通过公平选举,使每个人都有可能成为代表绝大多数用户的委托人。

DPoS背后的理性逻辑

1.使权益所有者能够通过投票决定记账人 
2.最大化权益所有者的红利 
3.最小化保证网络安全的消耗 
4.最大化网络的性能 
5.最小化运行网络的成本

权益所有者拥有控制权

DPoS的根本特性是权益所有者保留了控制权,从而使系统去中心化。就像投票机制也有缺陷一样,DPoS是管理公司共有产权的唯一可行方式。幸运的是,如果你不喜欢运营公司的人,你可以通过卖出权益离场。而这种反馈机制可以使权益所有者在投票时比普通公民更加理性。

每个权益所有者通过投票决定区块的签名验证者,任何一个拥有超过1%投票的人都可以参与到董事会。所有的代表构成一个“董事会”,轮流签署区块。如果一个董事错过了签署区块的机会,客户会自动把投票给予其他人。最终,这些错过签署机会的董事会被取消资格,其他人就可以加入董事会。董事会成员会收到少量代币作为奖励,用来激励在线时间和参与竞选。每一个董事必须要将单个区块平均奖励的100倍作为保证金,从而确保其至少99%的在线时间。

委任工作量证明的矿池

在目前的比特币网络中,用户为了盈利需要选择参与一个矿池,而每一个矿池拥有超过10%的哈希算力。矿池的运营者就像矿工委任的代表。比特币希望用户在矿池间切换以避免过度中心化,但是前五个主要的矿池控制了整个网络,如果其中一个矿池出问题了就需要用户进行手动干预。如果一个矿池掉线,则区块的生产率将会等比例地下降。在哪个矿池中挖矿成了一个难题

不随机从所有用户中选择的原因

1.普通用户大部分时间不在线 
2.攻击者可以使用其权益控制网络,而不经过其他人的认可 
3.由于没有挖矿,在去中心化网络中生成随机数变得不可能。

扩展性

假设每笔交易的确认成本和手续费都是固定的,那么实现去中心化的数量也是有限制的。假设验证成本与手续费相等,则整个网络是完全中心化的,并且只能支持一个验证节点。假设手续费是验证成本的100倍,则网络可以支持100个验证节点。

PoS需要大量的手续费来保证其合理运行,而委任机制是PoS高效工作的唯一方式。在PoS中可以使用权益池的方式,但是这又变成某种形式的DPoS。委任代表无法从矿池张获得实际的收益,因为验证的花费将吞噬绝大部分的交易手续费。

去中心化的成本与验证节点的数量成正比,而这个成本无法消除。从规模化角度看,这种成本的存在将最终使系统中心化,而委任代表制是唯一的解决方案。这种中心化应该在系统建设的初期就设计好,以利于用户更好地控制,而不是通过被动演化为非预期的结果。

委任代表的角色

1.见证人是允许生成和广播区块的权威 
2.生成区块的过程包括收集P2P网络中的交易并使用见证人的私钥进行签名 
3.见证人的位置由上一个区块的最后部分随机指定。

DPoS对于攻击的抑制

1.如果某个见证人拒绝签署一个区块,那么他将被解职并失去未来的稳定收入预期 
2.不诚实的委任代表只有在明确有其他利益诉求时才会选择放弃区块生成 
3.见证人无法签署无效的交易,因为交易需要所有见证人都确认。

见证人的数量

见证人的数量有权益所有者确定,至少需要确保11个见证人。

李启雷

浙江大学博士,趣链科技联合创始人

浙江杭州 http://liqilei.com

区块链核心技术:委任权益证明算法DPoS相关推荐

  1. 区块链核心技术:拜占庭共识算法之PBFT全面理解

    PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法.该算法是Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫 ...

  2. 区块链核心技术演进之路-算法演进

    大多惊讶于这套系统的简洁和完美,甚至有人断言此物一出,开天辟地.如今近乎8年过去,当年看起来近乎完美的系统理念,在各个方面都有长足探索和发展.接下来我将写一系列文章,回顾区块链核心技术演进之路.包括算 ...

  3. 《迅雷链精品课》第二课:区块链核心技术框架

    上一节课我们明白了什么是区块链,了解了区块链的关键特性和技术等内容,这节课我们将深入了解区块链的技术架构,系统学习区块链平台的6个层次:数据层.网络层.共识层.合约层.应用层.接口层,另外通常还有客户 ...

  4. 区块链目前的几大共识算法

    共识机制:区块链事务达成分布式共识的算法. 区块链是一种去中心化的分布式账本系统,它可以用于登记和发行数字化资产.产权凭证.积分等,并以点对点的方式进行转账.支付和交易.区块链系统与传统的中心化账本系 ...

  5. 第一届区块链技术及应用峰会“区块链核心技术”分论坛预告大放送

    技术苍穹,迭代未休,区块链技术乘破竹之势而来,已然问鼎2018年技术圈开年"关键词Top榜".当爆炸式的知识需求,遇上业内资源捉襟见肘的困窘现状,区块链技术及应用峰会(BTA)·中 ...

  6. BTA 2018 区块链核心技术专场:12 位专家全方位剖析区块链核心技术原理与业务实践

    2018 年 3 月 31 日,由 CSDN.火星财经主办,中关村区块链产业联盟.柏链道捷.区块链大本营.TokenSky 联合主办的 2018 区块链技术及应用峰会(BTA)<2018 区块链 ...

  7. 区块链入门系列之共识算法

    区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 POW POS PBFT Raft 其他共识算法 ...

  8. 区块链:3、共识算法 拜占庭将军问题

    区块链:3.共识算法 拜占庭将军问题 区块链系统采用分布式共识算法在无中心节点控制,又可能存在破坏节点的环境下确立系统状态,从而建立信任.区块链因此也被称为信任机器. 共识算法因不同的应用场景而有所不 ...

  9. 【BlockChain】go实现区块链2:工作量证明

    [BlockChain]go实现区块链2:工作量证明 引言 上一篇中,我们构造了一个非常简单的数据结构 – 区块,它也是整个区块链数据库的核心.目前所完成的区块链原型,已经可以通过链式关系把区块相互关 ...

最新文章

  1. [转贴]NIOS II 软核中EPCS配置芯片的存储操作
  2. Determine destination location of apt-get install package?
  3. 学python推荐书籍-零基础学python推荐几本python学习的书籍
  4. JAVA.NET.SOCKETEXCEPTION: TOO MANY OPEN FILES
  5. linux 限制连接时间,linux抵御DDoS攻击方法 通过iptables限制TCP连接和频率
  6. ipcs, ipcrm
  7. 【ArcGIS遇上Python】Python批量将多个文件夹下的多个影像数据镶嵌至新栅格
  8. ZTE Unveils World's First WiMAX Mobile Video Surveillance Terminal
  9. redis集群环境搭建入门
  10. Windows一般都用系统进程来加载内核模块
  11. 【Android】Intent传递对象(序列化)
  12. Unix环境高级编程(十九)终端I/O
  13. 利用R语言的GWmodel进行GWR模型分析(内含错误解决方法)
  14. C# installshield使用教程
  15. win10的一些用法
  16. 手把手教你 win10 安装Paddlepaddle-GPU
  17. 奔涌吧 后浪!!! 哔哩哔哩 何冰
  18. 浅谈GPU虚拟化技术(四)- GPU分片虚拟化
  19. 高数:微分中值定理介值定理证明题浅析
  20. android 高德地图显示标题,android学习之高德地图添加标记

热门文章

  1. [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性
  2. 页面间参数值传递含“%”的处理方法
  3. who whoami who am i的区别
  4. 系统安装,重装与优化:chapter1 安装操作系统前的准备
  5. GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考
  6. [云炬创业基础笔记]第六章商业模式测试7
  7. [省级大创项目]教育类APP的探索和实践——大学物理实验助手APP开发
  8. 科大星云诗社动态20210525
  9. Delphi自动提交网页表单和获取框架网页源码
  10. 用Delphi实现Windows的鼠标钩子函数