Fuel 创办人 Nick Didson 指出区块链扩容的技术大部分已经找到解决方案,不过并没有一个适当的方式处理状态 (state) 膨胀问题,什么是状态膨胀?目前又该如何减少此问题?将是每个去中心化网络迟早都需要思考清楚的问题。
状态膨胀是扩容最终 Boss
Web3 产业在效率上已经努力多年,似乎也逐渐看到终点,但是区块链扩容之路上的最终 Boss — 状态膨胀,目前似乎还没有解决方案。或许此问题将会变成扩容最后也是最大的瓶颈。
区块链扩容关键技术
状态增长目前没有解决方案
区块链扩容的议题上,主要有三个技术问题需要解决,分别是执行效率、资料可用性 (DA) 与状态大小控制,至今前两者已经有明确的解决方案:
- 执行:确保去中心化网络中交易的正确同步、验证和区块建立。目前此瓶颈已获得解决,例如市场上已经出现更有效率的虚拟机器 (FuelVM、Stylus、SVM、MoveVM),或是并行交易执行方式,以及更好的预编译。
- 资料可用性与储存:确保状态转换时与区块链网络同步,并支援 Rollups 的诈欺证明或有效性证明的验证。同样,此问题已经有许多解决方案,例如坎昆升级 EIP-4844 的引入、分片设计以及外部资料可用性层包含 Celestia、EigenDA 和 Avail 所提供的服务。
- 状态:状态是指「去中心化网络的最新帐本资讯」,包含网络中所有的帐户资料与代币分布。为了让节点可快速存取,状态资料通常需要在磁碟上进行大量存取,是交易中除签名和杂凑之外最慢的处理过程。而随着网络的使用年限增加,状态大小持续膨胀。
其中,状态是随着时间的推移而增长的东西,经常被视为「未来的问题」而被忽视。状态增长问题目前各界几乎没有好的解决方案,而若无法减缓此问题,会让区块链交易时间变慢和储存成本升高,会逐渐让节点运行承受巨大负担,最终将阻碍区块链技术受到更广泛的采用。
Rollups 并不能解决状态增长问题
Rollups 现有的解决方案仅有解决执行层问题,而一些模组化解决方案例如 Celestia,更进一步解决资料可用性问题。但如果这些新解决方案不能解决状态膨胀的核心问题,那么区块链产业就会回到零和游戏。
若状态增长无法受到解决,至今为止的扩容技术迭代都将是一场空。不论什么网络最终都会受到状态膨胀的限制,无论其执行或数据环境如何设计。
Nick 认为解决状态成长问题将成为 Rollup 生态的下一个催化剂,这与过往 Rollup 针对执行层面技术的革命同样重要。
效率越高,状态越大
状态的大小增长通常会跟执行的速度成正相关,当区块链的效能愈高,所产生的状态大小通常也会愈大,导致包含 BNB Chain、Sei 到 Base 等各种宣称拥有高执行效能的去中心化网络,都面临状态大小快速膨胀的问题。
为什么比特币的状态增长较慢?除了网络效率较低之外,因为其使用 UTXO 帐本模型,没有余额的帐户就不需要纪录在状态中,借此最小化状态增长问题,这使得 UTXO 模型相对更易于管理,但代价是牺牲了可编程性。
相对来说,以太坊的状态模型是一个由帐户余额、智能合约代码和无数合约状态组成的丰富生态系统,因为网络帐户、代币、合约数量上的增长,借此衍生的帐户各代币的余额、批准纪录等等,其网络的状态相较于比特币持续快速增加。
以帐本模型为基础的区块链,随着每一次智能合约的执行和交易,状态都会膨胀,这会导致网络臃肿,储存需求增加,处理时间变慢,进而抑制创新和用户采用。
因此目前大多数的区块链,都将面临着状态增长的问题。
状态膨胀可能的解决方案
虽然上述表示没有明确的解法,但开发者们也已经对此讨论,提出了几种未来可能管理状态膨胀的策略,不过目前许多技术仍在理论或是讨论阶段,或是有其他面向的缺点:
放任状态发展
一派人认为可以接受状态成长,以换取更大的频宽使用。但 Nick 认为这不是一个好的选择,因为这样会提高全节点的硬体需求,进而降低网络的去中心化
状态空间费用
像网络用户收取储存状态资料的费用,权衡旧资料储存与大量空间滥用的问题。但是此手段需要思考如何去除旧资料而不影响到其他资料的储存,因为状态是使用资料树纪录的,中间资料遗失会破坏一些分支路径。
无状态设计
思考一种全节点不需要储存状态的设计,而是依赖交易和区块中包含的状态证明。本质上是将状态从 Layer1 转移到 Rollups。虽然这是以太坊的发展方向 (verkle tree),但关于其效率和可维护性还有很多未解决的问题。
Un-Merkalizing the state
一种以不同方式管理状态资料的技术。将使用完整节点来验证所有内容或使用轻客户端对交易进行采样,并完全丢弃状态树。
应用层级的状态压缩
使用呼叫资料技术来压缩状态资料,可以说是用频宽换取状态大小,例如 Solana 上的压缩 NFT (cNFT),就是将 NFT 的所有权证明储存在 Merkle Tree 之中,若需要读取则需要依赖节点频宽向外调用资料。
不过更高的频宽需求会导致网络受限,可能会影响基础设施的稳健性和效率。
状态膨胀不再是未来的问题
目前以太坊的状态大小约为 267 GB,并且每个月以 2GB 左右的速度在成长,若未来网络用户数与合约增加,此增长速度将会更快,状态的成长对于需要追求共识的区块链网络节点来说,会逐渐变成一项负担。
目前现有的解决方案,大多仍在理论阶段或是缺陷明显,市场上个专案仍未有明确的共识,不过可以确定的是,状膨胀的问题越来越受到重视,可以预期未来将出现更近一步的解决方案。该文下半部分也介绍了 Fuel Network 所提出的创新解决方案,笔者将另撰文说明。