智能合约
以太坊的发明创造在于智能合约,那么以太坊的智能合约是怎么做的呢?
就是有一个虚拟机,叫做evm,直接把合约交给虚拟机跑。跑出来结果返回之后,系统开始做共识——这种好处,就是直接;不好处,就是共识必须等智能合约跑完。
可是智能合约都是别人在写,有无意的、有有意的、有恶意的——可能就跑出来问题了,那么共识就被拖住了。
那么以太坊的解决方式,就是给代码计算出来一个gas的数目,然后限制总的gas数量,这样保证在17秒的区块间隔时间,可以把智能合约跑完。
所以你可以看到,以太坊在支持智能合约上面,其实是有一个限制的,就是在17秒这个时间里面,所有跑的智能合约必须全部跑完。
结果去年9月,就被人家攻击了2次,导致共识时间超过了1分钟,Geth的很多节点直接崩溃。靠限制gas总量到470万,那么以太坊不得不再搞一个硬分叉,来修复这个问题,就是让你矿工加硬限制;或者就是很多合同要上来,只好排队。
另外一个,就是以太坊也搞全民共识,那么所有节点都跑同一个合同,这个效率也不好。解决办法,就是要用分片技术,把全网分成很多小片,把智能合约分配给不同的片去做。
但是这种分片技术,中心化解决方案是有,这个就是IBM fabric在干了——伪去中心化。
而去中心化的解决方案很不容易,要解决不同片之间的通信问题,要解决其中某些片被人攻破,要解决如何检测错误,要解决状态丢失,等等。
以太坊自己也在想办法,但是目前还没有找到好的方案。而且就算是有方案,大概需要7-8个硬分叉,才可以落实。
以太坊的技术路线
小V认为以太坊要增强扩展性,有几个方向:
分片(Sharding)
第一个就是做分片(sharding)。 那么以太坊目前分片技术还没有搞定。分片是什么意思呢?就是如果你有 100 个共识节点,不分片的话,只能同时做一个智能合约。那么你分片的话,比如每 10 个共识节点,分到一个片,那么你就有 10 个片。每个片处理一个智能合约, 你同时就可以做 10 个智能合约,那么你速度就提高 10 倍了。那么以太坊的分 片难度在哪里?第一个是整体架构设计得不好,要分片估计需要 7 个硬分叉来过 渡。另一个,就是以太坊希望使用 Casper 这个 POS 共识协议,来替换目前的 Ghost-POW 协议,社区有不少阻碍,可能会形成一半一半的 POS+POW,这 个就会增加落实分片技术的复杂度和难度。而墨客,没有那么多包袱,再加上分层架构设计得很好,软件更新无须硬分叉,分片技术已经落实。
闪电网络
小 V 谈到的另外两个方向,一个是 Poon 做的给比特币系统用的闪电网络, 在以太坊上面称为雷电网络。解决的方法,就是把频率高金额小的交易甩到链外, 然后在固定时间段,将交易的净额更新到链上。这个方法,主要处理本地的用户 交易,其哲学思想是“老林子里面有棵树倒了,可是村子里面的人不在乎”。村 子里面的人大概只要知道,1 个月里,原来生的树,死的树,总计为多了 2 棵。 在墨客里面,解决方法叫做#Flash,已经报了专利,是在链内的智能合约服务器 这里实现的。这个也是讲墨客的速度从 5000tps 提升到 1 万 tps 的关键。
Plasma
另外一个方向,就是 Poon 和小 V 合作的 Plasma,这个算是应对 BM 和小 V 论战中,对以太坊缺乏扩展能力,而 BM 在 EOS 上面努力增强平行计算,并 规划节点 Cluster 化的应战。Plasma 的吸引人之处,在于利用子链,并将子链 和链上应用结合起来,子链不是采取链的结构,而是采取树的结构,那么就可以 把区块链的功能计算,用 MapReduce 来做。
这种想法非常有意思,也是墨客会进一步开发的方向。估计墨客和以太坊的区别,就是在于物理上和逻辑上,以太坊的子链都是外链,而墨客的子链,是物理上和逻辑上都是内链。
以太坊的 Plasma,墨客的智能合约增强器,再加上 EOS 的节点 cluster。
联盟链和企业链
小 V说的最后一个方向,就是联盟链和企业链的应用。今年布局的墨客,就是在公有链的公共服务平台上,用逻辑子链的方法,来 实现联盟链和企业链的需求。这个方向,估计需要协调,和以太坊企业联盟 的方向,至少在联盟链和企业链需要的数字安全和企业法律合规等等方面,墨客 需要开通接口,以便于这些链的接入。