众所周知,以太坊网络有限的交易处理能力极大阻碍了其成为“世界计算机”的步伐。以太坊创始人Vitalik曾多次公开示,在保持既有安全性与去中心化特性的前提下实现区块链扩容,是当下以太坊技术团队的核心工作。
然而,由于时至今日,迟迟未见其扩容技术方案带来的质性飞跃,众多开发者和用户对以太坊智能合约平台的拥堵现状及应用前景日渐忧虑。
自2016年以来,以太坊的种种扩容尝试就经常性涌入公众视野(包括Plasma、Sharding、Casper等等),究竟其扩容方案都经历了哪些变化,当前进展以及最新规划如何,小葱特此对以太坊的扩容长征路进行了梳理与分析。
扩容呼声日渐迫切 V神丢出新构想
近日,以太坊客户端Parity的开发人员Afri Schoedon指出以太坊已经超负荷运行,提醒用户“不要继续在以太坊网络部署DAPP”,并呼吁开发人员转移到以太坊经典(ETC)或POA网络(基于以太坊的侧链),他认为这些网络的交易处理能力依然很强。
对此,Vitalik当即回应表示“不同意”Schoedon的看法,并指出,“1)大多数DAPP都有优化gas的空间,就算你不这样做,只要你的DAPP抬高了gas费用,增加了网络压力,其它DAPP也会进行优化;2)以太坊链上还有很多毫无价值的垃圾交易;3)每个人都应该研究关注二层方案。”
并且,Vitalik在以太坊技术论坛上发文表示,二层方案不需要权衡数据的可行性,也没有活跃度要求。如果部署得当,使用zk-snarks进行批量交易验证,以太坊可以“大量”扩容,每次交易的成本不会高于1000 gas,最多可完成每秒500笔链上交易,十分安全,且不依赖第二层扩展方案(如Plasma或雷电网络)。
在该论坛上,Vitalik与众多开发者就该方案的实现进行了讨论。他承认运用zk-snark技术实现批量交易验证将伴随大量的零知识证明计算工作(证明的生成),不过他认为,证明计算的性能无需担忧,从长远来看,可以将这些工作外包给采矿业和GPU农场。
Vitalik指出利用零知识证明技术做批量交易验证是一个二层解决方案,其设计难点在于:要求每个验证器都实际拥有所有数据,需要随机抽样的验证器子集来证明不同数据子集的所有权,而这就需要通过“分片”设计来解决,这是难点所在。
zk-snark,是一项隐私应用非常广泛的技术,全称是Zero knowledge succinct non-interactive argument of knowledge(零知识简洁非交互知识的证据),已在Zcash项目里经过实践检验,被认为是较成熟的技术。zk-snark技术的亮点在于,生成证明的简洁,以及验证速度的高速。本次Vitalik提出的方案中使用该技术的目的旨在提升可扩展性,而非强化隐私。就目前来看,以太坊2.0中具体如何落地这一技术还处于探讨之中。
以太坊开发人员很久之前就注意到区块链扩容的重要性。也讨论和提出过诸多实验方案。
扩容伊始 :那些被pass的理论方案
替代币(altcoin)扩容方案
理论上,可使用替代币(altcoin)解决扩容问题。该方案是将转账计算放在链下进行,并且接受同时存在多个替代币,它们各自拥有自己的区块链。如此一来,每个区块链减少的流量,能让整个区块链得以扩容。但它造成的直接后果是,每个区块链有更少的节点,容易被攻击或出现恶意用户。使用替代币维持了去中心化和提高了扩容性,却极大舍弃了安全性。
增加区块大小
以太坊网络中增加区块大小,即提高gas值限制。2017年6月,以太坊基金会联合创始人Hudson Jameson曾呼吁矿工手动修改Gas限制以提高网络的交易吞吐量。但该方案也存在诸多弊端:随着Gas值上限被放大,网络易于被那些拥有大量验证处理能力的超级计算机掌控,沦为中心化系统;且该方案会导致以太坊网络出现叔块(处于非最长链上的区块)的几率升高,所以大部分矿工对这一扩容方式未作过多响应。
尽管扩容实现遇到种种阻碍,但以太坊开发者们不断寻求扩容问题的出路,并先后提出了多项技术方案。
扩容探索:多项技术方案并行研究
EIP648扩容提案:并行活动
2017年6月17日,V神在Github 开源代码库上发布了名为EIP 648的扩容提案。
该方案旨在通过各节点间的高效并行来缓解交易拥堵问题。节点在多个内核上并行进程,允许在一个线程上单独运行ICO,而以太坊网络保持不变。简言之即分流,将ICO活动与以太坊网络运行分开进行,这样就能在不影响正常以太坊网络流量的情况下同时处理多个 ICO 项目(据V神的说法,最多可达到8个)。但即使通过将这些活动分开运行,也终究是治标不治本,非长久之计。
小葱注:EIP(Ethereum Improvement Proposals),即以太坊改进建议。为促进以太坊网络发展的去中心化,以太坊社区内每件与以太坊未来发展有关的意见建议, 都可以用EIP格式提交出来,经过讨论该提案被大家选上后,会正式列入EIPs清单。EIP648就是一类扩容改进提案,但小葱发现它并未被列入EIPs清单内。
雷电网络(Raiden):把一部分交易放在链外
网络(Raiden Network)是一种利用链下支付通道网络实现以太坊扩容的技术。该项目始于2015年,与比特币上的闪电网络原理类似,雷电技术把以太坊区块上的绝大多数交易转移至链外处理,允许用户通过私下交换转账签名信息实现交易,从而大幅度增加交易处理速度。
2017年9月,雷电项目的测试网络在以太坊上部署完成,同年12月,“微型雷电网络”(uRaiden)上线以太坊主网。uRaiden是雷电网络的MVP版本,旨在提供一种小额支付机制,类似于比特币的闪电网络。雷电网络方案的主要好处是,能大幅降低每笔交易的燃料费用,但它也主要适用于经常性小额支付场景。
Plasma:把数据放在链外
与雷电网络类似,Plasma也是一种链下扩容解决方案。Plasma项目将区块链设计为树状结构,使用大量“子区块链”来分担主链上的数据储存量,每个子链都能处理和维护它自己的转账记录,同时使用特定技术实现“主链”与“子链”的连接,由主链维护其安全性,主链只需在子链中出现争议时才进行计算,从而实现最优化交易处理速度和效率。如果子链上的节点愿意,它们也可以提交转账信息并输出他们的转账记录到主链。
该方案允许每个Plasma链都可以有自己的标准,也即不同子链可以支持有不同需求的交易(如私有链),且所有交易都处在同样安全的生态系统内。
2017年8月9日,以太坊创始人与闪电网络白皮书联合作者Joseph Poon提出新型扩容方案“Plasma”。2017年11月,V神在推特上称Plasma实现已经开始。2018年1月,今年1月公布了Plasma MVP版本,是一种基于Plasma的开源合约。据悉,Plasma方案可实现每秒十亿次交易处理量,但具体实施效果怎么样还有待验证,且目前看来,它主要是为代币转移(ERC/ETH)而设计,如何扩展至更复杂的代币(如ERC721)或甚至更通用的状态转换还是未知数。不过,把部分数据放在主链之外处理似乎是一大主流扩容趋势。
Sharding(分片)
与Plasma和雷电网络不同,分片(Sharding)是一种链上扩容技术,旨在提升协议基础层的容量。
受传统数据库启发而来,分片就是把区块中的数据分成很多不同的“片段”并分别存放在各个节点中,减少每个节点数据存储量的同时,提高系统的验证速度。目前,以太坊上的交易是以线性顺序运行,每个矿工都在执行同样的程序,整个网络的计算能力取决于单台电脑的计算能力。而分片是一种动态的分区验证交易的解决方案,由用户自行选择由哪一个分片执行自己的交易,允许区块处理并行进行。这种“链上”解决方案通过多个网络计算机来分配交易负载,允许更多的交易在同一时间得到确认,从而达到扩容效果。
2017年11月,V神在以太坊开发者大会及台北举行的区块链技术交流会议上表示,分片技术或是可扩展性问题最有可能的解决方案,同时也正是以太坊2.0发展路线图中的重点。今年4月30日,V神发布了一条“分片即将到来”的推文,并分享了一个新的代码库,演示如何把分片扩展解决方案“拴在”以太坊主链上,似乎想表示分片技术正在开始走向落地和实现。
V神从不吝啬对分片技术前景的看好,他相信分片将大幅度改善以太坊现有的并发限制,真正实现扩容。分片被业界视为更为长期有效的、且理论上可行的扩容方案,不过该方案的实施还面临诸多技术挑战。比如,需要确保每个片区有足够多的节点来防止单分片接管攻击,因为一个片区节点太少容易出现妥协和欺诈;再如跨分片交易也是一大难点,目前需要冗长的收据和证明;此外,还有在收到无效排序规则时,各片区节点如何识别和验证欺诈行为,并拒绝这个排序规则,以及数据可用性问题等等。
Casper
Casper在内容上更广泛,但也有扩容效果。
Casper项目致力于将以太坊主网共识算法从POW转向POS,自2014年就被提出,四年来,以太坊开发者们就该协议实施需克服的种种问题(如长程攻击、无利害攻击、51% 攻击、网络分区恢复等)做了大量的技术尝试,并发展出2条研究分支:Casper FFG(一种混合POW/POS的共识机制,相当于POS的初级阶段)以及Casper CBC(Vlad Zamfir正在构建的完整的POS版本)。据V神称,二者但主要权衡是,后者有更好的理论属性,而前者更容易实现。
最终的Casper协议比纯粹对扩容方案内涵更广,包括能源消耗改善和安全性的提高。不过,正因为(与POW相比)单个节点消耗能源更少,该网络扩容难度更高。尽管Casper并非专为扩容而设计,但它会对以太坊网络容量产生积极影响。
根据V神今年8月份连续发布的75条推特对POS与Casper研究历史的回顾阐述,由于后期Casper FFG 方案遇到种种困难开发工作慢了下来,且团队经历分散在Casper项目和分片项目之间,导致了很多重复性工作。
因此,2018年6月,以太坊核心开发者电话会议上,团队最终决定彻底放弃“用合约实现混合 Casper FFG”的想法,而是集中精力追求完全 Casper 的独立链,将Casper与分片设计进行融合。这一决定正式宣告了EIP1011(PoW 与 PoS)与既有的Capser FFG 协议的终止。
以太坊2.0(Casper & Sharding):扩容收官之战?
根据以太坊Casper + Sharding chain v2.1工作进展描述文档(该文档最早于6月底发布,持续更新中,最近一次更新在2天前),以太坊2.0将有一项新的设计——信标链(Beacon),而这项新设计将对以太坊的可扩展性和分散性产生巨大影响。
小葱注:在社区内部各类开发文档中,以太坊2.0被称为“A sharded POS Ethereum 2.0”,可见其同时嵌入了分片与POS算法机制,融合这两大技术的新型主链被称作信标链。这是近年来以太坊一个比较大的动作。目前,以太坊2.0的路线图尚未确定,其相关的设计和规范也在不断变化。
信标链是POS系统的“主链”,与当前的以太坊区块链并行运行。当然,现有的以太坊区块链未来将被纳入新系统。信标链主要职责有:
存储和维护一组活跃且有序的验证者
处理分片与信标链之间的各项“交连”
处理自己的逐块共识以及最终确定性
存款流程和区块链结构(来自Pocket Pool的Darren Langley)
信标链(Beacon Chain)会随机抽取验证者进行出块提议和投票,以防止验证者之间的相互勾结。此外,由于验证者只能以非常有限的方式和链交互,信标链中将不再使用EVM这类执行引擎处理投票事务(团队正在开发EWASM替代EVM),因此投票效率会更高。由于不需要预估算力,所有信标链上的交易也都是免费的(gas free),整个过程会更有成本效益。
信标链与分片链(来自Pocket Pool的Darren Langley)
分片链(Shard Chains)负责处理交易并存储帐户数据,每个分片链(目前设置为1024个)都跟主链相连接;每个分片链是一个独立的POS链,它们各自有自己的状态(如账户余额、智能合约等)和交易历史,同时和信标链同使用POS共识机制。每隔一段时间(约1小时),系统会随机给各验证节点分配一个分片,负责验证和确认该分片上的区块。“交连(cross link)”将用于确认各分片链中的哪些区块进入信标链,同时交连也是各分片链之间互操作的主要方式。
据估计,分片后的以太坊每秒将能处理超过15000笔交易,这与当前的以太坊网络性能(每秒约处理15笔交易)相比,实现了真正意义上的质的飞跃。
目前,关于信标链和以太坊2.0的设计仍在进行中,许多技术团队也早已开始研究信标链客户端应用,如Lighthouse项目,Prysm项目,Trinity,Nimbus,Harmony等等。据Rocket Pool区块链高级工程师Darren Langley于9月初发布的文章称,目前信标链已经完成的工作包括:信标链状态数据结构与持续力、单个区块状态转换、分叉选择实现、验证者洗牌、区块提案者角色、数据结构序列化以及P2P协议。但仍然还有很多领域尚在研究之中。
小葱小结:“短期求创新、长期求保守”
综合上述梳理,我们可以看到,针对长久以来的区块链网络拥堵现象,以太坊核心团队曾从多个角度进行过理论与技术方案的探索和实践,包含提高 gas 值限制、发行 EIP648 扩容方案、提出Plasma、采纳分片技术(Sharding)等等,小葱根据时间线简要梳理了一下以太坊的扩容动态事件。
据各公开渠道(以太坊相关论坛、推特、Reddit)信息进行的不完全汇总
通过这一系列扩容提案的出现、转变及衍生,我们不难看出以太坊核心团队持续的技术探索能力和应变能力。同时这些主流的扩容方案之间并不冲突,甚至会在实践中走向融合(正如Casper和Sharding那样)。
或许,以太坊的扩容口号喊了太久,而扩容成效来的太慢,故而引发社区内外众多开发者的急不可耐(如开篇提到的Afri Schoedon呼吁开发人员转移到其他链);此外,EOS项目创始人BM也曾公开指出V神在解决可扩展性问题上考虑地过于复杂。
确实,我们看到在以太坊的整个扩容规划中,纳入了很多底层技术层面的考量,它试图在实现可扩展性,同时考虑可持续性、效率以及灵活性,这牵涉到多个领域的技术改进和应用部署,不仅仅是引入某个二层扩容方案,把一部分数据/交易放到链外处理这么简单,而是从区块链协议层实现扩展。
按照V神的话,他希望多种扩容方案并行使用。在Layer-1(即区块链协议层)扩容方向上的主导思想是“短期求创新,长期求保守。他认为:
Layer-1 长期来看必定趋于稳定,不会在所有技术改进上去竞争,只会尽力提供一个稳定平台,使得 Layer-2 上的创新能够发生。因为在 Layer-1上寻求解决方案要求进行持续的协议变更,而基础层的变更往往牵涉到治理和共识问题,但迄今为止,还没有哪个公链能在不沦为中心化的前提下,完成持续“活跃”的创新和治理。不过短期内,Layer-1的创新和完善是必要的。
而 Layer-2 也必定将承担起越来越多持续创新的、有挑战的重任。去中心化应用平台、加密货币支付手段、去中心化交易所机制、拍卖、隐私保护方案、支持隐私保护的编程语言等等,绝大多数可以在区块链上做的,都是重要且需要持续创新的领域。将这些功能全部“整合”进底层区块链显然不妥,会带来很高的治理成本和协调升级成本。
因此,当下以太坊在扩容上首先需要完成Layer-1的创新升级,而长期来看,会利用Plasma、雷电网络乃至更多新型的二层扩容方案以适应未来的商业应用。
相关阅读: