上一期解析了EOS白皮书中摘要部分的DAPP,性能扩展,异步通信,程序调度,区块链治理五个概念,并对白皮书2.0版的内容做了大致梳理。
这是IMEOS出品的EOS入门系列的第四篇文章“解读EOS白皮书2.0之DPOS机制详细解读”,本期将对最重要的概念DPOS机制进行详细解读。
白皮书原文翻译
区块链应用的要求
为了获得广泛使用,应用程序在区块链上需要足够灵活并满足以下需求的平台:
支持百万用户量
与eBay,Uber,Airbnb和Facebook这一类的企业竞争,要求区块链技术能够处理数千万活跃的日常用户。在某些情况下,应用程序只有在拥有大量用户情况下才能发挥其作用,因此可以处理大量用户数据对于平台来说至关重要。
免费使用
应用程序开发人员需要灵活地为用户提供免费服务; 用户不必为了使用平台或从其服务中获益而付出费用。可以免费使用的区块链平台自然可能会得到更多的关注。有了足够的用户规模,开发者和企业就可以创建对应的盈利模式。
容易升级和Bug的修正
基于区块链平台上的商业应用需要能够灵活地进行功能迭代。这个平台必须支持软件和智能合约的升级更新,而不是通过分叉。
所有软件都是有缺陷的,即使它有着最严格的验证。当错误不可避免地出现时,这个区块链底层平台必须足够强大来修正错误。
低延迟
及时的反馈(不超过几秒钟)是良好用户体验的基础。过长的延迟会影响用户体验,相比于现有可选的非区块链应用,过长延迟会导致基于区块链平台应用的竞争力下降(延迟时间如果超过了几秒钟,会大大影响用户体验,严重降低程序的竞争力)。这个平台必须保证用户交易时的低延迟。
串行性能
有一些应用,并不能使用并行的算法来优化,因为他们必须是顺序执行的。比如交易所,需要足够的串行化的执行性能来处理大量的交易。因此,这个平台应该支持快速的串行执行的性能。
并行执行的性能
大规模应用程序需要能在多个CPU或计算机之间划分工作负载。
知识延伸:
串行执行的典型工作机制 - 比特币的UTXO
这部分概念较为简单,讲这里一下串行执行的解词工作机制-比特币的UTXO,这也是BM的第一款产品BTS1.0版一开始采取的账户机制。
UTXO便是依赖逻辑,环环相扣,因此比特币需要足够串行化的性能来提升交易速度。
比特币通过编程脚本实现了一个严格以计算机程序验证为基础的数字货币所有权的转移机制。
1锁定脚本:上一个交易和2的公钥
2要解锁脚本:提供2私钥的签名和2的公钥,因而只有2才能花这笔输出,即构成下一笔交易花费这个输出。
环环相扣的经典场景--- 2要给3转账10BTC,但2本来一无所有,2能转账给3在于2能解锁1的脚本0.2如何转账给3呢?通过锁定脚本,而这个锁定的脚本,只有3能解锁。
2锁定脚本:上一个交易和3的公钥
3要解锁脚本:提供3私钥的签名和3的公钥,因而只有3才能花这笔输出,即2转账3成功。
白皮书原文翻译
EOS的共识算法BFT + DPOS
EOS.IO软件将使用目前唯一被证明可以满足区块链上应用性能需求的去中心化共识算法--DPOS(委托权益证明)。基于这个算法,持有令牌的人可以通过持续的审批投票系统来选择出块者。
只要能获得令牌持有者的投票,任何人都可以参与区块的生产过程,也有机会独立的生产区块。
EOS.IO软件允许区块精准的以每0.5秒产生一个区块,只有一个生产者被授权在任何给定的时间点生产一个区块。如果区块在预定的时间没有被生产出来,那么,那个时间的区块将被跳过。当一个或多个区块被跳过,将会有0.5秒或更多秒的区块间隔。
使用EOS.IO软件,区块以126个区块为一轮(每个生产者可以生产6个,有21个生产者,二者相乘)。在每一轮的开始,21个区块生产者通过令牌持有者的投票被选中。选中的生产者依据商定好的顺序生产区块,这个顺序由15个或者更多的生产者商定。
如果一个生产者错过了一个区块,并且在24小时内没有生产任何区块,他们将会被移除。直到这些“宕机”的生产者们及时通知区块链,他们将打算再次生产区块才被重新加入。通过不安排那些不够可靠的节点,尽可能的减少错过区块创建,来让整个网络运行得更平稳。
在常规的情况下,DPOS区块链不会可能会产生分叉,因为区块的生产过程是一个合作的过程而不是一个相互竞争的过程。如果产生的分叉,共识将会自动转向最长的链。这一机制有效是因为一个区块被加入到区块链的速率与区块生产者的数量直接相关,而这些生产者都对这个最长链条达成共识。换句话说,一个分叉的区块链,如果有更多的生产者,长度将会比更少的生产者更快,因为更多生产者的那条链上错过创建的区块数要少很多。
此外,不应该有区块生产者同时在两个分叉上生产区块。如果一个区块生产者被发现这个,将会被投票移除。如果发现重复生产的加密证据,也可以用来自动移除恶意使用者。
传统DPOS中加入了拜占庭容错算法(BFT),只要没有生产者盖上相同的时间戳或相同区块高度的两个区块,便允许所有生产者签署所有区块。一旦15个生产者签署了一个区块,该区块就被认为是不可逆转的。任何拜占庭生产者会留下他们背叛的,因为他们用相同的时间戳或区块。在这种模式下,不可逆转的共识应该在1秒内完成。
EOS相关概念解析
区块生产者(Block Producers) - 简称BP,区块生产者(我们也可以把他们称为EOS矿工)会给每个需要的人提供存储服务。区块生产者代表了21个独特的独立的个人或组织,每个人或组织都能在全球的不同地区复制和托管数据。这些区块生产者可能已经位于数据中心了,它们能支持高吞吐量的EOS.IO交易量。只要21个区块生产者中有一个在线,正常运作,提供文档访问服务,那么,每个人就能访问文件。即现在火热的21个超级节点.EOS生态系统中DAPP的运转都依赖这些这些节点。
运行EOS的节点需要一定的硬件性能才能维持网络的效率和安全目前EOS公布的一个单台机器的费用,从AWS上可查到:
单台以上配置的机器每小时13.338美金,算下来,一小时86.697人民币,一年76万人民币。以上价格还没加带宽,据经验人士估算单台以上配置机器投入不会少于100万人民币。
生产区块(Produce Block) ----与以太坊和比特币这些使用pow的系统不同,EOS使用dpos作为安全/挖矿机制来生产区块。这就意味着不需要购买专门的哈希硬件去与其他的矿工竞争。在EOS上,应用创造者只需要选择他们的矿工,然后就会根据规则规定哪个矿工生产。
区块高度(Block Height) ----与时间戳一样是EOS生产区块数据结构的一部分,表示当前区块是第几个区块。
拜占庭容错(Byzantine Fault Tolerance) ---解决拜占庭将军问题,当存在叛徒时,叛徒用尽了各种手段来破坏时,将军们仍然能够达成达成共识。所以叫拜占庭容错,容错的意思就是容纳节点出现错误(或者叛徒),网络仍然能达成一致的行动,正常运作。
但是BFT算法却是基于一个很强的假设 - 同步假设,这在实际处理中是很难满足的,加上其鲁棒性(健壮性),稳定性都很差,因此很少使用在知识延伸部分我们会讲到在DPOS共识机制下如何解决BFT问题--- BFT + DPOS。
不可逆块(不可逆块) ---又叫最后不可逆块,就是最后一个区块,不能再修改的块.DPOS规定,这个区块被三分之二的节点确认,就是不可逆块。如果被最新出块的三分之二节点确认,就是最后不可逆块。
通过最后不可逆块,就能确认这条链是不是由三分之二节点签名的最长的那条链。
知识延伸
两版白皮书修改对比
本章内容中,新版白皮书2.0 1.0对于版本进行了如下修改:
1.区块以精确到0.5秒一个的频率生产(1.0版本白皮书中为:3秒一个)
2.区块以126个区块为一轮,每个生产者可以生产6个区块,有21个生产者,相乘即为126(1.0版本白皮书中为:区块以21块为一轮,每轮每个生产者可以生产1个区块)
但不管是1.0版本白皮书还是2.0版本白皮书,他们生产区块一轮的时间都是相同的63秒
EOS白皮书1.0版本:单个区块生产时间*一轮生产区块数= 3 * 21 = 63秒
EOS白皮书2.0版本:单个区块生产时间*一轮生产区块数= 0.5 * 126 = 63秒
3.选中的生产者依据商定好的顺序生产区块,这个顺序由15个或者更多的生产者商定(1.0版本白皮书中为:所选择的生产者会根据从出块时间导出的伪随机数进行混合随机出块)
4.出块人的选择完全根据投票来决定21个节点(1.0版白皮书中为:前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出)
对于DPOS不够去中心化的一点评论
DPOS是一种参照了美国的议会制度,在现实中被认为是一个能良好运⾏的机制,能够兼顾去中⼼化和效率之间关系。但也有很多其他的声音说DPOS违背了区块链去中心化的本质,但其实相比较基于POW的比特币矿池,和基于POS的以太坊来说,对手里拿着BTC和ETH的人他们对社区和整个生态,他们是没有确定的发言权的,在比特币的世界里算力就是王道,面对算力大量集中在部分矿场的现在,它真的实现了中本聪的本心了吗?同样需要挖矿POS也是一样,需要看概率来决定你能否发声,但是DPOS是有发言权的,不管持有多少,我都有发言权。这种看似由“直接民主”转为“间接民主”的机制,或许才是真正体现了去中心化精神。
但是随着EOS主网的即将上线,EOS研发团队为竞选制定了规则:每持有一个柚子的用户拥有30票的选票,每一个代币的选票不能给一个节点超过两票这样的规则好处在于一些大户不仅可以将票投给符合自己意愿的代表,还可以通过其他方式与其他节点交互,获得选票,毕竟只要选上第1名与第21名是没有区别的(超级节点的收益平分) 。
但是EOS节点竞选现在遇到的一个问题在于:持有柚子的大量散户选民对选举热情不高或者说漠不关心,正所谓:天下熙熙,皆为利来,天下攘攘,皆为利往,因为即使投票选择了符合自己意愿的代表,代表在执行其职责的短期内所做的决定对持有者的利益没有什么影响,如果这些大量的散户参与程度不足,很有可能导致一些大规模持有者控制了授权代表的选举,他们就有可能会投票选择自己或者“指定”代表来担任授权代表,而在官方禁止用分红贿选的情况下,要怎么增加散户正向参与(随便投导致选出不负责任的节点比不投还糟糕)的积极性,我们希望EOS官方在未来能给我们一些惊喜。
令牌,令牌通证,代币三者的关系
很多时候令牌被说成代币,数字货币,但是都不对。
令牌可以翻译成为代币也可以翻译成记号令牌,代表了一个权益证明,只是一个权益证明。
通证:意思是就是「可流通的加密数字权益证明」
通证有三个要素,缺一不可。
第一是数字权益证明,也就是说通证必须是以数字形式存在的权益凭证,它必须代表的是一种权利,一种固有和内在的价值(Intrinsicvalue)。
第二是加密,也就是说通证的真实性,防篡改性,保护隐私等能力,由密码学予以保障。
第三是可流通,也就是说通证必须能够在一个网络中流动,从而随时随地可以验证。
事实上,通证可以代表一切权益证明,从身份证到学历文凭,从货币到票据,从钥匙,门票到积分,卡券,从股票到债券,人类社会全部权益证明,都可以用通证来代表。
BFT + DPOS
DPOS的特殊性,也是奠定拜占庭容错能力的基础框架,是它的算力节点是固定21个人,并且由大型的机构运营节点,其信息也相对透明,例如运营节点的地点,运营的情况等等。并且DPOS的算力节点是固定出块顺序的,固定地从甲到乙到ç······。
在这种情况下,其实DPOS是拜占庭容错的特殊解,如何理解特殊解?原来的拜占庭容错(POW工作量证明),解决的是不限数量,随机广播同步的算力节点的容错能力,DPOS解决的拜占庭容错从两个维度降低了难度:
如图1所示,节点数量固定只有21个。并且节点信息透明。
2,固定出块顺序。每个节点跟接力棒一样,一个个往下接力出块。每个节点不能还没轮到它出块的时候,就出块。都是必须轮到再出块。如果出现出块故障,会跳过这个节点。
在POW或者其他的POS共识里,节点不限,随机出块顺序的问题,就变成只要解决「固定数量和固定出块顺序情况下的拜占庭问题」,其难度就大大降低。
看到这里,恭喜你对EOS的DPOS机制的了解又更近了一步!
下篇预告:“IMEOS解读EOS白皮书2.0之性能提升解析暨账户交易”
关于EOS的入门系列的干货将会持续更新,建议收藏分享
如果感兴趣可关注IMEOS.ONE公众号
网友评论