区块链火币网安全密码学习笔记:以太坊扩容
1、什么是以太坊扩容
扩容从字面上来看,扩容是扩大容量的意思,如果你的服务器容量不够用,那就需要扩容。这样我们对扩容有了一个基本的概念。而以太坊扩容就是目标以太坊的容量和速度已不能支撑日益增长的需求,需要通过扩大容量或者承载内容,从而缓解当前所受压力。
今年以来随着流动性挖矿及 Uniswap 的火爆,用户发现交易的 gas price 成本一路飙升到 500Gwei (约两三百人民币),需要漫长的交易确认时间,未确定交易数多达 14 万余笔,以太坊转账变的极其拥堵和昂贵。
尽管链上活动的增加有益于以太坊,但是吞吐量很低也会导致严重网络拥堵下的高额交易费。此外,因为以太坊的容量有限,大量原本可以执行的交易也因为高昂的手续费而无法执行,这严重阻碍了以太坊生态的发展以及用户的增长因此,以太坊扩容的话题被行业提升到前所未有的高度。
2、以太坊扩容的意义是什么
以太坊目前每秒只能处理 15 笔交易。目前区块链主流平台都在努力提高每秒的交易量,但相比于 Visa 这类动辄每秒上万的吞吐量(TPS)仍相形见绌。因此,如何在保证区块链安全性的情况下,有效提升区块的吞吐量,即实现区块链扩容,为区块链技术大规模应用落地提供技术支撑。
在 2017 年的时候以太坊就因为 ICO 热潮就已经导致以太坊开始变的拥堵,主链每秒所能处理的交易量只有 15 笔(tps),从那时起,陆续有开发团队提出相应的解决方案,只是随后而至的熊市降低了人们的交易热情,这类方案也就淡出了投资者的视野。
3、以太坊扩容的方案
可以把以太坊扩容的方式分为三种:Layer0 扩容,从计算机网络的物理层和网络层来提升区块链形成共识和完成的速度;Layer1 扩容,提升区块链本身的 TPS(每秒交易数量);Layer2 扩容,在不改变区块链基础设施的情况下提升区块链容量空间。
三种方式分别如下:
3.1、Layer 0 方案
区块链的 Layer 0 扩容方案,也即对应着 OSI 模型中 1-4 层底层协议的修改及优化,以期达到加快区块数据传递到全网节点的速度。目前已经提出的方案,有 BDN 分发、组播锁定组、QUIC UDP 协议等方案。
目前,Layer 1/2 的扩容方案都遇到了各自的技术瓶颈,落地周期也大大长于预期。被给予厚望的以太坊分片方案目前仍处于研究阶段,尚未有 Proof ofConcept。前期大肆宣传的比特币闪电网络在上线后也发生锁定币被恶意丢失、节点被大规模 DDoS 下线等事件。由于这些技术的成熟落地要求计算机科学的学术前沿有所突破,在中短期内实现大规模落地的可能性较小。相比之下,Layer 0 的扩容方案之前较少被提出,也很少有人关注,反而有可能获得快速的突破。网络协议底层中有许多中间件由于历史遗留原因,优化空间很大。而且传统网络协议很多是针对服务器-客户端的架构进行优化的。因此,如果针对 p2p 网络的架构对网络协议进行定制,是有可能获得大幅的性能提升的。著名的快播,就是基于 udp 协议对 p2p 网络进行了大幅度的优化,才可以在一般的网络带宽下达到惊人的流媒体传输速度的。
此外,Layer 0 的扩容方案一旦成功,对于其上的 Layer 1/2 的扩容方案有乘数效应,只会更加促进它们的发展。
3.2、Layer 1 方案
第一层( Layer1)扩容,指的是直接发生在区块链上,通过改变区块大小或数据结构从而达到提高处理交易能力的解决方案,比如分片、隔离见证,都是典型的链上扩容方案。
A、分片
对于以太坊来说,Layer1 解决方案的官方方案是对核心以太坊协议进行升级,这就是 ETH 2.0。
分片(Sharding)是以太坊 2.0 扩容选择。分片会将区块链分成多个部分,每个部分都只需要网络中的一部分计算机来进行交易验证。至于由谁来验证哪些区块,系统会随机进行选择。由于每次只需要进行部分交易验证,分买火币网山寨币能赚吗片帮助区块链在可扩展性问题上实现了突破。
分片其实是一种传统数据库就有的技术,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片 (Vitalik Buterin 称它为宇宙 Universes) ,不过应用到区块链当中会相当复杂。
以太坊的分片,简单来说就是将区块链网络划分成若干能够处理交易的较小组件式网络,以实现每秒处理数千笔交易的支付系统。
设置一个区块链,在这个区块链系统中有一百个各自不同的宇宙,每一个宇宙都是一个独立的账户空间。使用者可以在某个宇宙中拥有一个账户,该用户发起的交易也只会对交易相关的宇宙产生影响。(Vitalik Buterin 在 BeyondBlock 区块链技术交流大会的演讲)
以太坊 2.0 的部署被分成了四个阶段:
B、侧链
测链是以太坊 Layer1 扩容非官方的解决方案。侧链和分片有一定相似之处。如果分片就是将主链进行“内部分割”,侧链就是通过把外部的处理能力“外部嫁接”到主链。
侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主区块链或者主链,每二个区块链则被称为侧链。侧链是独立的网络,通常具有唯一的共识层,通过双向挂钩连接到一个基础层协议。由于没有第一层设计的负担,侧链可以支持超出其基础层能力的某些特性,包括但不限于可扩展性和互操作性,同时不依赖于第一层的存储。尽管有这些所谓的好处,但这些分支网络需要参与者之间更多的信任和协作。它的缺点是安全性问题,因为无法获得主链的安全性。
比如 xDai 是以太坊侧链方案之一,它运用 POA Network 突出的跨链桥接技术 (Token Bridge Technology),桥接 Dai 稳定币作为通证,具有「可扩展、使用方便」的优点,由原 POA 团队负责开发。
3.3、Layer 2 方案
第二层( Layer2)扩容,是在不直接改动区块链本身的规则(区块大小、共识机制等)基础上,再架设一层只将必要信息、或需要共识参与(如数据出错、发生纠纷时)时才与区块链进行信息交互和传播。
如果将区块链比作一条公路的话,链下扩容不是在原有公路上进行修改扩建,而是基于现有路线架设四通八达的高架或是隧道,使得大部分汽车都在新的高架上开,原来主路不到万不得已尽量不用。
Layer 2 项目是为了缓解 Layer 1 的困境而产生出来的可扩展性方案。不过,并不是所有的 Layer 2 解决方案都有相同的解决路径。不同的 Layer 2 方案之间存在各种不同的权衡。它们在安全性、性能、可用性等各个方面都存在差异。这些差异足以对它们的未来产生深远影响。对于投资者来说,这些差异也是重要的选择项目的基础。
此外,这些差异也导致它们未来可能适用于不同的用例和场景。当前的 Layer2 主要有如下几类:Plasma、Sidechain、State Channels、Opitmistic rollups、ZkRollup、Vadium。
Alexa Gluchowski 综合了各个层面将主要的 Layer 2 解决方案简化成一张表格,基本上把这些 Layer2 的不同技术路径的权衡和利弊都表达清楚:
(六大 layer2 技术的综合比较,Source:Alex Gluchowski)
A、状态通道
状态通道的优点是延迟低,实时性高,缺点是用户人数有限,资金利用率低。可以用于小额支付 / 预测市场 / 赌球赛马等方面。
使用状态通道时双方会在链下建立一个状态通道,通过交换私钥进行签名以后的信息,并在链下进行交易。当时比特币比特币实现了名为闪电网络的支付通道网络,把这个状态通道互相连接起来:即使用户没有直接状态通道,也可以通过几个中间节点把它一一层一层地转发过去,相当于 channel network。
基本上,状态通道的延迟能做到互联网的延迟。比如说服务器之间的延迟是多少,这个状态通道的延迟就是多少。市面上通过其他链发送交易的速度是秒级的。但是状态通道的话,一般都是毫秒级的。另外,它还有一个优点就是实时性非常高。
尽管状态通道的 scale up 是说你节点数量越多,你的网络越大,你的容量越大。这只是一个很美好的设想,实际上它受到了一个很大的限制——low liquidity utilization (低资金利用率)。
状态通道是要这个双方都把这个钱存到链上的通道,之后再互相进行发送支付。第一步,就是要把钱存到链上去,这个钱是有限的。就是你比如说手上你有 1000 个以太,状态通道只能发送 1000 个以太。如果你突然发送一笔 2000 以上的以太,它就无能为力了。如果只能用状态通道转发的话,这个效率是非常低下。
B、Plasma
Plasma 缺点是无法应用到智能合约上,用户跑节点的负担重。
Plasma 是 V 神认为大有希望的一个解决方案。Plasma 的问题是它只能够把支付做好,对于稍微复杂的智能合约却无能为力。作恶的一方是不会把数据给你提交上链,以至于这种争议至少要等两个星期才能解决。这个过程是对于用户来说难以接受的。另外,由于 Plasma 的数据都在链下,用户跑 plasma 的节点负担是很重的:你跑的时间长了,就会消耗几十个 G 或者几百个 G,是手机无法承受的。
C、Rollup
Rollup 优点是数据在链上,可以随时验证(也是和 Plasma 唯一的区别),链下支付可以用任何代币支付而链上支付只能用 ETH
Rollup 是 19 年慢慢火起来的一个概念。它是链下的计算+链上的数据+Fraud proof。然后它最关键的一个点就是不是所有数据都在链上,它的链上数据仅仅限于它每一笔交易的输入,但不包括它的最终状态。比如说,你从 a 走到 b,我只是把路径告诉你了;但是你具体在 a 做了什么事,在 b 做了什么事,这种状态是记录在链下的。
任何人任何用户都可以去看 Rollup 的区块,也就是打包后的交易,然后把它这个状态的转移重新更换。如果状态转移是错的,用户就可以在链上提交 Fraud proof,并将验证人淘汰掉。因为验证人在链上是有质押的,如果他作恶的话,他的质押会被没收掉。且虽然不是每一笔 Rollup 都会进行验证,但是验证人会一直跑,一旦发现有 Fraud (比如说 A 给 B 发了 1 块钱,但记录的是 A 给 B 发了 3 块钱),就可以拿到相应奖励。这个过程可以理解为任何人都可以进行抽查以及督察。
他的好处是数据都在链上,可以任凭用户随时去验证,不会出现像 plasma 那样的数据可用性问题。且验证的结果具有唯一性,验证人链下把这个智能合约跑一遍,就会发现验证链下的计算是否按照链上的智能合约。从经济学角度来说,一般的验证人不太会去做恶,因为他的质押额太大了。
Rollup 和 Plasma 其实非常类似。只是 Rollup 把数据放到链上去,Fraud Proof 的过程会非常简单。Rollup 的 TPS 会在主链的几百倍左右,一般是在几百上千的级别;根据不同业务,如果应用简单一些的话,应该可以做到几千级别。而 plasma 的 TPS 最高能到上万。
Rollup 可以分为 Optimistic Rollup 和 Zk Rollup。
Optimistic Rollup
Optimistic Rollup 从技术来说要比 ZK Rollup 简单很多。它的好处是可以支持通用的智能合约。
Optimistic 和 ZK 都牵涉到一个最终性的问题。Optimistic Rollup 的最终性是比较长的,用户没有跑过这个证明,提现期需要一到两周。这期间系统会给足够多的窗口,让足够多的人去验证这个事情。ZK 不会碰到这个问题,因为一旦它的零知识证明上链,它的最终性也就确认了。
ZK Rollup
ZK Rollup 可以支持支付以及 DEX,缺点是耗内存和 CPU/ 无法支持智能合约,离落地还有时间
ZK 和 Optimistic 的区别是,Fraud Proof 变成了 Validity Proof。这两种验证方式相当于两种不同的思维方式:Optimistic Rollup 是乐观思维,就是说相信验证人是不会做恶的;ZK 是悲观思维,相信验证人还是会作恶的,所以要生成一个零知识证明,然后和 Rollup 一起打包到链上去。大家去验证不需要跑状态转移,因为这个转移已经通过零知识证明跑过一遍了。
那么 ZK Rollup 的问题是什么呢?它对于这个节点要求是非常非常高的。ZK Rollup 就是耗 CPU 和内存,并需要很强的服务器去做这个打包。而 Optimistic Rollup 对于打包者的要求并不那么高。唯一要求的就是验证人在链上质押来保证不会作恶。
由于这个 ZK 的复杂性,导致它目前只能用于一些特定的应用:比如说像那个支付和 DEX。另外 ZK 还包含了零知识电路,它是密码学中非常新的概念,目前存在安全隐患的可能。
内容整理来源:
本学习笔记内容整理自以下文章,感谢原作者:
作者:新暴富志愿者小组,来源:DEFI新暴富