做最好的区块链网

tokenpocket钱包|以太坊上的扩容方案:概述

目的
区块链世界中,可扩展性是每个项目都需要应对的问题。从以太坊项目入手,有利于我更好地了解这个难题,并作出投资决策。以太坊扩容系列结束后,其他项目也可能涉及,例如EOS和Quarkchain。
这些文章不会涉及到代码,我只概述我理解的可扩展性工作机制。
2018:以太坊基建之年
之前在关于区块链可扩展性一文中提到,目前尚无区块链兼顾去中心化、可扩展性和安全。对以太坊来说,可扩展性问题在ICO和Cryptokitties等应用中已体现出来,自然这成为以太坊开发者考虑的重点。按照创始人Vitalik Buterin的说法,2018年将成为以太坊基础设施建设之年:
[2018] will be the year where all of the ideas around scalability, Plasma, proof-of-stake, and privacy that we have painstakingly worked on and refined over the last four years are finally going to turn into real, live working code.
从实用角度来说,以太坊尚处于早期,当前的情况是它既不安全(考虑到智能合约中经常出现的漏洞),也难以扩展。距离最终目标:为几十亿人服务的安全易用的去中心化网络,路途尚远。
为了解决这个问题,目前有多个项目从事以太坊扩展性研究。最近一次综合这些方案现状的是今年三月份在巴塞罗举办的ScalingNOW!大会,参会项目类别和名称如下:
State Channels(状态通道)类别uRaidenCounterfactualFunFairDecentralandLiquidity Network
Sidechains(侧链)类别Parity TechPOA NetworkPlasma
Sharding(分片)类别Diamond Drops
Multi-chain(跨链)类别Cosmos
Alternative(其他)类别TrueBit
扩展性的难点
扩展性讨论中常出现的一个缩写词是tps(transaction per second, 每秒交易数),当前以太坊差不多有15tps,而Visa在65000tps左右,可见以太坊成为日常生活的一部分,还有很长的路要走。这种限制发生在以太坊设计本质上,因为每笔交易都会被网络中每一个节点处理;每个节点,无需依赖其他人告诉当前网络状态,它自己可以得知。
或许我们可以让每个节点做更多的事情,例如把区块大小翻倍,但这样子做会牺牲去中心性,因为处理能力较强的节点将在挖矿中获得优势,从而使得全网算力分布更加集中。
所以,我们的目的是在不增加每个节点工作量的前提下,尽可能让整个网络做更多的事情。目前看来有两种方法。
如果每个节点无需处理网络中的每个操作
这个假定直接推翻了以太坊的设计原则,但如果我们把网络切成两半,各自可以半独立运行呢?A部分处理一半交易,B部分处理另一半,这将使全网tps翻倍。在此基础上,我们把网络切成多个,这将更大地提高tps。这就是前文提到的Sharding(分片)处理。
分片处理由Vitalik Buterin带领研究。以太坊将被划分为多个shard(片),每一个可以独立处理交易。分片技术经常被称为Layer 1(第一层,或称链上)扩展方案,是因为它在以太坊协议中实现。这也意味着,分片技术将造成hard fork(硬分叉)。硬分叉的定义就是区块链发生了永久性的分歧,导致没有升级的节点无法验证已升级节点产生的区块。
如果我们能从以太坊当前处理能力中获得更多
第二种想法就是,与其硬分叉以太坊,不如我们基于当前的tps做更多的事情。这种通常称为Layer 2(第二层,或称为链外)扩展方案,它们建立在以太坊之上,无需修改以太坊本身。典型的例子如上文提到的State Channels(状态通道),Plasma(侧链的一种)和TrueBit(提高复杂运算能力)。
状态通道以有赌注的打牌为例,假如我们把扑克牌游戏放到以太坊上,这将注定是一个比较昂贵缓慢的游戏,因为参与打牌的人需要等待矿工的确认,而且每次动作都需要付出以太坊的gas,这个实在难以接受。不如,我们找个以太坊之外(链外)的地方打牌,每次输赢先用本子记下来,最后到以太坊链上统一结算。这将极大加快我们的打牌进度,并且也不影响最终结果。
当然,实际运行起来是有很多细节和限制的,我将在以后的文章中解释。
侧链另一种打牌方法,我也不在以太坊上打,但我自己发明一条区块链,作为以太坊的子链依附其上,而且子链上还能挂载下一层子链。这种方法也能极大减少以太坊的负荷并提高tps。典型的项目就是Vitalik Buterin发布的Plasma技术。
TrueBitTrueBit不会直接提升网络中的tps,它的目的是让以太坊应用能处理较为复杂的运算,并且能在主链上得到验证。考虑gas费用,复杂运算在以太坊上进行是很贵的。TrueBit有一套专门的验证计算结果的方法,将在以后文章中论述。
跨链操作
目前公链(public blockchain)数目不少,Cosmos致力于建立基于区块链的以太网(Internet of Blockchains),使得各个区块链能连接到一起。Cosmos将从整个网络角度提升tps,和单个区块链的链上链外方案构成补充。
总结目前尚无区块链兼顾去中心化、可扩展性和安全。对以太坊来说,可扩展性是2018年的重点解决以太坊扩展难题,目前有链上链外两种解决方案TrueBit专门用来处理复杂运算Cosmos能从整个网络(跨链)角度提升tps到这里也就结束了以太坊扩容方案的概述,接下来的文章,将按照链上、链外、复杂计算和跨链四个角度逐一解析,也欢迎各位的反馈。