原文:《区块链可扩展性的局限性》(The Limits to Blockchain Scalability)

作者:以太坊创始人Vitalik Buterin

特别感谢Felix Lange,Martin Swende,Marius van der Wijden和Mark Tyneway为本文供给的反馈和谈论。

区块链的可扩展性究竟能到达什么程度? 真能如Elon Musk(特斯拉CEO)所愿“经过将区块时间缩短10倍,将区块巨细添加10倍从而将手续费下降100倍”,而又不会导致极点中心化并危害区块链实质的根本特点吗? 假如不能,那区块链的可扩展性究竟能到达什么程度? 假如挑选经过更改一致算法来进行扩展,又会怎么样? 更重要的是,假如您更改技能以引入诸如ZK-SNARK或分片之类的功用,会怎么样? 从理论上讲,分片的区块链能够持续添加更多的分片,这会不会导致添加的东西更多?

现实证明,有一些重要且相当微妙的技能要素约束了区块链的扩展性,即便是选用分片的区块链也面临这些问题。 在许多状况下,咱们都会有相应的扩展性处理方案,可是这些处理方案也存在局限性。 这篇文章将探讨这些可扩展性方案中存在的许多问题。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

只需添加参数即可处理所有问题。但价值是什么?

普通用户也能运转节点,这关于区块链去中心化至关重要

凌晨2:35,您收到来自国际另一端的同伴的紧急电话,他在帮助您办理矿池(或许或许是质押池)。 您的同伴告诉您,从大约14分钟前开端,您的池子和其他几个池子忽然从链上割裂出来,原始链依旧承载着79%的网络算力。 根据您的节点,这个大都链(原始链)出产的区块是无效的。 这出现了余额过错:密钥区块好像过错地将450万枚额外代币分配给了一个不知道地址。

一个小时后,您开端与其他两个像您相同迷茫的矿池以及一些区块浏览器和买卖所在电报群中交流。最后你看到某人发出了一个推特链接。 该推文写道:“新的链上可持续协议发展基金正式发布”。

到了早上,推特上、社区论坛上开端充溢没有审查过的论点,各种讨论无处不在。 可是这时分,此前新增发的450万枚代币中的很大一部分现已在链上被转换为其他财物,从而现已进行了数十亿美元的DeFi买卖。 79%的一致节点以及所有重要浏览器和轻钱包都正在遵从这一新链条。 或许这个新的开发者基金将为某些开发供给资金,或许或许所有这些资金都会被抢先的矿池,买卖所等吞掉。 可是,不论成果怎么,该基金在所有意图和意图上都是既成现实,而普通用户则无力反击。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

好戏即将上映。或许能够由MolochDAO或其他机构赞助。

这种工作能产生在您的区块链上吗?您的区块链社区的精英,包含矿池,区块浏览器和托管节点,或许和谐得很好。他们很或许都在同一个电报群和微信群中。假如他们真的想对协议规矩进行忽然更改以促进自己的利益,那么他们或许会这样做。以太坊区块链曾在十小时内彻底处理了一个一致失利;假如您的区块链只有一个客户端完成,而且您只需求将代码更改布置到几十个节点,那么和谐更改客户端代码的速度就能够更快。使这种和谐的社会进犯无效的仅有牢靠办法是经过去中心化社区的活跃防御,也便是用户。

幻想一下,假如用户正在运转验证区块链的节点(不管是直接还是经过更高级的直接技能),并主动回绝损坏协议规矩的区块,即便超过90%的矿工或质押者支持该协议,结局会怎么样。假如每个用户都运转一个验证节点,那么这种进犯将很快失利:一些矿池和买卖所将分叉,但这看起来很愚笨。可是,即便仅仅某些用户运转了验证节点,该进犯也不会为进犯者带来成功。相反,这将导致混乱,因为不同的用户会看到不同的链。至少,随之而来的市场惊惧和或许持续的链割裂将大大下降进犯者能够获得的利润。要处理抵触所需求的许多时间成本本身就会让进犯者抛弃进犯主意。

让咱们搞清楚一点:你对歹意协议更改的反抗来自于一种由用户验证区块链的文明。而不是PoW或PoS——Hasu

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

这一点能够看Hasu怎么说的

假如您的社区由37个节点运转者和80000个被迫听众组成,他们负责用于检查签名和区块头,那么进犯者将获胜。 假如您的社区的每个人都在运转节点,那么进犯者将会失利。 咱们不知道针对协同进犯的“牛群免疫”的确切阈值是多少,可是有一件工作是必定清楚的:节点越多越好,节点越少越糟糕,咱们必定需求不止几十个或几百个。

那么,咱们需求全节点完成多少工作?

