EOS是通用链,能建Bitshare和Steemit那样的应用——Dan Larimer

640_wx_fmt_png

2月8日,EOS创始人BM接受Ivan直播专访,前两趴译文我们已在发布在公众号上:

第一段第二段 (戳蓝色链接回顾)

老规矩:灰字是译者注记,让你的理解如丝般顺滑;采访链接附在文末,需要科学上网才能领略哦~

今天是:

第三段 · 初二

问16:Vitalic Buterin正牵头对以太坊动大手术,你怎么看待这场改进?目前他们计划用Casper解决现存问题,你是否认为这会有效?

BM:Casper能影响的层面在于共识,对于执行层面并没有帮助。

以太坊注定要经历一个艰苦漫长的升级,因为手术涉及很多底层技术架构,包括计算资源管理和核心要素间的交互。

我认为把以太坊转向全新架构的难度不亚于把Bitshare变成Steemit,Bitshare社区不会支持开发者,以太坊矿工也不会支持整个社区。

所以这几乎不可能做成,因为以太坊的任何改动本质上涂着利益分配的底色

如果这一系列事情不断发酵,人们终将认识到:任何微小改动(比如比特币区块大小)都极其艰苦,就更别提修改共识、虚拟机或整个安全理念了。

· · ·

问17:有人认为分片(Sharding)能将一种状态切分为多种子状态,而这些子状态相互间无需知晓彼此情况,这样能增强以太坊的性能。你认为这种方式是否太过复杂,你有什么建议?

译者:分片是把一个数据文件切分成的多个部分放到不同的数据库上,从而提升单一数据文件的性能,相当于你把一周五天的课程表剪成五条,每天揣一条上学。

BM:分片在性能方面类似这样的场景:

有人把一捆286处理器接到一个14K的调制解调器上,然后指着这说:“你看,这堆东西可牛逼了,性能可以媲美Intel的20核处理器,因为我们会做分片。”

分片容易,但分片后的通信却很难。

即使理论上分片能提升交易处理性能,但却面临着一对内生矛盾:量和质。

也就是说,也许分片能增加某类交易的吞吐量,但是不可能增加交易的类别,而恰恰是交易类别的多样性(即:质)才是Dapp开发者真正关心的东西。

反之,如果分片支持了交易类型的多样性,那交易吞吐速度一定上不去,这就是一对不可调和的矛盾。

另外,分片之后,片与片之间的通信会大大降低处理速度。所以,我不认为分片(Sharding)是一个好办法。

· · ·

问18:以你做Bitshare和Steemit的经验,你看出以太坊的上述问题,这些问题是你做EOS的理由吗,或者还有其他什么理由?

BM:我起步做EOS时的确有很多经验,我也知道去中心化系统开发者真正的需求。我学了很多模式和设计思路,不断重复打磨。最终,我并不只想做Bitshare或者Steemit那样功能单一的应用,我要做的是一个通用系统,这就是我做EOS的缘由。

EOS是一个动态通用型区块链平台,能建类似于Bitshare和Steemit的应用。它汇集了我们之前所有的开发经验,EOS的性能水平更高,因为80%的功能都通过本地代码实现。

此外,EOS还引入Web Assembly(由谷歌、微软、苹果等几家大公司合作发起的项目,这个项目是面向Web的通用二进制文本格式,已在改变Web生态),这能让开发者使用C++语言,而C++有着极其丰富的类库,这样你能实现你想到的任何功能,而这些都能被用到智能合约上来。 

可如果用自有语言Solidity写智能合约,你就得重头开始自己写类库,重新发明一遍轮子。坦率地说,我们把EOS的代币发布合约建在以太坊上,后来发现程序竟然不能超过300次迭代,因为Gas会被消耗完。

译者插嘴:以太坊本为执行智能合约而生,为了抵御黑客攻击或被无限循环bug耗光全网资源,于是设计了gas的概念,即:执行任何+、-、×、÷都要消耗几两gas,而gas是要论斤买的,于是表面上消灭了死循环的可能。

