若要对EOS进行区块链技术的评定,首先需要对区块链技术进行准确的定义。在此,我们分别采用工信部2016年发布的《中国区块链技术和应用发展白皮书》中的定义和IBM 2018年发表的论文“Hyperledger Fabric:A Distributed Operating System for Permissioned Blockchains”中对区块链的描述来解释EOS是否具有区块链的技术特性。
在《中国区块链技术和应用发展白皮书》中这样定义区块链“狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。”在EOS中用户可将交易签名后广播给超级节点,再由超级节点对收到的交易进行验证、打包和共识,从而在节点之间形成不可篡改和不可伪造的分布式账本,并可在其上运行自动化脚本。其整个过程依然具有块链式数据结构、分布式节点共识算法、密码学保护的传输以及智能合约。因此,具有区块链多种技术特性的EOS可定义为区块链。“
IBM这样对区块链进行描述“A blockchain can be defined as an immutable ledger for recording transactions, maintained within a distributed network of mutually untrusting peers. Every peer maintains a copy of the ledger. The peers execute a consensus protocol to validate transactions, group them into blocks, and build a hash chain over the blocks. This process forms the ledger by ordering the transactions, as is necessary for consistency.”
相对于工信部给出的区块链定义,IBM给出的描述中重点强调了“untrusting peers”。的确区块链的使用场景一定是在一群无相互信任的节点间达成共识,这也是其区别于传统分布式数据库最显著的优势。在EOS中,超级节点是由所有持有EOS币的人投票选出的,被选节点将最大化投票人的红利,因此,超级节点之间是在无相互信任的环境下达成共识,投票节点对所投的超级节点具有一定信任,既而使全网的节点进行信任传递。
综上所述,不管是参照国内权威机构给出的区块链定义,还是国外知名企业给出的区块链描述,EOS都是不折不扣的区块链项目。
二、EOS是不是“去中心化的”
自比特币问世以来,去中心化一直是区块链的最重要特征。不可否认比特币和以太坊是目前最规模化的两个区块链项目,其成功的运行使人们真正领略到了去中心化的魅力。目前各个区块链项目的去中心化程度也时常对标这两个项目,然而最近康奈尔大学的Adem Efe Gencer团队对比特币和以太坊的去中心化程度进行了科学的测量和严密的分析。通过其测量发现,在整个观测期内,比特币中8名矿工分享了超过50%的采矿权,16名矿工控制了90%的采矿权。以太坊中超过50%的采矿权由5名矿工分享,90%的采矿权由11名矿工控制。因此,这两个区块链平台都很大程度上依赖于极少数不同的采矿实体来维护。换句话说,比特币和以太坊的出块权限也是在小范围的不可信节点之间达成的共识。
通过对采矿权比率与矿工数目进行拟合,可以得到比特币和以太坊的挖矿能力趋势为和的指数分布。由此,Gencer还得出结论“规模为20的节点数目可以在拜占庭问题中以更低的资源成本来获得高效的共识。”
所以,在比特币和以太坊网络中其主要的共识任务集中在少数关键节点中,POW算法的本质其实是通过工作量来遴选出具有出块权限的节点,而大量的资源如果消耗在选拔过程,那么共识过程就会变得效率低下。为了将资源集中在共识任务中,关键节点的选拔就需要采用低耗能的算法来替代。EOS中DPoS-BFT共识算法就是采用投票选举出21个具有出块权的超级节点,再在超级节点之间引入拜占庭容错机制,然后将资源配置到超级节点中进行高效率的共识,以此来达到高吞吐量。(在DPoS中每个超级节点只有轮到自己出块时,才算是对之前区块的确认,这样就使得交易确认时间长达45秒。而引入BFT机制后,每个超级节点出块后都需要向其他超级节点广播,当收到2/3的超级节点确认信息后,该区块即可完成确认,这样的改进使得区块确认时间大大缩短。)
综上所述,EOS选择21个超级节点不仅不是对“去中心化”的逆反,而是对去中心化和高效率共识之间的最佳平衡。
三、EOS是不是比BTC和ETH更好的区块链架构
若要回答何为更好的区块链架构,首先需要有一套合理的评价体系,在相同的评价体系内我们才能有较为直观的优劣判断,并且也只能说在该评价体系内谁更具有优势。由于区块链技术属于新兴技术,目前业内还未有成熟的评价体系,所以本文采用传统的分布式存储系统中的CAP原则来分析EOS、BTC和ETH。
CAP原则是指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。
可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。
分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
在区块链系统中,我们可将“一致性”理解为抗分叉能力,“可用性”理解对故障节点的容忍度,“分区容错性”理解为出块间隔(为了达到可用性,只能放弃强一致,转而追求最终一致)。在“一致性”方面,基于PoW算法的比特币是通过选择最长链来添加新区块,故其很难对抗“自私挖矿”造成的分叉攻击。基于GHOST协议的以太坊则是通过选择包含子树数目最多的链来添加新区块,虽然该改进可以提高出块速度,但其仍然难以逃脱51%攻击的魔咒。而EOS使用DPoS-BFT算法,出块权在21个超级节点之间以商议的顺序轮流拥有(以商议顺利轮流出块则可优化随机出块中网络延迟造成的块丢失问题),即使有7个恶意超级节点,也很难造成主链的分叉。在“可用性”方面则是所有分布式系统首要满足的特性,所以三者都具有较强的故障节点容忍能力。在“分区容错性”方面,比特币每个出块间隔约为10分钟,以太坊每个出块间隔约为15秒,而EOS每个出块间隔约为0.5秒。
所以从上述几个方面来看,利用CAP原则分析,EOS的确是比BTC和ETH更好的区块链架构。