为了最大化能够运转节点的用户数量,咱们将重点关注惯例的消费级硬件。 能够经过要求一些简单购买的专用硬件(例如,从Amazon购买)来添加一些网络容量,可是实践上这并没有给扩展性带来太多添加。

全节点处理许多买卖的才干存在三个要害约束:

  • 核算才干:在安全运转一个节点的状况下,需求占用多少百分比的CPU才干?

  • 带宽:考虑到当时互联网衔接的现实状况,一个区块能够包含多少个字节?

  • 存储:咱们能够要求用户存储多少GB磁盘? 另外,读取速度要求多快? (HDD机械硬盘能够用吗?还是说需求固态硬盘?)

许多对运用“简略”技能可将区块链扩展到多远的过错观点,是因为对这些数字中的每个都过于达观。 咱们能够逐个介绍一遍这三个要素:

核算才干

  • 过错:100%的CPU才干能够用于区块验证

  • 正确:大约5-10%的CPU才干可用于区块验证

百分比如此低首要原因有四个:

  • 咱们需求一个安全边沿来应对DoS进犯的或许性(进犯者为利用代码弱点而进行的买卖比惯例买卖需求更长的处理时间)

  • 节点离线后需求能够同步链。 假如我断开网络一分钟,我应该能够在几秒钟内再次与网络同步

  • 运转节点不应太快耗尽电池电量,也不应使所有其他应用程序的运转变慢

  • 节点还需求履行其他非区块出产使命,首要围绕在p2p网络上验证和呼应传入的买卖和恳求。

请注意,直到最近,大大都针对“为什么只有5-10%?”的解说专心于一个不同的问题:因为PoW区块是随机出现的,因而验证区块所花费的时间较长,会添加一起创建多个区块的危险。 有许多处理此问题的办法(例如,Bitcoin NG,或运用PoS)。 可是这些修补程序不能处理其他四个问题,因而它们无法像许多人最初以为的那样在扩展性方面带来巨大的优点。

并行性也不是全能的。 一般,即便是看似单线程的区块链客户端也现已并行化:签名能够由一个线程验证,而履行则由其他线程完成,而且有一个单独的线程在后台处理买卖池逻辑。 而且,越挨近所有线程100%的运用率,运转节点所消耗的能量就越多,而且抵挡DoS的安全边沿也越低。

带宽

  • 过错:假如咱们每2-3秒就有产出10 MB巨细的数据区块,那么大大都用户的网络速度都> 10 MB /秒,因而他们当然能够处理这样的区块

  • 正确:或许咱们能够每12秒处理1-5 MB的区块。这现已很难了。

如今,咱们常常听到关于互联网衔接能够供给多少带宽的广告统计数据:一般听到100 Mbps乃至1 Gbps的数字。可是,因为以下几个原因,广告中的带宽和预期的实践带宽之间存在很大差异:

  1. “ Mbps”是指“每秒数百万个比特”;比特是字节的1/8,因而您需求将广告的比特数字除以8以获得广告中的字节数。

  2. 就像所有公司相同,互联网供给商常常说谎。

  3. 总是有多个应用程序运用同一互联网衔接,因而节点无法占用整个带宽。

  4. p2p网络不可避免地会带来其本身的开支:节点常常最终会屡次下载并重新上载同一区块(更不用说在包含在区块中之前经过mempool广播的买卖)。

Starkware在2019年进行了一次试验,他们初次发布了500 kB的区块,这是因为买卖数据gas成本的下降初次使这种或许性成为或许,但实践上有几个节点无法处理该巨细的区块。此后,处理大区块的才干得到了改善,并将持续得到改善。可是,不管咱们做什么,咱们依然无法天真地获取以MB /秒为单位的平均带宽,让自己信任咱们能够承受1 s的推迟,而且能够具有如此巨细的区块。

存储

  • 过错:10 TB

  • 正确:512 GB

您或许会猜到,这里的首要论点:理论与实践之间的差异。从理论上讲,您能够在亚马逊上购买8 TB固态硬盘(您的确需求SSD或NVME; HDD太慢,无法存储区块链状况)。实践上,用于编撰此博客文章的笔记本电脑具有512 GB存储空间,而且假如您让人们去购买自己的硬件,则其中许多都只会变得很懒惰(或许他们买不起800美元的8 TB SSD),而且运用中心化供给商。即便您能够将区块链安装到某个存储上,高水平的活动也能够轻松地快速刻录到磁盘上,并迫使您不断购买新磁盘。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

一组区块链协议研讨人员对每个人都有多少磁盘空间进行了查询。 我知道样本量很小,但依然能够阐明一些问题.

