如果我们仔细回顾今年区块链技术的进展,就会发现有新想法的公链团队越来越少出现了,大家谈论以及关注的点也都不再聚焦公链上了。反倒是很多新的 Layer 2 项目在不断涌现,非常活跃。要知道在这之前,尤其是 2017 年,大家无人不谈公链,无人不做公链,各种 1CO 的项目宛如烈火烹油,火的一塌糊涂。
**为什么会有这样的思潮转变呢? **
这里还是需要提到不可能三角问题。
2017 的很多区块链团队都是野心勃勃,说要颠覆比特币,颠覆以太坊,各种区块链 3.0,甚至是区块链 4.0。比特币和以太坊所为人所诟病的 Tps ,也成了区块链团队攻击并且用来给自己 PR 的材料,很多宣称有百万 Tps 的项目诞生。
而经过一年的发展,大家发现要纯靠一套算法和共识来解决区块链的不可能三角问题是不现实的,因为如果你要保证系统的去中心化和安全性,每一笔交易必须由网络中每个节点进行处理,而这样就注定了它的性能达不到我们要求的。
于是大家的关注点开始转变,越来越多人开始关注第一层的扩容方案。以太坊生态其实一直在研究相关的扩容方案,只是大家在做公链遇到瓶颈的时候,很多人才反过来关注这些东西。
让每个节点做更多的工作量?
公链吞吐量的根本限制来自于它不能高于我们对单个节点所要求的交易吞吐量,由此突破的方向我们可以想到,是不是能够让每一个节点做更多的工作?
我们确实可以让每个节点做更多的工作,比方说把扩大区块大小扩大四倍,这个意味着每一个节点的工作量是之前的四倍,但是这样它就提高了加入门槛和牺牲了部分去中心化。因为扩容之后,节点做的工作多了,计算量也需要扩展,这样会把一批算力小的机器给淘汰,会导致算力变的更中心化。而且,这种扩容方式对提升到我们需要的区块链性能还差的远。
那么现在的问题是,我们怎么在不增加单个节点工作量的情况下做更多有用的事情?
每个节点不需要处理每个操作?
在我们惯常的思维中,每一个节点是需要并行处理每一个交易的,那么如果每一个节点不需要处理每一个操作呢?
设想一下,网络分成了两个部分,每个部分可以半独立运作。A 部分处理一批交易,B 部分处理一批交易,A 和 B 之间彼此独立,目前的交易限制就变成了两个节点同时处理的交易总量,区块链的吞吐量是翻倍的。
而如果我们把区块链分成很多部分,尽可能的细分,我们就可以成倍的增加区块链的 Tps。这就是我们俗称的分片技术( Sharding )
区块链被分成不同的部分,称为碎片,每个部分都可以单独处理交易,这个技术通常被称为第一层的扩展方案,它是在以太坊本身的基础协议中实现的。分片从设想上来说是一个非常棒的想法,但是在技术实现上,还是遇到了很多挑战和问题。 从现有的容量挤出更多有用的业务? 我们如果从相反的方向考虑,我们并不增加区块链本身的容量,但是我们用已有的容量做更多的事情呢?
这个很自然联想到的是压缩计算。
目前区块链上绝大多数的共识的达成其实并不需要经过所有节点的确认,有些东西只发生在你我之间,我们两者之间清楚就好。那么我们可不可以考虑把这些东西放在链外去做,最后底层担任一个 Crypto Court 的角色呢?这样可以兼顾去中心化、安全性和性能。
我觉得是完全可以的,而且我认为这个才是正确的一个方向。这就是我们接下来要着重讲述的「链下」技术,它们包括状态通道、Plasma、Truebit 等,它们也叫做第二层解决方案,简称 Layer2。