这是 Fuel Labs 系列作品的第一部分,涵盖了以太坊上可扩展性和执行相关的主题。本系列旨在对增强以太坊性能和扩容相关的挑战提供全面的洞见,也包括当前致力于使其更高效和可扩展来实现广泛采用的解决方案。
以太坊的架构由多个层组成,每个层在网络的运行中都发挥着至关重要的作用。在这些层中,执行层尤为重要。交易处理、智能合约执行以及一致和安全状态的维护都在执行层完成。然而,这一层往往是限制以太坊网络整体性能和可扩展性的瓶颈。
执行是指在区块链上执行交易和执行状态更改所需的计算。这种计算通常涉及通过检查签名和代币余额来验证交易,并执行更新状态所需的链上逻辑。当全节点更新其账本副本来反映新的代币传输、智能合约代码更新和数据存储更改时,就会发生状态更改。
执行层的主要功能包括:
交易处理: 验证并执行用户发送的交易。
智能合约执行: 运行智能合约的代码,智能合约是自动执行的合约,其中协议条款直接写入代码中。
状态管理:维护区块链的状态,包括账户余额、智能合约状态和其他基本数据。由于其复杂的状态树,以太坊的状态管理尤其具有挑战性,但是像 Verkle 树 这样的创新,可以通过支持更小、更高效的数据来优化状态存储证据,我们正在努力解决这个问题。与此同时,其他区块链,如 Solana,尽管没有全局状态树 ,也正在努力解决状态管理问题。
可扩展性的目标是通过提高交易速度(更快的最终确定性)和交易吞吐量(每秒更高的交易数)来增强性能。人们通常以 TPS 或每秒交易数来衡量性能。实际上,可扩展性是指区块链每秒可以处理的计算数量,因为交易的复杂性和资源需求可能会有所不同。以太坊使用“gas”来衡量执行交易和智能合约所需的计算。扩展执行层的挑战在于增加每秒的计算数量,而不显著提高验证块中交易的各个完整节点的硬件要求。有效解决这个问题对于提高区块链网络的吞吐量和性能至关重要。
为了充分理解为什么需要在计算上考虑可扩展性,重要的是要更仔细地研究以太坊上的交易处理方式。当用户在以太坊上发起交易时,交易在最终确定之前会经历几个步骤。以下是此过程的简化概述:
**交易发起:**外部拥有账户(EOA)或智能合约所有者,通过创建签名的 JSON-RPC 请求来发起交易。该请求包括详细信息,例如收件人地址、要传输的以太币数量(如果有)、要包含的数据(如果与合约交互)、gas 限制和其他交易参数。
**数字签名验证:**以太坊网络上的节点首先验证交易的数字签名,以确认其真实性,并确保其在传输过程中不被篡改。
**Nonce 检查:**网络检查发送者账户的 Nonce(随机数),以确保交易是按顺序的并防止重放攻击。随机数随着从账户发送的每笔交易而增加。
**Gas 计算:**Gas 是用于衡量计算量的单位,是执行交易和智能合约所必需的。交易指定了一个 Gas 限制,这是发送者愿意用于该交易的最大 Gas 量。Gas 费用以太币支付,涵盖以太坊网络上的计算和存储成本。
**交易广播:**一旦验证,交易将被广播到以太坊点对点网络中的所有节点。节点接收交易,并开始将其包含在区块中,进而步入验证的过程。
**区块创建:**以太坊权益证明(PoS)共识机制中的验证者验证并提出一个新区块,其中包含批量经过验证的交易,包括最近启动的交易。
**区块验证:**其他节点也会验证交易的正确性、检查签名、确认可用资金并确保不会发生双花。
**状态更新:**当一个区块有效时,每个节点都会使用该块中交易的新状态/变化,来更新其以太坊区块链的本地副本。这意味着更新账户余额、合约存储和其他重要数据。以太坊保留了一个全局 Merkle 树,它通过将所有状态数据组织成分层结构来整合所有状态数据,其中每个块的状态都被哈希化并互连,最终产生单个根哈希。这为我们提供了一个单一、整洁的状态根,允许轻客户端验证特定交易或数据片段的完整性,而无需下载整个区块链。
**交易确认:**一旦交易包含在区块中并且该区块被添加到区块链中,则该交易被视为已确认。确认表明该交易不可逆转并已被以太坊网络接受。
**最终执行和合约交互:**对于与智能合约交互的交易,合约的代码根据交易中提供的输入数据执行。此执行可能涉及更新合约的内部状态变量、发出事件或触发进一步的交易。
**交易收据:**生成交易收据,可以检查确认详细信息,例如使用的 Gas 量、包含交易的区块号以及合约执行期间产生的任何日志。
尽管执行层是以太坊功能的核心,但它也是以太坊在任何给定时间可以处理计算量的一个重要瓶颈。数据可用性(DA)是一个关键问题,但诸如 EIP-4844 之类的解决方案在很大程度上缓解了这些挑战,该解决方案引入了临时“区块”数据,其存储成本比常规以太坊交易便宜得多。通过增强数据“分发”和链下存储,EIP-4844 等创新将焦点转移到执行层,这是以太坊可扩展性的主要障碍。
有几个因素导致了以太坊的执行瓶颈。
延迟是指从提交交易到确认并包含在区块链中的时间延迟。高延迟会导致交易确认速度变慢、用户等待时间变长以及智能合约执行延缓。主要的延迟瓶颈包括:
区块时间和确认延迟: 以太坊的平均区块时间目前约为 12 秒,对交易确认施加了最小延迟。如果交易包含在下一个区块中,则平均等待时间约为区块时间的一半,即 6 秒。如果交易量较低,则延迟可能会增加,因为交易需要等待更长的时间才能包含在块中。
**区块链同步(共识):**以太坊网络中的节点必须就每个区块的有效性达成共识。当节点验证交易、验证区块以及与网络状态同步时,此过程可能会引入延迟。区块传播时间的变化也会导致延迟。
吞吐量直接是网络在给定时间范围内有效处理和把控大量交易的能力。更高的吞吐量意味着网络每秒可以处理更多的交易。吞吐量瓶颈包括:
单线程执行: 以太坊虚拟机(EVM)以单线程方式一次处理一笔交易。这意味着交易无法并行化,从而限制了可以同时处理的交易数量。
浪费执行: EVM 使用 256 位字和基于堆栈的方法而不是注册表。这种设计选择导致计算资源的使用效率低下,增加了执行合约所需的时间和精力。
**状态管理:**以太坊维护着一个大型、深度嵌套的状态树,有 256 层。每次更新键值对时,必须对数据库进行 256 次更新。这种广泛的更新过程会显著减慢网络速度。
**Gas 预估开销:**虽然 Gas 预估旨在防止过度使用资源并避免停机问题,但跟踪每个操作会增加大量开销。这种开销会导致交易处理速度变慢。
节点容量限制: 以太坊节点的处理和存储容量有实际限制。当交易处理需求超过这些限制时,节点将难以跟上,从而导致块验证和传播的延迟。
状态增长: 随着交易数量的增加,区块链的状态也会增加。这种增长需要更多的存储空间,并使状态验证和访问更加耗时,从而进一步拖慢网络速度。
执行层产生的性能问题以多种方式表现出来,影响网络的可扩展性和用户体验。这里有些例子:
**网络拥堵:**在高需求时期,例如流行的 TGE 或 NFT 空投,交易数量可能会压垮网络,导致拥塞。当用户竞相处理交易时,这会导致更长的确认时间和更高的 gas。
**高 Gas 费:**当网络拥堵时,Gas 费可能会飙升,使得用户执行即使是简单的交易也变得昂贵得令人望而却步。这限制了网络的可访问性和可用性。
**可扩展性挑战:**EVM 的有限吞吐量阻碍了以太坊有效扩展的能力。随着用户和去中心化应用(dApp)数量的增长,网络很难在不显著性能下降的情况下适应增加的负载。
执行瓶颈对最终用户和开发人员都有切实的影响,对更广泛的以太坊生态系统产生重大影响。
高峰时段的高额 Gas 费使得用户与网络交互的成本高昂,无论是发送 ETH、参与 DeFi 协议还是铸造 NFT。网络拥堵可能导致交易确认延迟,给期望实时交互的用户带来挫败感和不便。这些高昂的成本和延迟降低了网络的整体可用性,阻止了潜在用户并限制了生态系统的增长。
从开发人员的角度来看,优化智能合约来最大限度地减少 Gas 使用量的需要增加了开发过程的复杂性和时间。他们还需要优化基础设施,通常是通过节点服务(例如 Infura)等第三方提供商来实现。这可能是比仅仅优化智能合约更大的障碍。由于网络吞吐量有限,在以太坊上构建可扩展的 dApp 变得更加复杂,通常需要开发人员实施链下解决方案或第 2 层来获得更好的性能。
2017 年底的 CryptoKitties NFT 热潮是一个关键时刻,证明了网络可能会变得多么拥堵。用户饲养和交易虚拟猫的交易量激增导致网络严重延迟。在其巅峰时期,CryptoKitties 占据近 16%,导致某些交易延迟数小时甚至数天。根据 Coindesk 文章,一度有大约 30,000 笔交易被卡住并等待处理。
2020 年的 DeFi 夏季标志着网络又一个严重拥堵的时期。 Uniswap 和 Compound 等 dApp 的快速采用导致网络活动大幅增加。除其他外,这些因素导致对链上空间的高需求以及随之而来的 Gas 费飙升,每天有数千 ETH 用于交易成本。
2021 年至 2022 年的 NFT 热潮进一步凸显了以太坊的可扩展性问题。备受瞩目的 NFT 空投和拍卖,例如 Yuga Labs 推出的 Otherside NFT,吸引了数千名参与者,导致 Gas 费飞涨。 Otherside Mint 当天的平均汽油费每笔交易超过 400 美元。
除了 NFT 交易和 DeFi 投机等利基活动之外,高成本和延迟也会破坏 dApp 的用户体验,降低参与度和保留率。 多个区块链项目被迫迁移到其他区块链或完全关闭。例如,UniLogin 旨在简化用户登录基于 ETH 的应用(这是主流采用的关键功能),但不得不停止运营,因为不断上涨的 Gas 费用使其在财务上难以为继,每次注册的成本有时超过 130 美元。此外,Publish0x 是一个用户可以通过创建和阅读内容赚取加密货币的平台,但由于成本高昂,不得不推迟付款并改为按月付款。为了使以太坊有效地扩展到金融、供应链管理和去中心化身份等领域的现实应用,它必须解决这些可扩展性问题来支持更广泛的采用。
执行瓶颈对现实世界的影响是深远的,影响用户和开发人员。高额的 gas 费、网络拥堵和可扩展性限制阻碍了以太坊生态系统的增长和可用性。应对这些挑战需要执行层的创新和改进。
在第二部分中,我们将探讨创新执行层对于以太坊未来的重要性。我们将仔细研究 EVM 当前的局限性、潜在的解决方案以及超越传统执行模型的好处。
推荐读物: