以太坊 VS 波卡,区块链可扩展性天花板在哪?

区块链的可扩展性能设计得多大?真的能像 Elon Musk 所设想的那样,“将处理时间加快 10 倍,将储存大小增加 10 倍,而将手续费降低 100 倍”,如此也不会导致极端中心化并破坏区块链的基本

区块链的可扩展性能设计得多大?真的能像 Elon Musk 所设想的那样,“将处理时间加快 10 倍,将储存大小增加 10 倍,而将手续费降低 100 倍”,如此也不会导致极端中心化并破坏区块链的基本属性吗?如果不能,这样的设计能运行多久?改变共识算法该怎么操作?更重要的是,如果更改技术以引入 ZK-SNARK 或其他分片式功能该怎么办?理论上,分片式区块链可以不断添加更多分片,但会否产生添加过载这个问题?

事实证明,一些重要的技术因素限制了区块链的扩展。同时在许多情况下,解决限制区块链发展的方案本身也有其缺陷。

因此,这篇文章将集中讨论这其中涉及的问题。

以太坊 VS 波卡,区块链可扩展性天花板在哪?

用户节点运行助力区块链去中心化趋势

凌晨 2 点 35 分,您接到来自世界另一端合作伙伴的紧急电话,他说帮助您运营您的矿池(可能是一个质押池)。大约 14 分钟前,您的合作伙伴告诉您,您的矿池和其他一些人从仍承载 79% 网络的链中分离出来。根据您的节点,多数链的区块是无效的。存在余额错误:关键块错误地将 450 万额外代币分配给未知地址。

第二天早上,社媒平台的讨论开始兴起。但此时这 450 万枚硬币的很大一部分已经在链上转换为其他资产,并且发生了数十亿美元的 De-Fi 交易。79% 的共识节点以及钱包上的所有主要区块链浏览器和与端口都在关注这条新链。也许新的开发基金会资助一些开发项目,又或者它可能会被领先的资金池和交易所及其亲信挪用。但无论结果如何,该基金会的所有计划目的都摆在面前,普通用户根本无法反击。

以太坊 VS 波卡,区块链可扩展性天花板在哪?

这会发生在你所处的区块链上吗?区块链社区精英,包括矿池、区块浏览器和托管节点,可能非常协调,它们同处在一个电报频道和微信群中。如果它们希望组织突然改变协议规则以获取更多利益,那么这或许是可行的。以太坊区块链能在十小时内彻底解决共识失败的问题,如果你使用的区块链只在一个客户端运行,并且你只需将代码更改部署到几十个节点,那么可以更快地协调对客户端代码的更改。

以太坊 VS 波卡,区块链可扩展性天花板在哪?

如果你有一个由 37 个节点运行器和 80000 个被动侦听器组成的技术社区来检查区块,那么攻击者就会获胜。如果你处在每人都运行一个节点的社区,那么攻击者就会失败。我们不知道针对协同攻击的群体免疫确切阈值是多少,但有一点是清晰的:好的节点越多,坏的节点越少,我们至少需要几十个甚至几百个节点来共同抵御。

要求全节点完成工作的限制容量

为了最大限度地增加可运行节点的用户数量,我们将专注于常规消费硬件。通过要求用户购买一些易于获得的专用硬件(例如 亚马逊)来实现容量的增加,但实际上并没有那么多可扩展的空间。

全节点处理大量事务的能力存在三个关键限制:

· 计算能力:可以安全运行节点的 CPU 百分比是多少?

· 带宽:考虑到当前互联网连接的实际情况,一个区块可以包含多少字节?

· 存储:要求用户存储多少 GB 的磁盘?此外,多快的读取速率才能流畅阅读?

许多关于区块链使用“简单”技术可扩展性的错误看法,

源于对这些影响因素的错误估计,我们再对重要的三个因素进行分析:

计算能力

· 错误答案:100% 的 CPU 功率可用于区块验证

· 正确答案:大约 5-10% 的 CPU 功率可用于区块验证

限制容量较低的四个主要原因:

· 我们需要一个安全边际来应对 DoS 攻击的可能性(攻击者利用代码中的弱点制作交易比常规交易需要更长时间进行处理)

· 节点能够在离线后同步链(掉线一分钟后重连需要几秒钟处理完毕)

· 运行一个节点不应很快耗尽电量,并拖慢其他运行程序

· 节点还需执行其他非区块生产任务,包括验证响应 p2p 网络上的传入交易和请求

直到最近,大多数解释“为什么只有 5-10%?” 问题的答案均显示:由于 PoW 块是随机出现的,需要很长时间来验证区块的同时,会增加同时创建多个区块的风险。

这个问题有很多解决方法(例如 Bitcoin NG,或者只使用权益证明)。但是这些修复并没有解决其他问题,因此它们并没有像许多人最初想象的那样,在可扩展性方面带来巨大的收益。

并行性也不是灵丹妙药。通常,即使是看似单线程的区块链客户端也已经并行化:签名可由一个线程验证,而执行交付给其他线程完成,同时有一个单独线程在后台处理事务池。然而,所有线程的使用率越接近 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 网络不可避免地引入了自己的开销:节点通常最终会多次下载和重新上传至同一个区块

当 Starkware 在 2019 年进行一项实验时,他们首次发布了 500 KB 容量的区块,因为交易数据 Gas成本降低使这一容量区块的运行成为可能,但实际上有几个节点无法处理。处理大容量区块的能力已经得到并将继续改进。但是无论我们做什么,我们仍然不能天真地获取以 MB/秒为单位的平均宽带。

贮存

· 错误答案:10 TB

· 正确答案:512 GB

正如与你猜想的那样,这部分的主要论点与其他部分相同:理论与实践之间的区别。理论上,您可以在亚马逊上购买 8 TB 的固态驱动器,实际上,用来写这篇博文的笔记本电脑有 512 GB,如果你让用户们去购买自己的硬件,他们中的许多人就会变得懒惰。即使您可以将区块链安装到某些存储上,高运行要求的活动也可以轻松快速地烧毁磁盘,并迫使您不断购买新的磁盘。

以太坊 VS 波卡,区块链可扩展性天花板在哪?

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

交互效果

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

以太坊 VS 波卡,区块链可扩展性天花板在哪?

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

例如,如果缓存为 4 GB,并且我们假设数据库的每一层都比前一层大 4 倍,那么以太坊当前的约 64 GB 状态将需要约 2 次访问。但如果状态大小增加 4 倍至约 256 GB,那么这将增加至约 3 次访问(因此每次读取的访问次数增加 1.5 倍)。因此,Gas 限制增加 4 倍将增加状态大小和读取次数,实际上转化为区块验证时间的约 6 倍时间。

对以太坊的意义

目前在以太坊区块链中,运行一个节点对于许多用户来说已经是一个挑战,尽管它至少在普通硬件上仍然是可以实现的。作者写这篇文章的同时也在笔记本电脑上同步了一个节点。

核心开发者最关心的问题是存储大小。因此,目前解决计算和数据瓶颈付出的努力,甚至对共识算法的更改,都不太可能导致大幅增加 Gas 上限。即便解决了以太坊最大的 DoS 漏洞,也只带来了 20% 的 Gas 限制增加。

存储大小问题的唯一解决方案是无状态和状态到期。无状态允许一类节点在不维护永久存储的情况下验证链。状态到期会推出最近未访问过的状态,迫使用户手动提供证明来更新它。这两条路径都已经研究了很长时间,并且已经展开了无状态模式的概念验证。这两项改进结合起来可以极大地缓解这些担忧,并为显着增加Gas 限制开辟空间。但即使在实现无状态和状态到期之后,Gas 限制也只能安全地增加约 3 倍,直到其他限制开始占据主导地位。

另一种可能的解决方案是使用 ZK-SNARKs 来验证交易。ZK-SNARKs 将确保普通用户不必亲自存储状态或验证区块,尽管他们仍然需要下载区中的所有数据以防止数据不可被攻击。此外,即使攻击者无法强制通过,如果容量增加到运行共识节点的程度太困难,仍然存在协同审查攻击的风险。因此,ZK-SNARKs 不能无限增加容量,但它们仍然可以显著增加容量(可能 1-2 个数量级)。一些连锁应用正从第 1 层探索这这种方法;以太坊通过zksync、Loopring和Starknet 等第2 层协议(ZK rollups )从这种方法中获益。

*ZK-SNARKs:“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,零知识简洁的非交互式知识论证。指的是一种证明结构,其中人们可以证明拥有某些信息,例如密钥,而不会泄露该信息,并且证明者和验证者之间没有任何交互。

区块链分片后会发生什么?

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

因此,分片式区块链可以安全地拥有非分片区块链无法实现的高水平交易量和吞吐量。同时,大量的密码学知识指导下才能创建有效的替代品,从而成功拒绝无效区块的完整验证。目前可以做到的是:该理论指导已经确立,并且基于草案规范的概念验证已经在进行中。

以太坊计划使用二次分片,其中总可扩展性受到——节点必须能够同时处理单个分片和信标链(Beacon Chain)限制,信标链必须为每个分片执行一些固定数量的管理工作。如果分片太大,节点就不能再处理单个分片,如果分片太多,节点就不能再处理信标链。这两个约束的乘积形成上限。

可以想象的是,通过三次分片甚至指数分片可以走得更远。但在这样的设计中,数据可用性抽样肯定会变得更加复杂,虽然这是可行的。目前以太坊并没有超越二次分片,原因是在其他风险并未暴露的当下,公链无法实现从分片来提升所获得的额外可扩展性收益。

那么其他风险是什么?

最小用户数

可以想象,只要有一个用户愿意参与,非分片区块链就可以运行。如果每个节点可以处理 50 TPS,而链可以处理 10000 TPS,那么链至少需要 200 个节点才能生存。如果链在任何时候都少于 200 个节点,那么要么节点停止跟上链,要么节点停止检测无效区块,或者可能产生其他不良影响,这取决于节点软件设置完成与否。

在实践中,由于需要冗余(包括数据可用性采样),安全最小计数比简单的“链 TPS 除以节点 TPS”启发式要高几倍;对于我们上面的例子,我们称它为 1000 个节点。

如果分片区块链的容量增加 10 倍,则最小用户数也会增加 10 倍。你或许会问:为什么我们不从一点点容量开始,而是在我们看到大量用户确实需要它时才增加,在用户数回落时减少?

这样做有几个问题:

1. 区块链本身无法可靠地检测链上有多少唯一用户,因此这需要某种治理来检测和设置分片计数。对容量限制的治理很容易成为分裂和冲突的焦点。

2. 如果许多用户突然间意外地同时退出怎么办?

3. 增加分叉启动所需的最低用户数会使抵制恶意收购变得更加困难。

最低用户数低于 1,000 几乎可以肯定。另一方面,至少 100 万的用户数量绝非优质选择,即使是 10,000 的最低用户数也可能开始变得有风险。因此,似乎很难证明拥有数百个分片的分片式区块链是合理的。

历史可检索性

用户真正看重区块链的一个重要属性是持久性。当公司破产或对维护该生态系统失去兴趣时,存储在服务器上的数字资产将在 10 年内停止储存,而在以太坊上的 NFT 却是永久保留的。

以太坊 VS 波卡,区块链可扩展性天花板在哪?

但是,一旦区块链的容量变得太高,存储所有数据就变得越发困难。

量化这种风险很容易。以 MB/sec 为单位的区块链数据容量,乘以约 30 得到每年存储的数据量(以 TB 为单位)。当前分片计划的数据容量约为 1.3 MB/秒,因此约为 40 TB/年;如果增加 10 倍,则为 400 TB/年。如果我们希望数据不仅能被访问,还能被便捷地访问,我们还需要元数据(例如解压缩汇总事务),因此每年需要 4 PB,或者十年后需要 40 PB。Internet Archive 使用 50 PB,这是分片区块链可以安全获得容量的合理上限。

以太坊 VS 波卡

因此,在这两个维度上,以太坊分片设计实际上已经大致接近合理容量的最大安全值。目前以太坊已经完成以太坊2.0的升级,从工作量证明(PoW)共识机制过渡到权益证明(PoS),以太坊2.0 中的分片都具有相同的状态转换函数(STF),并能够跟随每个区块改变状态的规则。

相比之下,波卡带有的多个分片式区块链被称为“平行链”,它允许各条链共享分片的插槽,具备更强的交互性特征,能够提纲双向兼容性的桥链。波卡能够让验证者参与,任何用户都有重构并测试平行链有效性的权利,更加开放自主、兼容并蓄。

此外,在治理和升级等问题上,以太坊2.0的治理难题仍未解决,升级方面也遵循正常的硬分叉过程,然而波卡上治理和多机构系统能够民主地实现提案公投、落地,使用 Wasm 元协议制定链升级,进一步推动波卡生态的更新换代。无论是有效性,还是自由开放程度,波卡均在不同方面显示出了对于以太坊2.0而言过人的优势。

结 语

尝试扩展区块链有两种方法:

基础技术改进和增加参数(Parameters)

增加参数一开始听起来很有吸引力:如果你在餐巾纸上做数学计算,很容易让自己的电脑可以在每秒内处理数千笔交易,而不需要 ZK-SNARK 或汇总或分片。

但这种方法存在根本缺陷:运行区块链节点的计算机不能花费 100% 的 CPU 功率来验证链;它们需要很大的安全阈值来抵抗意外的 DoS 攻击,需要备用容量来处理内存池中的各项事务,并且不希望在计算机上运行节点使得无法同时运行任何应用程序。比如宽带:10 MB/s 的连接并不意味着您每秒可以拥有 10 MB 的区块!对于去中心化的区块链和普通用户来说,能够运行节点以及拥有运行节点对活动的开展来说至关重要。

另一方面,基础的技术改进是可行的。目前,以太坊的主要瓶颈是存储大小和无状态,状态过期允许增加大约 3 倍 但这也是极限了。

以波卡为代表的分片式区块链可以进一步扩展,同时也不会面临以太坊一样的瓶颈和困境,这也是波卡以其互操作性和可扩展性被开发者青睐的原因。其原因来自分片式区块链中没有单个节点需要处理,但存储容量也同样是一个限制因素:随着容量的增加,最低安全用户数会增加,并且归档区块链的成本也会上升。

当然,开发者无需过多担心存储容量带来的问题,因为目前的天花板足够高。我们可以每秒处理超过一百万笔交易,并保证区块链的完全安全性,同时不牺牲区块链的去中心化价值。

原创文章,作者:币圈吴彦祖,如若转载,请注明出处:https://www.kaixuan.pro/news/452247/