LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 『区块链科普』1、什么是状态爆炸(State explosion)?

『区块链科普』1、什么是状态爆炸(State explosion)?

2020-12-07 一休哥 来源:区块链网络


最近有个朋友在群里问我,CKB 如何解决状态爆炸问题?


我一看这个问题,很专业啊。单从状态爆炸这个词,就不是一般人所知道的,他还更进一步,问如何解决状态爆炸的问题。

看来这个群友对别的公链确有研究,也知道如果某条链上的状态爆炸问题得不到解决,它将难以持续发展。

要回答好这个问题,其实不简单:让一个人明白不难,让更多的人读懂不易。

接下来的两篇文章,一休哥就给读者朋友们说一下状态爆炸这个问题,也算是给这位群友一个正式的回答。

考虑到这个话题有一定的认知门槛,我们将循序渐进地进行探讨。今天这篇,我们先从概念入手,我尝试用一些通俗易懂的语言,带你了解状态、节点、状态爆炸三个概念。

有了这篇的基础,下一篇我们会结合数据,来分析状态爆炸引发的问题,再来说 CKB 是如何解决这个问题。

我们开始吧。

1、什么是状态?

你有没有用过存折?


这是旧时代的产物了,可能年长的读者用过这东西。如果你用过,应该还记得,当你每次去窗口存一笔钱时,银行柜员就会在存折上面打印出一行:曾几何时,存入多少金额,余额多少;你取出一笔,当银行柜员把存折交还给你的时候,你发现多了一行:某年某月某日某时某分,支取了多少现金,余额多少。

这就是银行最基础的一个交易流水。你的账户在什么时候,存了多少钱、取走了多少、里面还剩多少钱。这些数据中,我们可以从时间维度分为两类:

当前数据:最后一笔交易过后,你的账户里还剩多少钱;

历史数据:某年某月,你做了什么交易。

当前数据,我们称为状态!。历史数据与当前状态的汇总,它就形成了账本

传统账本的数据只由中心化机构来托管,比如银行、深交所、上交所等等,由这些中心化集权机构来存储,它是一个黑箱的,不透明的,是一个单点的系统。

作为用户来说,我们还有一个习惯,就是时不时地,要查看账户的历史明细,看看钱都去了哪里了。这就要求银行要把这些历史状态数据要保存下来,才有得查。

不过银行每天面对的客户可不是你我几人,它们每天服务的是数以千万级别,甚至是数量上亿的客户,每天都会产生数以亿计的海量交易。日复一日,这些状态数据会越来越大,银行得增加大量的数据库存储设备,才能将旧的状态数据备份起来。

但要保存所有历史数据这代价太大了,有多少人会去翻 10 年前的一笔旧账?所以我们会看到,有的银行只能查最近 6 个月的交易明细,再往前的数据,不存了。也正是因为它是单点的系统,数据删了,我们就没办法通过别的渠道途径来查询历史数据了。

区块链也是一个账本,这个账本里面记录什么东西?还是状态!你的钱包里面有多少 Token、你什么时候,给谁转了多少 Token、目前转账的进度如何、对方什么收到了没有、你的 Token 的流向信息,这些都可以用状态来泛指。这像不像银行里的流水账?

不过区块链这个账本与传统的银行账本不同,它是透明的,任何人都可以查看的(在这里我们只聊公有区块链,不说联盟链、私有链);它还有一个特点是一旦一笔交易上链了,它就不能被篡改,也不能被删除。所以我们能很方便地查到历史交易记录。

区块链这个账本不再是由一个集权机构来保存这些状态数据,而是由全球成千上万个设备来保存,这些设备我们称之为节点(nodes)

2、全节点越多,网络越安全

节点 (nodes)是区块链网络的的主心骨,担任着交易确认和广播的工作。它们通过历史数据,再结合一定的共识规则,去验证新的交易是否有效,是否该保存这笔交易。

下面我们以比特币为例,来对节点的作用展开来说。其它公链亦是同理。

早期比特币的所有节点都是完整节点。但随着比特币的发展,为满足不同的需求,出现了新的节点类型,常见的比特币节点有两种:完整节点和 SPV 节点。

完整节点 (Full node)是下载了最新最完整的比特币区块链的节点,可以独立完成交易确认和交易广播,它是支撑着比特币转账交易的核心力量。

完整节点包括矿工(Miner)和比特币核心(Bitcoin Core)客户端(默认同步完整区块) 。

矿工(Miner)是具备挖矿能力的节点,可以通过解决指定算法难题来争夺出块资格,从而:
· 获取新的比特币
· 收取交易手续费。

比特币核心是比特币的开源客户端。最初由中本聪以“Bitcoin”命名,后改为“Bitcoin Core”。 该软件会验证整个区块链曾经做过的所有交易,并默认可用于转接资金。

比特币开发者,常建议用户使用完整节点。因为,运行完整节点是对比特币网络很好的支持,完整节点越多,比特币网络就越安全。

如果没有人运行完整节点了,比特币网络会瞬间崩塌。其他区块链亦如此。

3、状态爆炸

前面铺垫了这么多,终于聊到状态爆炸这个问题上来了。

什么是状态爆炸?

无论是前面提到的银行交易流水,还是区块链的状态数据,都会面临一个相同的问题:随着交易的日复一日增多,这些状态数据会越来越大,尤其是当应用增多、大量用户涌入后,这个数据会呈指数级的增长。


就像吹气球一样,你刚开始吹的时候,气球不会有太大变化,但随着不断往里面输送气体,越到后面它膨胀得越快,如果你不控制进气的速度,很快:


这就是状态爆炸!!

银行怎么解决状态爆炸的问题?删数据啊,只保留最近 N 个月的交易流水。对于银行这样的中心化账本来说,状态爆炸问题影响到的只有自己系统的存储硬件而已,要么扩容增加存储设备,如果不想再扩容,删掉旧数据就腾出了新的空间了。

但区块链里,状态爆炸的问题就会让事情变得异常复杂。

状态爆炸的问题将给区块链带来什么样的连锁反应?又该如何解决呢?我们下一篇接着讨论。

趁这个空挡,你可以把你对这两个问题的思考,写到留言区中,我将抽取 5 位有见解的评论,分别给予 288 KEY 的奖励。下期见。

—-

编译者/作者:一休哥

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...