但没想到按下葫芦起了瓢,雨后春笋地冒出如山的问题,这一连串问题就像一个个青铜枷锁一样,套在以太坊的脖子上,BM所说的“无法多次迭代”问题只是其中之一。

BM总结:所以这些都注定以太坊上不可能建通用的大型应用,比如订单系统,因为它的语言和内存模型都难以支持简单操作,比如索引或排序,即使能做也无法高效地做。

· · ·

问19:EOS最为人瞩目之处在于共识算法DPOS,谈谈你发明DPOS的经过吧。

BM:我第一版做的DPOS锁定了101个生产者,它们都经投票选举产生,Bitshare 2.0(以及石墨烯)把101这个数字调整为可由用户自定义,以便当人们投票时,在通过票数上可以自由调节。

这让我们观察到一个社区真正能被票选的节点数,我们发现,当一个社区处于可控状态时,可票选节点数通常在15个左右。所以在做Steemit时,我决定把这个数字设定为“略高于15”的21,这样就能更加“去中心化”地运行。

在Bitshare最初的版本里有个问题:101个不同的生产者其实可能是同一个人,但社区无法审查这点。

所以,尽管理论上有101个节点,但实际参与产块过程的最多也就其中20来个节点,而这20个节点的背后也就4-5个实际控制人。所以在做EOS的时候,我们敲定的节点数是21(投票节点必须是奇数,否则会出现长期分叉)。

这21个节点的处块顺序选由系统随机设定,并且随时会变,这样既能有效率地升级,同时也能避免硬分叉。

Ivan总结:我想现在大家都有点明白以太坊是如何工作的了:智能合约代码需要在每个节点上执行,于是这自然就不是一个可扩展的方案,更不用提当网络变大、节点变多的情况了。那时每个节点需要和更多节点通信,如果有些代码只能在这台电脑上跑、却无法在其他节点上运行跑,那就惨了。

· · ·

问20:EOS上执行代码是不需要过所有节点的,因为如你所说,EOS只有21个节点,所以请解释一下,一个本来跑在以太坊上的Dapp应用,如何在EOS上执行?

BM:这里要纠正一下你的误解:

21个指的是21个区块生产者,但与此同时,全网有无数个验证者,所有验证者都运行全节点数据(run everything)。

· · ·

问21:如果每个人都运行全节点数据,那和以太坊相比,EOS的延展性如何?

BM:

What we're trying to do is scale the decision-making over who's running everything, 

我们做的是扩大有权决策者的规模,而不是运行全节点的人才有权拍板。

以POW为例,它的利益分配只会倾向于那些有钱、有算力的人,而钱和算力很容易获取,比如政府补贴你一把就有了。但DPOS不同,每个持有权益者都有权投票,这使得全网很难被控制。

DPOS让每个人对正在发生的事情都有发言权,因此控制力将更分散,从而使系统更具可扩展性。同时,票选出来的21个区块生产者将更专业,他们可以位于数据中心,这些数据中心拥有更高性能的硬件,甚至组成服务器集群

我相信大多数成功的Dapp应用最终都将变成网站,就像Steemit。

所以说,正常情况是由一组服务器去支持一群轻节点,这样的商业模式才能让服务提供商有更高性能的硬件。

矿工投了几十亿美元在硬件上,而硬件除了哈希运算之外什么都不做,在这点上EOS的DPOS与比特币的POW一样——除了验证区块和输出结果。

所以,EOS上的生产者即使掌握了算力资源也无法作恶,作恶也没有任何收益,所以它并不会像POW的系统那样最终走向中心化。

第三段 · 完

640_wx_fmt_jpeg


今天的文章涉及如下概念,我们公众号的小伙伴只要戳下方链接就能随手复习:

1、今日推荐:DPOS

2、SPV:比特币轻节点原理

3、POS

恭祝你春节假期每天都有进步~

采访视频:https://www.youtube.com/watch?v=o7HQlcl-LlQ