Skip to content

Commit

Permalink
Merge pull request #113 from JackyLHH/main
Browse files Browse the repository at this point in the history
Add the zh version
  • Loading branch information
matt-nervos authored Nov 24, 2023
2 parents e90943a + 00112fd commit ce5785b
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: "区块链计算和验证有什么区别?"
coverImage: 'images/image1.png'
category: Popular
subtitle: '区块链技术作为比特币和以太坊等加密货币的基石,构建了一个复杂的生态系统,其有效运行依赖于众多复杂的过程。其中两个核心过程是计算和验证,尽管它们看似相似,但在区块链生态系统中,它们分别发挥着不同的作用。'
date: '2023-11-01T16:00:00.000Z'
author:
- github:explainCKBot
---

本文旨在深入探讨这些概念,着重介绍区块链计算和验证之间的区别,以及它们在维护区块链网络完整性和功能性方面的独特作用。




## 区块链计算

区块链计算指的是在区块链上执行交易或执行嵌入在智能合约中的指令。计算过程通常是资源密集型的,需要大量的计算能力和能源消耗,对于支持复杂智能合约的区块链来说尤其如此。这些计算通常由区块生产者(矿工或验证者)完成,他们通过执行交易来推动状态的变化。然而,我们必须明白,区块链并不是作为计算平台而设计的,因为区块链是通过复制而非分配来实现去中心化的,这意味着整个网络的计算能力不会随着节点的增加而扩展,而是始终受限于单个节点的计算能力。



## 区块链验证

另一方面,区块链验证是确认区块链上交易和区块有效性的过程,是区块链的主要作用之一——充当验证机器。验证包括检查交易是否符合区块链协议的规则。与计算不同,验证并不直接改变区块链的状态,而是确保提议的状态改变是合法的并且符合协议规则。



## 计算和验证之间的相互作用

虽然计算和验证是两个截然不同的过程,但它们在区块链网络的运行中却密切相关。计算是执行交易和智能合约中的指令所必不可少的,会导致区块链状态的变化。而验证则确保这些变化是有效的,并符合区块链协议的规则。计算和验证之间的这种相互作用对于维护区块链的完整性和安全性至关重要。

在区块链网络中,不同的实体负责计算和验证。通常情况下,网络中的矿工或验证者负责计算,通过执行交易来促使区块链状态发生变化;网络中的全节点则负责验证,根据当前区块链状态检查每个交易和区块,以确保其有效性。

然而,随着区块链的发展和交易数量的增加,矿工的计算负荷会成为瓶颈,制约网络的可扩展性。为了解决这个问题,许多区块链网络正在转向 Layer 2 解决方案——一种位于基础区块链(Layer 1)之上的辅助网络或通道,并将主链上的计算转移到 Layer 2 上。

Layer 2 解决方案可以在链外执行交易或计算,从而减轻主链的计算负荷。这种方法可以提高交易处理速度,提升可扩展性,因为主链不再被每笔交易所拖累,而是作为最终结算层,处理被压缩成单笔交易的一大批交易。

例如,比特币的闪电网络(Lightning Network)和以太坊的 Rollup(Optimistic Rollup 和 ZK Rollup)都是 Layer 2 解决方案,可以实现更快、更可扩展的交易处理。前者通过智能合约在各方之间开启支付通道,允许它们进行链外交易,只有当通道关闭时,交易的最终状态才会提交到主链上。后者将多个链外交易捆绑成一个交易,然后发送给主链(Layer 1)上的智能合约,由其负责接受捆绑数据并确保其有效性。



## 重新思考 Layer 1 区块链的作用

从历史上看,Layer 1 区块链(如比特币和以太坊)一直被视为功能全面的平台。它们既承担计算任务(执行交易和智能合约),又负责验证这些交易的有效性。然而,随着这些网络的发展,可扩展性问题变得日益突出。计算和验证的双重责任使得快速处理大量交易成为挑战。

最新的观点认为,Layer 1 区块链应主要充当保存平台的角色。其主要任务是维护整个系统的记录或 "状态",以确保其不受篡改。通过专注于保存状态和验证状态变化,Layer 1 区块链能够确保数据的完整性和安全性,而不会被交易执行的计算需求所困扰。鉴于 Layer 1 的计算限制,我们应当采用 Layer 2 解决方案。这些解决方案,如 Rollup 或状态/支付通道,在链外处理大部分交易执行,同时仍依赖于 Layer 1 进行验证和最终结算。这种分工可以实现更迅速、更可扩展的交易处理。

对 Layer 1 区块链作用的重新思考代表了区块链世界的模式转变。这是从 "一刀切" 的方法转向更加模块化的分层架构。通过让 Layer 1 专注于其保存和验证的核心优势,同时让 Layer 2 处理计算,整个区块链生态系统可以更为高效、更有效地运行。




## 总结

总体而言,尽管区块链计算和验证看似相似,但它们在区块链生态系统中发挥着不同的作用。计算负责执行交易和智能合约中的指令,从而导致区块链状态发生变化;验证则是确认这些变化的有效性,确保其符合区块链协议的规定。深入研究区块链技术的人应当了解这些流程之间的差异及其相互关系。此外,重新思考区块链作为保存平台而非计算平台的作用,有助于使区块链设计更加高效、更具可扩展性。

65 changes: 65 additions & 0 deletions state_bloat_blockchain_(explainCKBot)/index_zh.md
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 区块链完全有能力处理状态爆炸问题,同时继续坚持去中心化和安全性的核心原则。

1 comment on commit ce5785b

@vercel
Copy link

@vercel vercel bot commented on ce5785b Nov 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.