此外,存储巨细决定了新节点能够联机并开端参加网络所需的时间。 现有节点有必要存储的任何数据都是新节点有必要下载的数据。 初始同步时间(和带宽)也是用户运转节点的首要障碍。 在编撰此博客文章时,同步新的geth节点花了我大约15个小时。 假如以太坊的运用量添加了10倍,那么同步一个新的geth节点将至少花费一周的时间,这很或许导致您的网络衔承受到约束。 在进犯过程中,当对进犯的成功呼应涉及到从未运转过节点的新用户时,这特别重要。

交互效应

此外,这三种成本之间存在交互作用。 因为数据库内部运用树结构来存储和检索数据,因而从数据库中获取数据的成本随数据库巨细的对数添加而添加。 实践上,因为能够将顶层(或顶部的几层)缓存在RAM中,所以磁盘拜访成本与数据库的巨细成正比,是缓存在RAM中的数据巨细的倍数。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

不要从字面上看这张图。 不同的数据库以不同的办法工作,而且内存中的部分一般仅仅一个单层(但很大)(请参阅leveldb中运用的LSM树)。 可是根本原理是相同的。

例如,假如缓存为4 GB,而且咱们假定数据库的每一层都比前一层大4倍,则以太坊当时的〜64 GB状况将需求约2次拜访。可是,假如状况巨细添加4倍至〜256 GB,那么这将添加至〜3次拜访。因而,gas约束添加4倍实践上能够转化为区块验证时间添加约6倍。效果或许更强:硬盘已满时,读取和写入所需的时间一般比硬盘快用完时要更长。

那么这对以太坊意味着什么呢?

如今,在以太坊区块链中,虽然在惯例硬件上依然可行(我在写这篇文章时仅仅在笔记本电脑上同步了一个节点!),但运转一个节点现已对许多用户构成挑战。因而,咱们正在挨近瓶颈。中心开发人员最关心的问题是存储巨细。因而,现在,在处理核算和数据瓶颈方面的勇敢尽力,乃至是对一致算法的更改,都不太或许导致人们承受的gas约束大幅度添加。即便处理了以太坊最大的突出DoS缝隙,也只能使gas约束添加20%。

处理存储巨细问题的仅有办法是无状况(Statelessness)和状况到期(State expiry)。 无状况答应一类节点在不保护永久性存储的状况下验证区块链。 状况到期会释放出最近未拜访的状况,需求用户手动供给持续保护这些状况的依据。 这两种路径都现已运用了很长的时间,而且关于无状况的概念验证完成也现已开端。 这两项改善相结合,能够极大地缓解这些忧虑,并为大幅提高gas约束打开空间。 可是,即便在施行了无状况和状况到期之后,gas约束或许也只能安全地添加大约3倍,然后其他局限性再次开端主导。

分片之后会产生什么?

分片(Sharding)从根本上克服了上述约束,因为它使区块链中包含的数据与单个节点需求处理和存储的数据脱钩,而不是节点经过亲自下载和履行来验证区块,而是运用先进的数学和暗码技能来直接验证区块。

成果便是,选用分片的区块链能够安全地具有非分片区块链无法做到的十分高的买卖吞吐量。 这的确需求许多暗码学上的聪明才智来创建能成功地回绝无效区块的彻底验证的有用替代品,可是能够做到这一点:该理论现已树立而且根据规范草案的概念验证现已在研讨之中。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

以太坊正方案运用二次分片,其整体可扩展性受到以下现实的约束:节点有必要能够处理单个分片和信标链,而信标链有必要对每个分片履行一定的办理工作。 假如分片太大,则节点将无法再处理单个分片;假如分片太多,则节点将无法再处理信标链。 这两个约束的乘积就构成了一种上限。

能够幻想,能够经过三次分片乃至指数分片来走得更远。 在这种规划中,数据可用性采样必定会变得更加复杂,但能够做到。 可是以太坊不会选用比二次分片更高的分片了。 原因是,从买卖的分片的分片实践上无法完成额外的扩展性增益,除非其他危险开端变得不可承受地高。

那么这些危险是什么?

最小用户数

能够幻想,即便只有一个用户乐意参加其中,非分片的的区块链也能够运转。而分片区块链不是这样的:没有单个节点能够处理整条链,因而您需求足够的节点,以便它们至少能够一起处理区块链。假如每个节点能够处理50 TPS,而整条链能够处理10000 TPS,则该链至少需求200个节点才干生计。假如该链在某个时分少于200个节点,则要么节点无法再跟上链,要么节点停止检测无效块,不然或许会产生其他不良状况,具体取决于节点软件怎么设置的。

实践上,因为需求冗余(包含用于数据可用性采样),因而安全的最小节点数量比单纯的“链TPS除以节点TPS”高出几倍;关于上面的示例,咱们说是1000个节点。

假如分片区块链的容量添加10倍,则最小用户数也将添加10倍。现在,您或许会问:为什么咱们不从容量很小的时分开端开端,在看到许多用户时添加容量,在用户数量减少时减小容量?

