'CryptoYC'
研究|浅谈扩容方案
🌿

研究|浅谈扩容方案

因为以太坊的高费用和拥堵问题,使得二层一直是一个被大多数人关注的领域,并且相继出现了很多方案来缓解以太坊所面临的这些问题,本篇文章就以太坊的几种扩容方案进行梳理和讨论。

目前针对以太坊的问题出现了很多种扩容方案,比如以太坊自己推出的beacon chain将交易分片放在链下处理,near夜影协议的扩容思路和以太坊的beacon链思路相似,但是更为简洁,被称为最优雅的分片协议;Flow将区块链中出块的参与者进行角色分类,分离了共识层和计算层,充分利用计算资源提高计算层效率;还有从根本框架改变了区块链结构的图形区块链DAG,例如avalanche和algorand。除了这些公链,在二层上也有很多优秀的扩容方案:Plasma,Rollup(这里主要是zk-rollup和op-rollup),Validium,下面这张图可以通过两个特点将这些方案进行简单的区分,Zk-rollup和Validium主要是依据产生的密码学零知识证明来证明各批次交易,而Op-rollup和Plasma主要是将每个批次的交易结果上传,里面包含了交易哈希等。

图片来源:vitalik medium
图片来源:vitalik medium

Plasma

Plasma其实是一种框架,很多人把Plasma当成侧链,它们其实是不同的,具体可以阅读Vitalik写过的一篇关于Plasma和侧链的文章,文章中提到Plasma相当于非托管的侧链,当Plasma上的错误被检测出来时是可以保证用户安全的退出Plasma。Plasma是乐观型,默认所有行为都是正确的,不过在每个新区块上主链时,需要提交该资产最近一次交易所对应的merkle分支,智能合约会留一段时间给用户提交欺诈证明,用户需要等待一个挑战期(7-14天)并且支付高额的费用,如果在这期间没有人提交挑战,那么就会被验证为正确区块。

Plasma的框架:

标准流程是在进出(存款和退出)Plasma chain的时候才需要和主链上的智能合约交互一次,资产转到链下进行时就会有状态确认,用来保证用户的资金不会受到损失。取款(退出)时,跟这个取款操作相关的账号或交易都会被禁止。取款分为三种:简单取款(simple withdrawal),快速取款(fast withdrawal)和批量取款(Mass Withdrawal)。简单取款会有个challenge period,如果没有异议,取款成功,资产回到主链;快速取款会引入一个中间人(liquidity provider),用户从LP这里直接取款,但需要支付给LP一定的费用,同时LP和用户会有个liquidity contract。比如A要快速取款,B是LP,A想取出10个eth,先存进合约中,子链上打包了这笔交易以后,A调用合约中的退出函数,获得一个token(该token代表10个eth),B检查子链之后用9个eth购买这个token。A取出9个eth,B赚1个eth。但快速取款的条件是没有拜占庭行为;剩下最后一种批量取款,也会有个节点(exit processor)去处理取款,并且收取一定的报酬。

Rollup

Rollup是根据Plasma改进而来,解决了Plasma暴露的问题。核心理念也是把分散的交易浓缩打包成一笔交易发布到链上。先出现的是Zk-rollup,后出现的是Op-rollup,Op-rollup和Plasma的框架更相似。zk和op是两个完全相反的解决方案(悲观和乐观),两个方案都在做不同的取舍。

  • Zk-rollup:简单来说就是 交易压缩+零知识证明(zk-snark),来提供有效性证明,在打包的每个批次中包含一个zk的密码学证明来保证真实性。有两个角色:transactor(交易者)和relayer(中继者)。
  • transactor就是普通用户(以太坊的外部用户),将交易发给中继者,其中包含相应的手续费给中继者。

    relayer负责验证收集到的交易,并将交易打包,生成zksnark中的证明,再将证明和核心数据以及最新全局状态的默克尔根一起提交到链上的智能合约,过程需要gas fee。

    zk-rollup用了零知识证明,但不支持通用型的智能合约(但随着技术发展,zk-rollup兼容EVM已经是可以实现的),并且生成snark的过程过长,因为QAP问题带来的缺点就是可扩展性差,验证人需要的计算量非常大,该方案费用较高。随后就出现了Op-rollup。

  • Op-rollup:Rollup+Plasma 的方式结合了zk的数据可用性和Plasma的惩罚机制。舍去了零知识证明,所以支持通用型智能合约。在主链的Rollup合约中记录了内部状态根的转换和每个批次的哈希值,折合Plasma很相似,但相比Plasma,提款时间有所减少(1-7天),并且相比Zk-rollup,费用也比较低,不过按照Vitalik的话来说,Op-rollup只适用于短期,长期来看还是Zk-rollup更有前途。

Validium

和Zk-rollup很像,唯一区别就是数据可用性。Zk-rollup的数据可用性在链上,而Validium则是在链下,这样就获得了更高的吞吐量,同时也牺牲了安全性,运营者可以冻结用户资金,具体方法如下图:运营者在用户不知情的情况下对默克尔树进行改动,使用户无法创建默克尔证明来证明所有权;Validium里有个数据可用性委员会(DAC),如果DAC中有一定比例的成员私钥泄漏,攻击者就可以更改状态,冻结所有资产,所以安全性有待提高。

图片来源:https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263

其余的几种扩容方案之前都有讨论过,欢迎点击下方链接阅读:

总结

在以太坊的问题没有完全解决之前,依然会不断地涌现出更多的扩容方案,就目前的几种方案来看,各有优缺点,用户完全可以通过自己的偏好来选择使用哪一种方式进行交易。但就技术层面和长远角度来说,zk-rollup可能是更被大家看好的一种方案。

参考文献:

https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html

https://medium.com/matter-labs/zkrollup-vs-validium-starkex-5614e38bc263