引言

身为币圈一员,又是学计算机专业的,对目前打得火热的两大开源区块链项目 ETH 与 EOS 自然是会比较上心。二者的技术、理念、演化模式、未来前景,都应当是需要关注与思考的话题。

本文将尝试从技术层面对这两个项目进行综合对比分析。一家之言,仅供参考。

Github 项目生态分析

Ethereum 项目主页:https://github.com/ethereum

EOS 项目主页:https://github.com/EOSIO

下面列表分析 ETH 和 EOS 两者的项目生态数据(截至 2018.05.01),同时引入币圈最成功的开源项目 Bitcoin 的数据作为对照。

  • 表 1:项目数据总览
项目名称 关联的代码仓库数量 项目公共成员 协议实现核心分支数
Ethereum(以太坊) 3663 38 2 (Go & C++ 实现)
EOS(柚子) 71 0 1 (C++ 实现)
Bitcoin(比特币) 2840 25 1 (C++ 实现)

  • 表 2:核心仓库数据统计
仓库名称 实现语言 开源协议 星标 Watch Fork 贡献者 发布版本 社区计划项目数
ethereum/go-ethereum Go LGPL-3.0 17118 1753 5429 259 130 9
ethereum/cpp-ethereum C++ GPL-3.0 3008 525 1893 125 228 0
EOSIO/eos C++ MIT 6461 1069 1517 101 43 0
bitcoin/bitcoin C++ MIT 31059 3236 18597 537 192 8

  • 表 3:最近一个月项目开发活跃度
仓库名称 活跃的 Pull 请求 提交的更改数 参与的开发者数
ethereum/go-ethereum 82 61 32
ethereum/cpp-ethereum 48 115 7
EOSIO/eos 233 760 40
bitcoin/bitcoin 236 252 43

注:这个指标可以直接到 Github 的仓库统计页面上去查看,有详尽的图表与数据展示。结论是,近一个月内,由于主网上线日期临近,EOS 项目开发的活跃程度明显高于 ETH 的两个核心项目。

总结:无需对上述数据做过分解读,但从宏观事实出发,ETH 项目的开源生态建设显然优于 EOS。换句话说,没有了中本聪的 Bitcoin 还是 BTC,没有 V 神的 ETH 也还会是 ETH,但没有 BM 的 EOS,可能就不再是 EOS 了。

共识算法优劣对比

BTC 使用的共识算法是 POW(Proof of work,工作量证明);
ETH 目前使用的共识算法是 POW + POS(Proof of Stake,股权证明)混合模式;
EOS 使用的共识算法是 DPOS(Delegated Proof of Stake,委任权益证明)。

这三种算法各有优劣,POW 模式稳定、游戏规则明确、潜在的人为影响风险最小,为人所诟病的缺陷就是矿场矿池对算力的垄断。POS 是软件模拟挖矿的方案,相对而言整个区块链就更容易被算法漏洞所影响,且账本分叉成本低廉,曾经闹得沸沸扬扬的 ETH 与 ETC 之争就是明证。DPOS 机制是 BM 对 POS 的“技术改进”,其本质上是将 ETH 面临的复杂动态多节点网络问题简化成了固定节点(21 + 100)的简单类静态分布式网络问题。对于程序开发而言,这种简化确实大大降低了开发难度,同时还能有效提高主链的处理能力(即取得较高的 TPS 值)。但区块链项目本来就存在一个“蒙代尔三角”难题:“高效率、去中心、安全性”三者形成一个不可能三角关系:任意系统无法同时满足此三种特性。比特币和以太坊是通过舍弃“高效率”来获得去中心和安全性,而 EOS 则通过 DPOS 机制选举 21 个超级节点,舍弃“去中心”与“安全性”,以“弱中心”方式追求“高效率”。

下表列出的是“按照区块链网络内置协议运作的话,三种算法各自可能面临的安全问题”:

  • 表 4,PoW、PoS、DPoS 安全性对比
攻击方法 POW POS DPOS
短距离攻击(如贿赂攻击) / x /
长距离攻击 / x x
币龄累计攻击 / x x
预计算攻击 / x /
分布式拒绝服务(DDos) / 可能 x
女巫攻击(Sybil Attack) x x x

注:详情参见这篇文章:PoW,PoS,DPoS 综述

结论:从现有技术角度看,ETH 目前的 POW+POS 混合模式无疑是最佳选择。接下来,阐述得出该结论的原因。

对共识算法机制的引申思考

由上表可知,技术上,POW 算法可以免疫绝大多数的攻击手法,而 POS 算法最易遭受攻击。然而,这里有一个大前提,就是攻击者是遵守“游戏规则”的,会在区块链自身设定的协议体系中找出漏洞并且尝试攻击。但实际上,没有这么傻的攻击者。打个比方,我知道小偷可能会撬门而入,所以安全防范措施就是换好的防盗门,加坚固的锁。殊不知,真正要来偷的都是走窗户和阳台,或者假扮外卖小哥入室抢劫,根本不会按套路出牌。在一个点对点的网络系统中,有效节点的数量决定了整个系统的健壮性。BTC、ETH 都是不限全节点数量的,主链网络安全又受到矿工们巨大算力的保护,所以可以长期稳定运行。但 EOS 的架构设计,不具备这个条件。

我们知道,EOS 的架构是 21 个超级节点负责提供整个主链所需的运算、存储、网络等硬件资源,而 100 个见证节点是“预备队”,平时只负责验证超级节点是否正常、有效的工作,只有当某个超级节点出现问题时,才有机会被选上成为新的超级节点。原本这是一个很优秀的主从备份设计,可以确保整个网络的稳定运行。可惜,当 EOS 的分红机制将超级节点设计成“会下金蛋的鸡”之后,事情就变质了。设想这样一个场景,我是某个见证节点的主人,每个月都花费不菲的成本去运行这个备份节点,眼见着超级节点躺着赚钱,自己这却只能跟着喝口汤。明明是一样的硬件配置,一样的设备开销,一样的运维费用,只因为你当初主网上线时选票拉的好了那么一点点,坐上了超级节点的宝座,从此就吃香的喝辣的,凭什么?按照游戏规则,见证节点作为备份,只有当某个超级节点宕机死掉之后,才有机会被选上代替这个超级节点的位置。100 个见证节点,如果大部分都对超级节点抱着“你赶紧死掉我好上位”的心态的话,我不知道有什么理由阻挡超级节点被恶意攻击。事实上,只要对某个超级节点暴露在外网、对主链提供服务的端口发动 TCP/IP 层的大流量 DDoS 攻击,这个超级节点的网络服务能力就一定会被瘫痪掉。几分钟后,这个一直处于无法响应通信状态的超级节点就会被票死,失去超级节点的资格。要是所有节点持有人都这么干,EOS 网络就没法工作了。

当然,出钱的资本方都不傻,这样自己玩死自己的蠢事不会去做。那这 100 个见证节点真的就会遵守规则,面对潜在的巨额利润毫不动心,乖乖排队等待不知何时才会落到自己头上的超级节点资格吗?主网还没上线,超级节点贿选的事情就已经发酵了,ETH 的 创始人 V 神还专门为此事写了一篇檄文:V神谈EOS节点投票:我们必须绕开的阴影之地。主网上线之后,121 个节点实际上就形成了一个利益共同体。当所有参与方都意识到自己既有毁灭对手的能力,又随时可能被对手所毁灭的时候,博弈的结果只能是联合起来,一起赚钱,一起割韭菜。但事情若走到这一步,EOS 这个区块链项目和某个大互联网公司的云计算平台还有什么区别呢?以后这 121 个节点中的大部分肯定都是跑在亚马逊 AWS 云服务器上的,我作为一个开发者,与其在各方利益纠葛不清的 EOS 系统内去费时费力的开发 DAPP,还不如直接用成熟的 AWS 系统,快速开发快速上线呢。

此外,有攻击超级节点动机的可不止那 100 个见证节点持有人。EOS 代币已经被炒到了一个高位,就是普通黑产,也有强烈的通过威胁攻击超级节点,来向超级节点持有人敲诈勒索大量加密货币的动机。目前全球各地天天专研 ETH 系统漏洞,指望盗币发财的黑客一大堆,攻防战早已打响,ETH 也在开源社区自身力量的驱动下不断的优化协议逻辑,修改代码 BUG。而 EOS 呢,主网都没上线,未知的考验还不知有多少。欲带皇冠,必承其重,EOS 这种先把泡泡吹起来,再去试探真假,把赌注压在六月主网上线之后一切顺利的做法,风险极高!

一点补充分析

实际上,EOS 的预期已经被过度消耗了。项目八字还没一撇,就这样去爆炒,完全是资金盘操纵的手法。到时候主网上线,随便出点什么差错(这是大概率事件,一个新系统上线,其表现是几乎不可能完全符合预期的),就都是做空的动力。

我比较赞同这篇文章所提出的理论:

区块链是什么?
区块链是比特币;
区块链是点对点的分布式的账本;
区块链是带智能合约的点对点的分布式账本;
区块链是生产关系;
区块链是一种社会思潮;
区块链是一种基因(X-gen)

不错,区块链就像细胞中的 DNA。其核心价值,不在于主链有多么强大的而丰富的功能,而在于其像基因一样,去中心化,稳定,传承价值,同时具备一定的合约功能。而更为复杂的功能,就应该交给侧链、分支去实现,就像自然界发生的那样:基因转录出 RNA,RNA 表达出蛋白质,再由蛋白质去承担生命活动。我相信自然的选择,这才是区块链技术正确的进化方向。