- A+
雍和比特币
简略地添加参数的扩展办法听起来很有吸引力,但存在显着缺点,底子的技能改善才是可行的。
原文标题:《首发丨 V 神最新研讨:区块链可扩展性的局限性,辩驳马斯克的狗狗币扩展办法》 撰文:Vitalik Buterin,以太坊创始人 翻译:Kyle 来历:巴比特区块链的可扩展性究竟能到达什么程度? 真能如 Elon Musk (特斯拉 CEO)所愿「经过将区块时间缩短 10 倍,将区块巨细添加 10 倍从而将手续费下降 100 倍」,而又不会导致极点中心化并危害区块链实质的底子特点吗? 假如不能,那区块链的可扩展性究竟能到达什么程度? 假如挑选经过更改一致算法来进行扩展,又会怎样样? 更重要的是,假如您更改技能以引进比如 ZK-SNARK 或分片之类的功用,会怎样样? 从理论上讲,分片的区块链能够持续添加更多的分片,这会不会导致添加的东西更多?现实证明,有一些重要且适当奇妙的技能要素束缚了区块链的扩展性,即便是选用分片的区块链也面对这些问题。 在许多状况下,咱们都会有相应的扩展性处理方案,可是这些处理方案也存在局限性。 这篇文章将谈论这些可扩展性方案中存在的许多问题。
只需添加参数即可处理一切问题。但价值是什么? 一般用户也能运转节点,这关于区块链去中心化至关重要 清晨 2:35,您收到来自国际另一端的同伴的紧迫电话,他在帮助您办理矿池(或许或许是质押池)。 您的同伴告诉您,从大约 14 分钟前开端,您的池子和其他几个池子忽然从链上割裂出来,原始链依旧承载着 79%的网络算力。 根据您的节点,这个大都链(原始链)出产的区块是无效的。 这呈现了余额过错:密钥区块好像过错地将 450 万枚额定代币分配给了一个不知道地址。一个小时后,您开端与其他两个像您相同苍茫的矿池以及一些区块浏览器和买卖地点电报群中交流。最终你看到或人发出了一个推特链接。 该推文写道:「新的链上可持续协议开展基金正式发布」。到了早上,推特上、社区论坛上开端充溢没有审查过的观点,各种谈论无处不在。 可是这时分,此前新增发的 450 万枚代币中的很大一部分现已在链上被转换为其他财物,从而现已进行了数十亿美元的 DeFi 买卖。 79%的一致节点以及一切重要浏览器和轻钱包都正在遵从这一新链条。 或许这个新的开发者基金将为某些开发供给资金,或许或许一切这些资金都会被抢先的矿池,买卖所等吞掉。 可是,不论成果怎样,该基金在一切意图和意图上都是既成现实,而一般用户则无力反击。
好戏行将上映。或许能够由 MolochDAO 或其他组织赞助这种作业能产生在您的区块链上吗?您的区块链社区的精英,包含矿池,区块浏览器和保管节点,或许和谐得很好。他们很或许都在同一个电报群和微信群中。假如他们真的想对协议规矩进行忽然更改以促进自己的利益,那么他们或许会这样做。以太坊区块链曾在十小时内彻底处理了一个一致失利;假如您的区块链只要一个客户端完结,而且您只需求将代码更改布置到几十个节点,那么和谐更改客户端代码的速度就能够更快。使这种和谐的社会进犯无效的仅有牢靠办法是经过去中心化社区的活跃防护,也便是用户。幻想一下,假如用户正在运转验证区块链的节点(不管是直接仍是经过更高档的直接技能),并主动回绝损坏协议规矩的区块,即便超越 90%的矿工或质押者支撑该协议,结局会怎样样。假如每个用户都运转一个验证节点,那么这种进犯将很快失利:一些矿池和买卖所将分叉,但这看起来很愚笨。可是,即便仅仅某些用户运转了验证节点,该进犯也不会为进犯者带来成功。相反,这将导致紊乱,由于不同的用户会看到不同的链。至少,随之而来的商场惊惧和或许持续的链割裂将大大下降进犯者能够取得的赢利。要处理抵触所需求的许多时间本钱自身就会让进犯者抛弃进犯主意。
让咱们搞清楚一点:你对歹意协议更改的反抗来自于一种由用户验证区块链的文明,而不是 PoW 或 PoS。——Hasu
这一点能够看 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 巨细的数据区块,那么大大都用户的网络速度都 gt; 10 MB / 秒,因而他们当然能够处理这样的区块
- 正确:或许咱们能够每 12 秒处理 1-5 MB 的区块。这现已很难了。
现在,咱们常常听到关于互联网衔接能够供给多少带宽的广告统计数据:一般听到 100 Mbps 乃至 1 Gbps 的数字。可是,由于以下几个原因,广告中的带宽和预期的实践带宽之间存在很大差异:
- 「 Mbps」是指「每秒数百万个比特」;比特是字节的 1/8,因而您需求将广告的比特数字除以 8 以取得广告中的字节数。
- 就像一切公司相同,互联网供给商常常扯谎。
- 总是有多个应用程序运用同一互联网衔接,因而节点无法占用整个带宽。
- 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),而且运用中心化供给商。即便您能够将区块链安装到某个存储上,高水平的活动也能够轻松地快速刻录到磁盘上,并迫使您不断购买新磁盘。
一组区块链协议研讨人员对每个人都有多少磁盘空间进行了查询。 我知道样本量很小,但依然能够阐明一些问题此外,存储巨细决议了新节点能够联机并开端参加网络所需的时间。 现有节点有必要存储的任何数据都是新节点有必要下载的数据。 初始同步时间(和带宽)也是用户运转节点的首要妨碍。 在编撰此博客文章时,同步新的 geth 节点花了我大约 15 个小时。 假如以太坊的运用量添加了 10 倍,那么同步一个新的 geth 节点将至少花费一周的时间,这很或许导致您的网络衔承遭到束缚。 在进犯过程中,当对进犯的成功呼应涉及到从未运转过节点的新用户时,这特别重要。 交互效应 此外,这三种本钱之间存在交互作用。 由于数据库内部运用树结构来存储和检索数据,因而从数据库中获取数据的本钱随数据库巨细的对数添加而添加。 实践上,由于能够将顶层(或顶部的几层)缓存在 RAM 中,所以磁盘拜访本钱与数据库的巨细成正比,是缓存在 RAM 中的数据巨细的倍数。
不要从字面上看这张图。 不同的数据库以不同的办法作业,而且内存中的部分一般仅仅一个单层(但很大)(请参阅 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)从底子上克服了上述束缚,由于它使区块链中包含的数据与单个节点需求处理和存储的数据脱钩,而不是节点经过亲身下载和履行来验证区块,而是运用先进的数学和暗码技能来直接验证区块。成果便是,选用分片的区块链能够安全地具有非分片区块链无法做到的十分高的买卖吞吐量。 这的确需求许多暗码学上的聪明才智来创立能成功地回绝无效区块的彻底验证的有用替代品,可是能够做到这一点:该理论现已树立而且根据标准草案的概念验证现已在研讨之中。
以太坊正计划运用二次分片,其整体可扩展性遭到以下现实的束缚:节点有必要能够处理单个分片和信标链,而信标链有必要对每个分片履行必定的办理作业。 假如分片太大,则节点将无法再处理单个分片;假如分片太多,则节点将无法再处理信标链。 这两个束缚的乘积就构成了一种上限。能够幻想,能够经过三次分片乃至指数分片来走得更远。 在这种规划中,数据可用性采样必定会变得愈加杂乱,但能够做到。 可是以太坊不会选用比二次分片更高的分片了。 原因是,从买卖的分片的分片实践上无法完结额定的扩展性增益,除非其他危险开端变得不可承受地高。 那么这些危险是什么? 最小用户数 能够幻想,即便只要一个用户乐意参加其间,非分片的的区块链也能够运转。而分片区块链不是这样的:没有单个节点能够处理整条链,因而您需求满足的节点,以便它们至少能够一同处理区块链。假如每个节点能够处理 50 TPS,而整条链能够处理 10000 TPS,则该链至少需求 200 个节点才干生计。假如该链在某个时分少于 200 个节点,则要么节点无法再跟上链,要么节点中止检测无效块,不然或许会产生其他不良状况,详细取决于节点软件怎样设置的。实践上,由于需求冗余(包含用于数据可用性采样),因而安全的最小节点数量比单纯的「链 TPS 除以节点 TPS」高出几倍;关于上面的示例,咱们说是 1000 个节点。假如分片区块链的容量添加 10 倍,则最小用户数也将添加 10 倍。现在,您或许会问:为什么咱们不从容量很小的时分开端开端,在看到许多用户时添加容量,在用户数量减少时减小容量?这儿面其实有一些问题:
- 区块链自身无法牢靠地检测到有多少个仅有用户,因而这将需求某种办理来检测和设置分片数量。针对容量束缚的办理很简略成为割裂和抵触的本源。
- 假如许多用户忽然并意外退出,该怎样办?
- 添加发动分叉所需的最小用户数,使得歹意接收变得愈加困难。
最低用户数为 1,000,这是简直必定是能够的。 另一方面,最低用户数设为 100 万,这必定是不可。 乃至将最低用户数设为 10,000,也是有点冒险的。 因而,好像很难证明具有超越数百个分片的分片区块链是合理的。 前史可检干脆 用户真实珍爱的区块链的重要特点是永久性。 当公司破产或失掉保护该生态系统的爱好时,存储在服务器上的数字财物将在 10 年内中止存在。 另一方面,以太坊上的 NFT 是永久的。
是的,到 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 倍——但不能更多,由于咱们期望运转一个节点比现在更简略。 选用分片的区块链能够进一步扩展,由于分片的区块链中单个节点不需求处理每笔买卖。 可是即便是分片区块链,容量也有局限性:跟着容量的添加,最小安全用户数添加,归档区块链的本钱(以及假如没有人去归档链,数据存在丢掉的危险)就会上升。 可是咱们不用太忧虑:这些束缚满足高,以至于咱们能够在保证区块链的彻底安全性的一同每秒处理超越一百万笔买卖。 可是在不献身使区块链如此有价值的去中心化性质的前提下,还将需求做一些作业。特别感谢 Felix Lange,Martin Swende,Marius van der Wijden 和 Mark Tyneway 为本文供给的反应和谈论。来历链接:www.8btc.com
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-






2021年6月2日 上午9:10 沙发
区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中心化的数据库,