当前位置 > 股票知识 > 正文

日经225-000528

日经225-000528

日经225-sgn

作者:Vitalik Buterin

感谢Felix lange,Martin swende,Marius van der wijden,Mark Tyneway的反馈和校对。

我们能在多大程度上提高区块链的可扩展性?真的有可能像埃隆马斯克所说的那样,“将封锁时间加快十倍,将封锁规模增加十倍,将手续费减少一百倍”,而不造成极端的中央集权,违反区块链的本质属性吗?如果答案是否定的,我们能走多远?改变公式算法会怎么样?此外,如果我们引入像ZK-斯纳克或碎片化这样的函数呢?理论上,一个支离破碎的区块链可以不断添加片段,那么真的可以做到吗?

日经225-100p

事实证明,无论是否使用碎片化,都有重要而微妙的技术因素限制了区块链的可扩展性。很多情况下都有解决方案,但即使有解决方案,也有局限性。本文将讨论其中的许多问题。

如果我们简单地提高参数,问题似乎就解决了。但是我们要为此付出什么呢?

普通用户能够运行节点对于区块链的去中心化非常重要。想象一下,凌晨2点,你接到了一个来自世界另一端的紧急电话,是他帮你经营了矿池(质押池)。从大约14分钟前开始,你的池和其他几个人已经脱离了链,网络仍然保持着79%的计算能力。根据您的节点,多数链的块无效。此时,出现了一个平衡错误:该块似乎错误地将450万个额外令牌分配给了一个未知地址。

日经225-河北省副省长

一个小时后,你和另外两个发生同样事故的小矿池参与者,一些block浏览器和交易所方在一个聊天室里,看到有人发推特链接,开头写着“宣布新的可持续协议发展基金上链”。

上午,相关讨论在推特和一个社区论坛上广泛传播,没有审查内容。但当时,450万代币中的很大一部分已被转换成链中的其他资产,并进行了数十亿美元的defi交易。79%的共识节点,以及所有主要区块链浏览器和轻型钱包的端点,都遵循这个新的链。或许新的开发商基金将为一些开发项目提供资金,或许所有这些项目都将被领先的矿业集团、交易所及其裙带关系所吞噬。但不管结果如何,基金实际上已经成为既成事实,普通用户无法抗拒。

也许有这样的主题电影。它可能由MolochDAO或其他组织资助。

日经225-中经汇通

这种情况会发生在你的区块链吗?你的区块链社区的精英们,包括矿池、区块链浏览器、托管节点,可能配合的很好,大概都在同一个电报频道和微信群。如果他们真的想为了利益而突然修改协议的规则,那么他们可能就有这个能力。以太区块链在十个小时内彻底解决了共识失败。如果它是一个仅由一个客户端实现的区块链,并且只需要将代码更改部署到几十个节点,它可以更快地协调客户端代码更改。抵御这种社会合作攻击唯一可靠的方法就是“被动防御”,而这种力量来自一个集中的群体:用户。

想象一下,如果用户运行区块链的验证节点(无论是直接验证还是其他间接技术),并自动拒绝违反协议规则的块,即使超过90%的矿工或承诺支持这些块,故事将如何发展。

如果每个用户都运行一个认证节点,那么攻击很快就会失败:一些挖掘池和交换会分叉,整个过程看起来很蠢。但是即使只有部分用户运行认证节点,攻击者也无法取得大的胜利。相反,攻击会导致混乱,不同的用户会看到不同的区块链版本。最坏的情况下,随之而来的市场恐慌和可能出现的连锁分叉会大大降低攻击者的利润。处理这样一场旷日持久的冲突的想法本身可以防止大多数袭击。

日经225-眼镜行业

Hasu对这一点的看法:

“我们必须明确一件事。我们之所以能够抵制恶意协议变更,是因为我们在区块链有一种用户验证的文化,而不是因为PoW或PoS。”

假设您的社区有37个节点操作者和80,000个检查签名和阻止头的被动侦听器,那么攻击者就赢了。如果每个人都运行这个节点,攻击者就会失败。我们不知道发起群体免疫对抗协同攻击的确切阈值,但有一点是绝对清楚的:好节点越多,恶意节点越少,我们需要的数量肯定超过成百上千。

日经225-BMBS

那么整个节点的上限是多少呢?为了让尽可能多的用户能够运行整个节点,我们将重点放在常见的消费者硬件上。即使可以很容易的购买到特殊的硬件,可以降低所有节点的门槛,其实扩展性提升并没有我们想象的那么好。

整个节点处理大量事务的能力主要受到三个方面的限制:

计算能力:在保证安全性的前提下,我们可以划分多少个CPU来运行节点?带宽:根据当前的网络连接,一个块可以包含多少字节?存储:我们可以要求用户使用多少空间来存储?另外,应该读多快?(就是HDD够不够?还是说我们需要固态硬盘?许多关于使用“简单”技术来大幅扩大区块链的误解源于对这些数字的过于乐观的估计。我们可以依次讨论这三个因素:

日经225-周六

计算能力

回答错误:块验证应该使用100% CPU。正确答案:大约5-10%的CPU可以用于区块验证。限制如此之低的四个主要原因如下:

我们需要一个安全边界来覆盖DoS攻击的可能性(攻击者利用代码弱点进行的交易需要超过

日经225-熊超

常规交易更长的处理时间)节点需要在离线之后能够与区块链同步。如果我掉线一分钟,那我应该要能够在几秒钟之内完成同步运行节点不应该很快地耗尽电池,也不应该拖慢其他应用的运行速度节点也有其他非区块生产的工作要进行,大多数是验证以及对 p2p 网络中输入的交易和请求做出响应

请注意,直到最近大多数针对“为什么只需要 5-10%?”这一点的解释都侧重于另一个不同的问题:因为 PoW 出块时间不定,验证区块需要很长时间,会增加同时创建多个区块的风险。这个问题有很多修复方法,例如 Bitcoin NG,或使用 PoS 权益证明。但这些并没有解决其他四个问题,因此它们并没有如许多人所料在可扩展性方面获得巨大进展。

并行性也不是灵丹妙药。通常,即使是看似单线程区块链的客户端也已经并行化了:签名可以由一个线程验证,而执行由其他线程完成,并且有一个单独的线程在后台处理交易池逻辑。而且所有线程的使用率越接近 100%,运行节点的能源消耗就越多,针对 DoS 的安全系数就越低。

带宽错误答案:如果没 2-3 秒都产生 10 MB 的区块,那么大多数用户的网络都大于 10 MB/秒,他们当然都能处理这些区块正确答案:或许我们能在每 12 秒处理 1-5 MB 的区块,但这依然很难

如今,我们经常听到关于互联网连接可以提供多少带宽的广为传播的统计数据:100 Mbps 甚至 1 Gbps 的数字很常见。但是由于以下几个原因,宣称的带宽与预期实际带宽之间存在很大差异:

日经225-张伟欣

“Mbps”是指“每秒数百万 bits”;一个 bit 是一个字节的 1/8,因此我们需要将宣称的 bit 数除以 8 以获得字节数。网络运营商,就像其他公司一样,经常编造谎言。总是有多个应用使用同一个网络连接,所以节点无法独占整个带宽。P2P 网络不可避免地会引入开销:节点通常最终会多次下载和重新上传同一个块 (更不用说交易在被打包进区块之前还要通过 mempool 进行广播)。

当 Starkware 在 2019 年进行一项实验时,他们在交易数据 gas 成本降低后首次发布了 500 kB 的区块,一些节点实际上无法处理这种大小的区块。处理大区块的能力已经并将持续得到改善。但是无论我们做什么,我们仍然无法获取以 MB/秒为单位的平均带宽,说服自己我们可以接受 1 秒的延迟,并且有能力处理那种大小的区块。

存储错误答案:10 TB正确答案:512 GB

正如大家可能猜到的,这里的主要论点与其他地方相同:理论与实践之间的差异。理论上,我们可以在亚马逊上购买 8 TB 固态驱动 (确实需要 SSD 或 NVME;HDD 对于区块链状态存储来说太慢了)。实际上,我用来写这篇博文的笔记本电脑有 512 GB,如果你让人们去购买硬件,许多人就会变得懒惰 (或者他们无法负担 800 美元的 8 TB SSD) 并使用中心化服务。即使可以将区块链装到某个存储设备上,大量活动也可以快速地耗尽磁盘并迫使你购入新磁盘。

一群区块链协议研究员对每个人的磁盘空间进行了调查。我知道样本量很小,但仍然...

日经225-亚森

此外,存储大小决定了新节点能够上线并开始参与网络所需的时间。现有节点必须存储的任何数据都是新节点必须下载的数据。这个初始同步时间 (和带宽) 也是用户能够运行节点的主要障碍。在写这篇博文时,同步一个新的 geth 节点花了我大约 15 个小时。如果以太坊的使用量增加 10 倍,那么同步一个新的 geth 节点将至少需要一周时间,而且更有可能导致节点的互联网连接受到限制。这在攻击期间更为重要,当用户之前未运行节点时对攻击做出成功响应需要用户启用新节点。

交互效应

此外,这三类成本之间存在交互效应。由于数据库在内部使用树结构来存储和检索数据,因此从数据库中获取数据的成本随着数据库大小的对数而增加。事实上,因为顶级 (或前几级) 可以缓存在 RAM 中,所以磁盘访问成本与数据库大小成正比,是 RAM 中缓存数据大小的倍数。

不要从字面上理解这个图,不同的数据库以不同的方式工作,通常内存中的部分只是一个单独 (但很大) 的层 (参见 leveldb 中使用的 LSM 树)。但基本原理是一样的。

日经225-sda

例如,如果缓存为 4 GB,并且我们假设数据库的每一层比上一层大 4 倍,那么以太坊当前的 ~64 GB 状态将需要 ~2 次访问。但是如果状态大小增加 4 倍到 ~256 GB,那么这将增加到 ~3 次访问。因此,gas 上限增加 4 倍实际上可以转化为区块验证时间增加约 6 倍。这种影响可能会更大:硬盘在已满状态下比空闲时需要花更长时间来读写。

这对以太坊来说意味着什么?

现在在以太坊区块链中,运行一个节点对许多用户来说已经是一项挑战,尽管至少使用常规硬件仍然是可能的 (我写这篇文章时刚刚在我的笔记本电脑上同步了一个节点!)。因此,我们即将遭遇瓶颈。核心开发者最关心的问题是存储大小。因此,目前在解决计算和数据瓶颈方面的巨大努力,甚至对共识算法的改变,都不太可能带来 gas limit 的大幅提升。即使解决了以太坊最大的 DoS 弱点,也只能将 gas limit 提高 20%。

对于存储大小的问题,唯一解决方案是无状态和状态逾期。无状态使得节点群能够在不维护永久存储的情况下进行验证。状态逾期会使最近未访问过的状态失活,用户需要手动提供证明来更新。这两条路径已经研究了很长时间,并且已经开始了关于无状态的概念验证实现。这两项改进相结合可以大大缓解这些担忧,并为显著提升 gas limit 开辟空间。但即使在实施无状态和状态逾期之后,gas limit 也可能只会安全地提升约 3 倍,直到其他限制开始发挥作用。

日经225-华北制药股份有限公司

另一个可能的中期解决方案使使用 ZK-SNARKs 来验证交易。ZK-SNARKs 能够保证普通用户无需个人存储状态或是验证区块,即使他们仍然需要下载区块中的所有数据来抵御数据不可用攻击。另外,即使攻击者不能强行提交无效区块,但是如果运行一个共识节点的难度过高,依然会有协调审查攻击的风险。因此,ZK-SNARKs 不能无限地提升节点能力,但是仍然能够对其进行大幅提升 (或许是 1-2 个数量级)。一些区块链在 layer1 上探索该形式,以太坊则通过 layer2 协议 (也叫 ZK rollups) 来获益,例如 zksync, Loopring 和 Starknet。

分片之后又会如何?

分片从根本上解决了上述限制,因为它将区块链上包含的数据与单个节点需要处理和存储的数据解耦了。节点验证区块不是通过亲自下载和执行,而是使用先进的数学和密码学技术来间接验证区块。

因此,分片区块链可以安全地拥有非分片区块链无法实现的非常高水平的吞吐量。这确实需要大量的密码学技术来有效替代朴素完整验证,以拒绝无效区块,但这是可以做到的:该理论已经具备了基础,并且基于草案规范的概念验证已经在进行中。

日经225-瑞康医药股吧

以太坊计划采用二次方分片 (quadratic sharding),其中总可扩展性受到以下事实的限制:节点必须能够同时处理单个分片和信标链,而信标链必须为每个分片执行一些固定的管理工作。如果分片太大,节点就不能再处理单个分片,如果分片太多,节点就不能再处理信标链。这两个约束的乘积构成了上限。

可以想象,通过三次方分片甚至指数分片,我们可以走得更远。在这样的设计中,数据可用性采样肯定会变得更加复杂,但这是可以实现的。但以太坊并没有超越二次方,原因在于,从交易分片到交易分片的分片所获得的额外可扩展性收益实际上无法在其他风险程度可接受的前提下实现。

那么这些风险是什么呢?

日经225-深圳市城管局

最低用户数量

可以想象,只要有一个用户愿意参与,非分片区块链就可以运行。但分片区块链并非如此:单个节点无法处理整条链,因此需要足够的节点以共同处理区块链。如果每个节点可以处理 50 TPS,而链可以处理 10000 TPS,那么链至少需要 200 个节点才能存续。如果链在任何时候都少于 200 个节点,那可能会出现节点无法再保持同步,或者节点停止检测无效区块,或者还可能会发生许多其他坏事,具体取决于节点软件的设置。

在实践中,由于需要冗余 (包括数据可用性采样),安全的最低数量比简单的“链 TPS 除以节点 TPS”高几倍,对于上面的例子,我们将其设置位 1000 个节点。

如果分片区块链的容量增加 10 倍,则最低用户数也增加 10 倍。现在大家可能会问:为什么我们不从较低的容量开始,当用户很多时再增加,因为这是我们的实际需要,用户数量回落再降低容量?

日经225-150276

这里有几个问题:

区块链本身无法可靠地检测到其上有多少唯一用户,因此需要某种治理来检测和设置分片数量。对容量限制的治理很容易成为分裂和冲突的根源。如果许多用户突然同时意外掉线怎么办?增加启动分叉所需的最低用户数量,使得防御恶意控制更加艰难。

最低用户数为 1,000,这几乎可以说是没问题的。另一方面,最低用户数设为 100 万,这肯定是不行。即使最低用户数为 10,000 也可以说开始变得有风险。因此,似乎很难证明超过几百个分片的分片区块链是合理的。

历史可检索性

用户真正珍视的区块链重要属性是永久性。当公司破产或是维护该生态系统不再产生利益时,存储在服务器上的数字资产将在 10 年内不再存在。而以太坊上的 NFT 是永久的。

日经225-外汇交易技巧

是的,到 2372 年人们仍能够下载并查阅你的加密猫。

但是一旦区块链的容量过高,存储所有这些数据就会变得更加困难,直到某时出现巨大风险,某些历史数据最终将……没人存储。

要量化这种风险很容易。以区块链的数据容量 (MB/sec) 为单位,乘以 ~30 得到每年存储的数据量 (TB)。当前的分片计划的数据容量约为 1.3 MB/秒,因此约为 40 TB/年。如果增加 10 倍,则为 400 TB/年。如果我们不仅希望可以访问数据,而且是以一种便捷的方式,我们还需要元数据 (例如解压缩汇总交易),因此每年达到 4 PB,或十年后达到 40 PB。Internet Archive (互联网档案馆) 使用 50 PB。所以这可以说是分片区块链的安全大小上限。

日经225-马斯克跳舞

因此,看起来在这两个维度上,以太坊分片设计实际上已经非常接近合理的最大安全值。常数可以增加一点,但不能增加太多。

结语

尝试扩容区块链的方法有两种:基础的技术改进和简单地提升参数。首先,提升参数听起来很有吸引力:如果您是在餐纸上进行数学运算,这就很容易让自己相信消费级笔记本电脑每秒可以处理数千笔交易,不需要 ZK-SNARK、rollups 或分片。不幸的是,有很多微妙的理由可以解释为什么这种方法是有根本缺陷的。

运行区块链节点的计算机无法使用 100%的 CPU 来验证区块链;他们需要很大的安全边际来抵抗意外的 DoS 攻击,他们需要备用容量来执行诸如在内存池中处理交易之类的任务,并且用户不希望在计算机上运行节点的时候无法同时用于任何其他应用。带宽也会受限:10 MB/s 的连接并不意味着每秒可以处理 10 MB 的区块!也许每 12 秒才能处理 1-5 MB 的块。存储也是一样,提高运行节点的硬件要求并且限制专门的节点运行者并不是解决方案。对于去中心化的区块链而言,普通用户能够运行节点并形成一种文化,即运行节点是一种普遍行为,这一点至关重要。

日经225-上海大众交通

然而,基础的技术改进是可行的。当前,以太坊的主要瓶颈是存储大小,而无状态性和状态逾期可以解决该问题,并使其能够最多增长约 3 倍,但不能再多,因为我们希望运行节点比当前更容易。采用分片的区块链可以进一步扩展,因为分片区块链中的单个节点不需要处理每笔交易。但即使是分片区块链,容量也有局限性:随着容量的增加,最低安全用户数增加,归档区块链的成本 (以及如果没有人归档链,数据存在丢失的风险) 就会上升。但是我们不必过于担心:这些限制足以我们在保证区块链完全安全性的同时每秒处理一百万笔交易以上。但是要在不损害区块链最宝贵的去中心化特性的前提下实现这一点,我们需要付出更多努力。

原文链接:https://vitalik.ca/general/2021/05/23/scaling.html

日经225-

上一篇:600536-600353
下一篇:没有了
返回顶部