如果你经常浏览区块链相关的信息,你一定知道比特币交易开始变得拥堵,在社区中对于是扩容还是侧链的讨论喋喋不休。你肯定也知道就连以太坊也因《CryptoKitties》这款养猫游戏没能逃掉网络拥堵的命运。
摆在我们面前的,是区块链技术发展到现在终会遇到的一个关键瓶颈——区块链(特别是公链)想要真正做到更深度化的应用和普及,关键就是要解决交易的吞吐量和交易的速度问题,这在区块链中也被称作”可扩展性“。
幸运的是大多数团队都很有预见性的提出了相应的解决方案,并已开始付诸实施,只不过作为一名非区块链技术领域的萌新小白,在面对侧链、闪电网络、RSK、DAG、分片(Sharing)时经常会搞得一头雾水,不知道是什么意思,更不知道它们之间是一个什么样的关系——今天简单做了一个梳理,希望大家至少可以从宏观上比较清楚的了解对于区块链可扩展性上的问题,各团队是在如何解决。
如前边提到,区块链可扩展性的核心是为了解决交易的吞吐量和交易的速度两个方面,核心指标通常用TPS(transaction per second)来表达,即每秒执行的事务数量。比如比特币TPS是7,以太坊TPS是30-40等。
从现有技术实现的角度来说,基本分为三种,分别是侧链、分片、DAG,但因一些实现的技术角度和细节不同,各团队给出的命名也不一样。我给出下面这张图你可能就会有一个比较清晰的概念了:
区块链可扩展性解决方案
一.侧链:
侧链(SideChains)因为最早是这对比特币提出,所以这个概念后期也更多的是在描述比特币相关的扩容,它的定义是:可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。
我们以闪电网络(Lighting Network)为例:它指的是A和B两人可以把比特币放到一个多重签名钱包中锁定(链下),然后进行交易签名更改双方各自能取回的比特币数量。交易参与方可以随时关闭交易通道,最后一笔经过签名且包含最新余额动态的交易最终将会被广播并写入比特币区块链(回归链上)。
另一种情况是涉及更多的第三方,比如已知C想和A交易,但双方没有建立支付通道,不过A和B、B和C都各自建立了支付通道,这时C就可以通过B和A达成交易,B其实在整个交易过程中充当着一个网关的角色。整个过程实际上不需要在主链确认,因为都是几方之间倒来倒去的”数字游戏“,因此交易速度会非常迅速。只有当关闭交易通道时,才会最终确定各自的余额并写进主链区块。
RSK其实也是侧链的框架,你可以理解为闪电网络解决的是比特币支付问题,而RSK则是通过侧链为比特币创建了一套类似以太坊的图灵完备的智能合约平台。:
二.分片
分片(sharding)其实是一种传统数据库的技术,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片 (Vitalik Buterin称它为宇宙Universes) ,不过应用到区块链当中会相当复杂。
以太坊的分片,简单来说就是将区块链网络划分成若干能够处理交易的较小组件式网络,以实现每秒处理数千笔交易的支付系统。
设置一个区块链,在这个区块链系统中有一百个各自不同的宇宙,每一个宇宙都是一个独立的账户空间。使用者可以在某个宇宙中拥有一个账户,该用户发起的交易也只会对交易相关的宇宙产生影响。——Vitalik Buterin在BeyondBlock区块链技术交流大会的演讲
……是否似曾相识?听上去是不是和侧链很像?
是的,如果说侧链是通过“外部嫁接”到主链,那分片就是将主链进行“内部分割”,显然后者的实现难度要比前者复杂的多!也因此很多人都认为V神把事情复杂了……其具体为何要如此实现V神自有他的道理,不在本文讨论,但基本可以确定的是,即使是分片,也会为效率牺牲一定程度的“去中心化”。顺带一提,EOS也有分片,叫Region。
三.DAG
DAG 是有向无环图(Directed Acyclic Graph)的缩写,这是一种有顶点和边的图结构。它可以保证从一个顶点沿着若干边前进(有向),但永远不能回到原点(无环)。
在IOTA这个项目中,提到的Tangle(缠结)就属于DAG的一种数据结构,真正意义上讲,IOTA已不属于“区块链”,你可以理解为如果比特币、以太坊使用的是底层数据结构是BlockChain,而IOTA的底层数据结构则是DAG,但它依然属于“去中心化”的范畴。
有向无环图(Tangle)
在 IOTA 里发起一笔交易的流程如下:
你需要先找到网络里的两笔交易,验证它们的合法性,然后做微量的POW计算,把自己的交易与它们绑定,再广播到网络。你的交易会被后来的交易以相同的方式验证。
如果验证你交易的其他交易越多,则你的交易的确定性越高。当达到一个临界值时,就认为这个交易被确定了,这和比特币6个区块确定交易状态的思想一致。简单来说,IOTA是把算力作为交易的一部分。只要你想加入这个网络,那必须先成为Mini版矿工,做出微量的POW贡献,也因此它是去中心化的。
DAG的优势可以做到高并发,理论上是无限多的并发,意味着它可以大幅提升交易速度。
四、子链
说到子链,首先绕不开的一个话题就是墨客MOAC链,MOAC——即Mother Of All Chain的缩写,中文翻译成“众链之母”,或是“女娲链”。这是一个主网已经上线了的第三代公链,它率先突破异步合约调用、合约分片处理和全领域跨链等当前业界难题,对合约的处理速度远远优于当前譬如以太坊等智能合约平台。
子链的出现,是一个革命性的变革,如果你考虑墨客MOAC的生态,它就好像一个开发用的GitHub,那么子链,可以变成一个个功能库,让子链之间可以互相分享。而各种提供服务的子链,因为服务的不同,必须有角色细分。比如提供ipfs的子链,重点在存储;提供zksnarks的子链,重点在运算速度。那么怎么可能用同样配置的scs来做不同的子链支持基础呢?怎么可以用同样的共识算法,同样的区块速度等等,来做不同的事情呢?所以你需要专业人士做专业的事情,那么子链,就是可以根据你不同的需求来定义与创建。
当然,子链和侧链的区别也很大,一方面侧链是为小微转账设计的,不可能提供墨客链这种功能库,互相调用的功能,另一方面,侧链可以直接打垮,子链你无法直接攻击,必须攻击母链。双花肯定不会出现,因为母链这里解决全局一致性,主要就是底层vnode的规模受到币价的挖矿利润限制,但是scs的规模,可以在应用推动下,无限扩展。墨客MOAC就是解决了V神和BM的争论中,维持了去中心化的安全性,又提升了可扩展性能力。
实事上,墨客是以太坊的补充(complement),是兼容以太坊的。在V神和BM的争论中,V神批评EOS过于中心化是正确的,而BM批评以太坊缺乏扩展能力也是正确的。V神寻求用分片来解决问题,也是正确选择。墨客,其实就是落实了V神几年想做而没有做到的事情(当然还有更多的创新),并且证明了可以不需要牺牲去中心化而解决扩展性问题。
以上就是关于可扩展性相关技术的一些简单概括和介绍,实际应用的技术细节和命名方式可能会有很多,但从目前来看,大体都脱离不了侧链、分片、DAG、子链的范畴。
从目前来看,无论何种技术的解决方式都是在从“更高的效率”和“去中心化”二者之间寻找一个平衡,想要效率就要中心化,想要安全就要去中心化,也因此,现有解决方案也都在引发一些“不是去中心化”的质疑声。
其中争论最激烈的就是比特币Core派和BCH派之间,Core派的解决方案是侧链,BCH就抨击侧链最终会沦为中心化的银行。BCH的解决方案是大区块,Core派就抨击BCH本身就是以矿霸为核心的中心化代表。
有争论才有突破,意味着问题本身就还没有唯一的答案。这反而证明了我们正处于一个区块链刚刚起步发展的黄金时代,也是区块链现阶段的魅力所在,百家争鸣、各抒己见……投身此间,我倍感庆幸。