V神所提及的以太坊2.0分片设计是什么?
我们都知道区块是一个一个按顺序生成的,区块生成的速度和每个区块能记录的交易数量就决定了以太坊每秒能处理的交易数,想要提高以太坊的性能,有2种方法:一种是区块扩容,就是让区块包含更多的数据,但这要求存储区块的节点有更大的硬盘,有更好的网络带宽,这会进一步增加挖矿和运行节点的成本,而挖矿成本越高,去中心化程度就会更低,会大大降级安全性。所以以太坊社区从开始就放弃了这种方案,采用“分片链”来作为替代方案。
什么是分片
分片是数据库分区的一种形式,也称为水平分区,就是将一个大的数据库拆分成很多小的、可处理的部分,以此来提高性能,缩短响应时间。其实分片并不是一个新的概念,早在 90 年代后期就出现在了传统的中心化数据库管理中。这个概念的流行,要归功于一个多玩家同时在线玩的角色扮演游戏 Ultima Online。
在这个游戏里,开发者将玩家分配到不同的服务器来缓解流量压力(这意味着有很多个平行的“游戏世界”)。除此之外,在商业上,还有一个比较典型的分片案例就是将用户信息的数据库按照地理位置划分,同一个区域的用户信息放在一起,存到单独的服务器中。分片的概念也与这些案例非常相似。
什么是以太坊里的分片
举个例子:你在商店买早餐的时候,当只有一个收银员,可能要排很长的队等待结帐;当有两个收银员,立刻就会快一倍;如果有四个收银员,也许就不用排队了。这就是分片的基本逻辑,其实非常简单,可以简单理解为把一个人的工作分给多个人来完成以提升效率。
我们把例子放到以太坊的角度来看:以太坊分片前只有主链一个账本,每秒约能处理12~45笔交易,一旦交易量大于这个数据时就需要排队,也就是网络会拥堵;分片后就是把一个账本变成64个账本,让它们同时来处理交易,相当于商店开了64个收银台来收银,效率就会大大提升。这样就从原先单一节点处理全网的所有任务变成了多组节点同时并行处理。
从这个例子中,我们可以看到,分片技术可以大幅提高区块链的性能。但是如此简单的逻辑为什么却如此难以实现呢?因为把一个账本分成64个账本记账后,会面临很多新的问题,分片技术要做的就是解决这些问题。
分片技术潜在的风险
分片技术虽然能在一定程度上解决区块链的性能问题,让区块链更具有可扩展性,但也存在两个缺陷。
一个是分区后,不同区的通信问题。上面的例子,将以太坊网络分成 64个分区,每个分区都是独立的,相当于有64条独立的、平行的以太坊区块链,每条都由一组矿工维护和确认交易。这64条独立的以太坊区块链并不能相互通信,如果要通信,势必要增加跨分区的通信机制(类似跨链),这会增加区块链的复杂性,开发难度也会提高。
第二个是区块链的安全性。还是上面的例子,在未分片之前,以太坊网络包含整个网络的节点算力。分成 64 个分区后,每个分区相当于一条独立的以太坊区块链,算力下降到各分区每组节点的总和。此时,只要对其中一个分区进行 51% 算力攻击就会很容易攻破。控制了一个分区,攻击者就可以在这个分区内做恶,篡改交易。
以太坊基金会计划将分片技术作为以太坊 2.0 的升级内容之一。以太坊如何解决分片技术的上述 2 个缺陷,我们拭目以待。
Scan QR code with WeChat