有赖于建立在其上的众多Dapp和ICO,以太坊的2017可以说风光无限。然而在公链争霸年2018年,以太坊虽然目前还坐在王座之上,可其实已经被“群狼环伺”。
高声叫嚣着要干掉以太坊取而代之的,不止有EOS,还有黄雀在后的ADA、ZIL/NEO等等。相比这些币价猛涨、宣传阵势惊人的后起之秀,以太坊显然要低调得多。
但低调不等于没有作为。事实上,Vitalik和他的团队一直都非常乐于改变——相比相对保守的比特币核心开发团队core来说。很多关于以太坊未来的重大变化早已经在部署实施之中,虽然不见得能够短时间见到成效。
一旦你了解了这些,就相当于看到了未来2-3年甚至更久以太坊的发展线路图。下面就让熊小猫一一道来。
一 、Casper FFG 和Casper CBC
2017年10月,以太坊进入了它的第三个发展阶段:大都会(Metropolis)。当前我们即将迎接的是这一阶段的后半段:“君士坦丁堡”,然后就走向最终的“宁静”(Serenity)。
你是不是跟我一样觉得这些词听起来真的好文艺呢?不过这不是重点,重点是,按照规划,在“宁静”阶段,以太坊将的共识机制将彻底转变为PoS.
而Casper,正是将Ethereum主网共识算法从Proof of Work(POW)转向Proof of Stake(POS)的项目。
先了解一个问题:POS与POW有什么区别?为什么一定要做这种转移?
从算法上来说,POW是以矿工算力的贡献比例作为权重给予挖矿收益,POS是以矿工持币数量乘以持币时间作为权重给予挖矿收益。
POS对于POW的优势在于:
-
安全性:类比POW的语境,POS相当于节点一旦作恶,矿机和硬件设施直接被烧毁。
-
避免过度中心化:避免POW矿池出现的规模效应和中心化,公平挖矿产出。
-
节约能源:POW消耗的硬件和电能是巨大的。
当然,POS也有如Nothing at stake等自己的问题,这里不重点展开(以后再表)。
那么为什么又会分成两种Casper呢?
Casper FFG——又名“Vitalik's Casper”——是一种混合 PoW /PoS 的共识机制,它是以太坊首个通向 PoS 权益证明的候选方法。简单地说,块链将用熟悉的PoW 算法增加区块,但是每50个块有一个 PoS “检查点”,通过网络验证人来评估区块的最终有效性。
可以看出,Casper FFG还不是一个纯粹的PoS协议,它实际上相当于POS的初级阶段,目标是使人们逐渐脱离PoW机制。目前它已经在测试中,我们期待它能在晚些时候,作为“君士坦丁堡”阶段的一部分主网上线。很可能就是在今年夏季。
如果到时候还没上线,很可能就要等到更晚的“宁静”版本——关于这个阶段,目前还没有人给出一个时间表。很有可能是在2018年末,甚至2019年。
Casper CBC也就是我们所知的Vlad版Casper,使用建构修正(correct-by-construction,CBC)协议。要了解它的特点,让我们来做一个对比。
这是一个普通的协议设计的样子:
你正式指定协议。
定义该协议必须满足的属性。
证明该协议可以满足给定的属性。
而CBC协议的样子是:
你正式但只是部分地指定协议。
定义该协议必须指定的属性。
从满足所有它被规定去指明的属性中推导出该协议。
用大白话来说,你是动态地推导出该协议的。
获得完整协议的其中一种方式是运行一种Vald称为“理想对手(ideal adversary)”的预估安全预言机(estimate safety oracle),它运行下列两者之一:
-
提出一个合理估计的错误的例外情况。
-
列出所有在未来可能发生的错误。
是不是看着就很复杂?总之,这个理想对手要做的事情,就是不断进行微调、让这个只是部分建构好的协议更加完美,直到它变成完全版。
正如刚刚提到过的,Vitalik的Casper将被初步运行,以缓冲从PoW到PoS的转变。而Vlad的Casper,则不只是一个建立在PoS机制上的微调,而是彻底的重新思考共识机制,它未来还有很长的路要走,很可能只能在2019甚至更晚的时间落地。
也有可能最后Casper FFG就运行的很好,因此持续的运作了下去,直到Casper CBC完全准备好。
可以看到的是,以太坊开发者团队一直在努力地开发这两个Casper项目。不管这最终版本是什么,它肯定会受到Vlad的和Vitalik的Casper的深刻影响。
二、扩容
遏住以太坊咽喉的,首当其冲是扩容问题。
以太坊目前日均交易量是500多万笔,十倍于比特币网络。然而与此同时,Ethereum每秒只能处理交易(tps)15笔。在高峰期里花费的时间甚至更长。而这就意味这极大的堵塞也就是极高的交易成本。
相较之下,Square 和 Visa 等服务的交易是即时确认的。即使不它们相比,EOS、ADA等同为公链在测试中表现出的速度,似乎也已经足以革掉以太坊的命。
以太坊为什么不赶紧扩容?因为扩容没有那么简单。
这是一个可能很多人都知道了的问题,我们再来复习一下~
当前公有链的共识协议都存在这样的限制:网络中的所有节点(常常就是每一台电脑)都必须参与处理每一笔交易。
这种去中心化共识机制的关键优势是安全保证、政治中立和抵抗审查等。然而,这是以扩展性为代价换来的,因为它同时限制了区块链里全节点可处理交易的数量。
实质上这带来了两个影响:低吞吐量&缓慢的交易速度。
然而,如果我们随意扩容区块大小,那么随着区块链不断扩大,网络里各个节点所需的存储、带宽和计算能力也会增加。当到达某个时刻,就只有少数节点才能提供足够资源来处理区块——也就是说我们普通人的电脑跑不起了——而这会带来中心化风险。
(为什么V神和EOS的BM经常互怼,原因之一也是EOS的21个超级节点被认为是牺牲去中心化为代价提升扩展性。)
因此,以太坊等公有链需要在低交易吞吐量和高中心化之间做一个权衡。理想的系统是:它既能每秒处理上千笔交易,又能保持一定程度的去中心化——Vitalik在去中心化这件事情上显然相当坚持。
针对此,以太坊现在在跑的有以下方案,当当当当!
-
主链扩容方案:Sharding(分片)
首先我们又要提到前面说过的Casper。因为某种程度上,Casper可以说是分片的奠基石。
这里要先引入一个Finality的概念。Finality是指,一个操作或交易在链上完成并且被确认不可逆的状态。
在以太坊目前POW的机制下,finality需要等待多久,并没有被明确的约定。
举个栗子,当一笔交易完成,常规做法是等待6个区块确认。但严格来说,6个区块确认后,交易完成且不可逆的概率虽然非常非常大,但没法100%肯定。(这涉及到一个最长链规则,我们以后再讲)
如果要求更高的确认概率,那可以等待12个区块确认(比如Binance的充值确认),但不管多少个区块确认,交易失败的概率总是存在的,只是趋于无穷小。
Casper的设计中,finality等待最大长度被显示的约定为50。即50个区块之后,交易被100%的确认完成,如果届时有两条长度相同的主链,则任何一条链上的交易都不会被finalize。
这种设计下,每笔交易在一个确认的时间长度下一定会被确认而不是一个概率值,节点不再需要考虑从创世区块至今的所有交易。每个节点需要承担的工作量更小,需要获取的信息更少。这对分片扩展方案很重要。
那么分片扩展方案是怎样工作的呢?
将每一个block(块)分为不同的shards(片),每个片独立、并行的处理不同的一组交易,以此提升全网交易吞吐量的扩展性协议。
简单地说,每个Shard chain就是一个小区块链世界,因此你不用再担心全网共识所带来的拥堵。在shard chain中的block改名叫collation,矿工也就是validator改名叫collator。同一时间数个shard chain并行工作,最后确认的交易汇总到block里融入主链,以此扩展交易吞吐量。
这里又涉及一个问题,就是安全性怎么保障?譬如,如果矿工能够预先得知自己会被分配到哪个shard chain,那他们岂不是可以勾结起来作恶,甚至发动51%攻击?
这一点Vitalik也想到了。Shard chain中collator的选择则是通过主链上的矿工管理合约(VMC)这个东西来决定,VMC是Shard机制的核心,POS的押金机制与投票机制都会在VMC上完成。
VMC合约中特别关键的一点,是需要通过随机方式,确保每个矿工不能提前预知自己何时会被分配到哪个shard chain上。所以说安全上听起来也没有太大的问题。
-
侧链扩容方案:Plasma与Raiden(雷电网络)
之所以把这两个放在一起,是因为相比于主链扩容的分片来说,plasma和雷电网络都属于侧链扩容。
Plasma允许在主链上建立子链,子链可以专门为每个DApp设定,子链数量不限,而且每个DApp上的共识机制可以单独设计。DApp可以在子链上完成各类交互行为,而且会比主链更快更便宜。
雷电网络是以太网中的闪电网络,它允许节点之间相互通信,而不需要在主链上确认每笔交易。两个节点间可开设一个双向的“通道”,交易由双方私钥签名并确保不可逆。通过在这两个节点之间,而不是在每个块上记录和验证交易,可以将大量的主链流量转至链下。
这些都是很不错的解决方案,然而这些侧链解决方案都只适用于部分支付场景,所有这些侧链最终也都依赖于主链获得“finality”,因此主链扩容方案(目前也就是分片)仍不可避免。
同时所有这些新型技术——分片、plasma以及雷电网络,实在是太新了,很难在短期真正落地。尽管已经有许多试验在进行当中,但真正的主网上线应用很可能要等到2019年。
三、其他
除此之外以太坊还有一些其他的变化。
首先是隐私。
以太坊上每笔交易都会得到广播,每笔交易都是透明的,但这并不总是符合人们的需求。这也是零币、门罗币等隐私币所解决的需求。但在以太坊上,事实上已经有相应的技术部署来解决隐私问题。也就是CK snarks和零知识证明。(如果你不太理解,我们也会在后面继续科普这些名词。)
其次是安全性。
以太坊经历了许多的bug事件和黑客攻击事件,导致巨额资产流失或者被锁定,譬如我们曾提到过的Parity钱包代码误删事件,导致许多人资金被锁定,其中包括巨额ICO资金。
这个问题的根源和以太坊智能合约现在的编程语言有关。以太坊智能合约现在的编程语言是solidity,它的好处之一是对于初学者简单易上手,但与此同时也给黑客留下了许多攻击的可能性,使智能合约变得脆弱。
现在已经有一种新的编程语言被开发出来,叫做VIPRE,提供了solidity之外的一种选择。VIPRE的特征之一是安全性能,它限制了使用的方法,从根本上来说,让程序员们犯错的可能性降低了。但遗憾的是现在使用它的人还比较少。
除此之外还有一种方法,叫做formal verification(形式化验证),简单的来说,是指代码以数学的方式来证明它的逻辑性是安全的。它也能够很好的改善智能合约的安全性问题。对这个方案,我们也将在以后为您做出深入介绍。
总的来说,未来几年,从协议层到主链到侧链甚至编程语言,以太坊将会发生诸多变化。过去的风光无限让全世界的目光都聚焦在了以太坊的身上,现在是时候考验它背后的开发者团队了,是否能够带领以太坊披荆斩棘,成功卫冕呢。我们拭目以待。