这里面其实有一些问题:

  1. 区块链本身无法牢靠地检测到有多少个仅有用户,因而这将需求某种治理来检测和设置分片数量。针对容量约束的办理很简单成为割裂和抵触的本源。

  2. 假如许多用户忽然并意外退出,该怎么办?

  3. 添加发动分叉所需的最小用户数,使得歹意接管变得更加困难。

最低用户数为1,000,这是简直必定是能够的。 另一方面,最低用户数设为100万,这必定是不可。 乃至将最低用户数设为10,000,也是有点冒险的。 因而,好像很难证明具有超过数百个分片的分片区块链是合理的。

历史可检索性

用户真正珍视的区块链的重要特点是永久性。 当公司破产或失掉保护该生态系统的兴趣时,存储在服务器上的数字财物将在10年内停止存在。 另一方面,以太坊上的NFT是永久的。

V神最新研究:区块链可扩展性的局限性,反驳马斯克的狗狗币扩展方式

是的,到2372年,人们仍能够下载和检查您的加密猫。

可是一旦区块链的容量过高,存储所有这些数据就会变得更加困难,直到某个时间存在很大的危险,历史的某些部分最终将……没人存储。

量化这种危险很简单。以区块链的数据容量(MB /秒)为单位,乘以〜30即可得到每年以TB为单位存储的数据量。当时的分片方案的数据容量约为1.3 MB /秒,因而约为40 TB /年。假如将其添加10倍,则将变为400 TB /年。假如咱们期望数据不只能够拜访,而且能够方便地拜访,那么咱们还需求元数据(例如,对汇总买卖进行解压缩),因而,这便是每年4 PB,或许十年后到达40 PB。 互联网档案(Internet Archive)才运用50 PB。因而,这是分片区块链安全的合理体积上限。

因而,看起来在这两个维度上,以太坊分片规划实践上现已大致针对相当合理的最大安全值。常数能够添加一点,但不能添加太多。

总结

测验扩展区块链的办法有两种:根本的技能改善和简略地添加参数。首要,添加参数听起来很有吸引力:假如您是在餐巾纸上进行数学运算,这就很简单让自己信任家用笔记本电脑每秒能够处理数千笔买卖,不需求ZK-SNARK,汇总或分片。不幸的是,有许多微妙的理由能够解说为什么这种办法从根本上是有缺点的。

运转区块链节点的核算机无法花费100%的CPU才干来验证区块链;他们需求很大的安全边沿来反抗意外的DoS进犯,他们需求备用容量来履行诸如在内存池中处理买卖之类的使命,而且您不期望在核算机上运转节点以使该核算机无法一起用于任何其他应用程序。带宽同样也有水分:10 MB / s的衔接并不意味着您每秒能够具有10 MB的区块!或许是每12秒才干有1-5 MB的块。这与与存储相同。添加对运转节点的硬件要求以及将节点的运转约束在专门的参加者上并不是一种处理方案。关于去中心化的区块链而言,关于普通用户而言,能够运转节点并构成一种文明,即运转节点是一种普通活动,这一点至关重要。

另一方面,根本的技能改善是可行的。 当时,以太坊的首要瓶颈是存储巨细,而无状况性和状况到期能够处理此问题,并答应将其添加最多约3倍——但不能更多,因为咱们期望运转一个节点比现在更简单。 选用分片的区块链能够进一步扩展,因为分片的区块链中单个节点不需求处理每笔买卖。 可是即便是分片区块链,容量也有局限性:随着容量的添加,最小安全用户数添加,归档区块链的成本(以及假如没有人去归档链,数据存在丢掉的危险)就会上升。 可是咱们不用太担心:这些约束足够高,以至于咱们能够在保证区块链的彻底安全性的一起每秒处理超过一百万笔买卖。 可是在不献身使区块链如此有价值的去中心化性质的前提下,还将需求做一些工作。

视野开拓

狩猎采集者并未刻意压制自身对物质的“追求”;他们只是未及形成此种欲念。“进一步说,我们的[蒙塔格奈人(Motagais)]野蛮人能适彼乐土,幸免一宗罪恶,全赖上帝保佑;有两个罪恶之源将许多欧洲人送入了炼狱和惩罚,却未染指这广袤的森林——这两个罪恶之薮便是欲望和贪婪……他们都安享简单的生活,没人为了获得财富而将自己出卖给恶灵。”(LeJeue,1897,p.231) 我们总认为狩猎采集者是贫穷的,因为他们两手空空;或许我们更应认为,他们的一无所有是出于对自由的追求。“他们极端有限的物质财产,使他们摆脱对日常琐碎的光顾,可以尽享人生。”(Guside,1961,p.1)-《石器时代经济学》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注