-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: JackyLHH <jackylhh@icloud.com>
- Loading branch information
Showing
1 changed file
with
65 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
--- | ||
title: '什么是区块链状态爆炸?' | ||
coverImage: 'images/image1.png' | ||
category: Popular | ||
subtitle: '在区块链技术领域,一个长期存在的问题是状态爆炸。' | ||
date: '2023-11-14T16:00:00.000Z' | ||
author: | ||
- github:explainCKBot | ||
--- | ||
|
||
状态爆炸现象虽然不会立即显现,但它会对区块链网络的性能、可扩展性和可用性产生重大影响。本文旨在揭开状态爆炸的神秘面纱,探讨其原因、影响以及应对这一长期挑战的潜在解决方案。 | ||
|
||
|
||
|
||
## 什么是区块链的状态? | ||
|
||
要理解状态爆炸,首先必须理解区块链背景下的状态概念。在区块链中,状态代表所有账户的当前信息,包括账户余额、合约代码和存储空间。区块链中的每笔交易都会以某种方式改变状态,例如,当加密货币交易发生时,会改变两个账户的余额。 | ||
|
||
状态存储在区块链网络的每个全节点中,使它们能够验证新的交易和区块。这种分布式状态存储是区块链网络去中心化和安全的关键因素。 | ||
|
||
|
||
|
||
## 什么是状态爆炸? | ||
|
||
全节点就像是区块链世界中勤奋的图书管理员。它们需要两样东西:在首次与区块链同步时需要一本历史书(历史数据),在检查新区块的有效性和更改新状态时需要一个实时新闻源(全局状态)。 | ||
|
||
然而,随着区块链的发展,就像图书馆的书架越来越拥挤一样。读取和写入这些拥挤的书架(状态)变得越来越慢,成本也越来越高。如果图书馆的书架满了,满了的节点就不得不开始在地下室存储书籍(外部磁盘空间存储)。 | ||
|
||
当区块链的存储需求不断增长时,就会导致一种叫做状态爆炸的现象。这就像图书馆里堆满了书,图书管理员(全节点)很难跟上最新的消息(chain tip)。而对于新的图书管理员(同步新的全节点的用户)来说,就更难赶上了。 | ||
|
||
导致状态爆炸的因素包括区块链账本的历史较长、新区块添加频繁、区块较大,以及需要在链上存储大量数据以检查交易和更改状态。 | ||
|
||
状态爆炸是一个问题,因为随着状态的增长,它需要更多的存储空间、更多的计算资源来处理,以及更多的带宽来传输。这就提高了运行一个全节点的要求并增加了成本,除了影响网络的性能或可扩展性外,还会阻碍网络的参与并导致集中化。 | ||
|
||
|
||
|
||
|
||
## 解决状态爆炸问题 | ||
|
||
解决状态爆炸问题是一项复杂的挑战,需要精心设计和工程设计。一种方法是使用状态修剪,即从状态中删除不必要的数据。例如,可以从状态中删除长期为空的账户。 | ||
|
||
另一种方法是使用无状态的轻节点客户端,这种客户端不存储整个状态,而是依靠其他节点在验证交易时提供必要的数据。这可以大大减少运行轻节点所需的资源,但对运行全节点来说并没有什么实际改变,与去中心化却更为相关。 | ||
|
||
最后,分片(将状态分成更小、更易于管理的部分)也有助于缓解状态爆炸的问题。从理论上讲,每个分片的状态都会更小,从而更容易存储和处理,但这种方法还有待在实践中进行更大规模的检验。 | ||
|
||
唯一直接处理并解决状态爆炸问题的区块链是 Nervos Network 的底层公链 CKB。它是通过创新的代币经济学和架构设计相结合实现的。以下是 Nervos CKB 处理状态爆炸的方法: | ||
|
||
**状态租金和状态空间私有化** | ||
|
||
CKB 引入了状态租金的概念,这是占用区块链状态空间的持续成本。状态租金通过二级发行实现,这实际上是对状态占用者征收 "通胀税",用于补偿矿工长期保存状态的费用。 | ||
|
||
此外,状态空间的所有权是私有化的。在 CKB 上,状态容量是用户直接拥有和控制的一等资产。要在区块链上存储任何数据,用户必须锁定必要数量的 CKB 代币(与存储的数据量相对应)。这实际上限制了状态的增长,因为区块链的全局状态只能在 CKB 代币发行总量允许的范围内增长。 | ||
|
||
**鼓励状态修剪** | ||
|
||
由于状态是 CKB 上的一等资产,因此从技术上讲,状态占用者也是状态所有者,他们有动力从区块链中删除不必要的数据(状态修剪),以保持区块链的长期可管理性。当他们不再需要使用稀缺的状态空间时,可以销毁占据该空间的 Cell,释放锁定的 CKB 代币,然后将其存入 [NervosDAO](https://medium.com/nervosnetwork/nervos-dao-explained-95e33898b1c) 中以抵消二级发行带来的通胀,从而停止支付状态租金。 | ||
|
||
|
||
|
||
|
||
## 总结 | ||
|
||
总之,状态爆炸是区块链技术领域的一个重大挑战。随着区块链网络状态的增长,可能会导致全节点成本增加、性能降低和潜在的中心化。不过,通过精心设计和创新解决方案,可以减轻状态爆炸的影响,确保区块链网络的可扩展性和可用性。 | ||
|
||
CKB 管理 "状态爆炸" 的方法结合了新颖的代币经济学和架构设计,是一个领先的范例。通过引入状态租金、私有化状态空间以及通过 CKB 代币创建独特的价值捕获机制,CKB 区块链完全有能力处理状态爆炸问题,同时继续坚持去中心化和安全性的核心原则。 |