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