月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 中币下载 > 正文

区块链:区块链存储爆炸:问题、分析与优化_TPS

作者:

时间:1900/1/1 0:00:00

(编按:本文为QuarkChain创始人兼CEO周期博士撰写的技术文章,并以此文章问依据,在DApp Learning进行了技术分享讲座,中文讲座视频请点击文章第二篇推送?)

背景

DeFi、GameFi等去中心化应用的蓬勃发展,极大地增加了对低交易费用的高性能区块链的需求。然而,构建高性能区块链的一个关键挑战是存储爆炸。下图是取自 Etherscan 的图表,它说明了一个以太坊全节点(存档)的区块链数据大小。

从图中我们可以看出,节点的链数据规模稳步增长,现在已经达到~9TB。由于去中心化区块链的一个目标是允许普通配置的计算机运行节点,因此在普通配置的计算机上强制要求 9TB+ 存储会难以达到。

如果我们进一步分析存储使用情况,我们可以发现区块数据只占了约300GB的数据(从区块高度0到13.6M),这一数字远小于9TB。那么剩下的8.7TB数据从何而来呢?

实际上,存档节点执行所有块并保留所有历史数据,包括:

状态

交易收据

这其中,状态是这 8.7TB 的主要组成部分。所以有时,我们将存储爆炸称为“状态爆炸”。但是为什状态会如此之大?

什么是以太坊状态?

盛大公链CEO赵永亮:区块链自身特性可以对传统商业模式升级改进:金色财经现场报道,9月20日,由金色财经主办,水桥区块链总冠名的“共为·创业者大会”在厦门举办。盛大公链首席执行官赵永亮做了主题为《前行中的数字经济企业如何破局发展》的演讲。赵永亮表示,区块链可以打通现有商业模式的闭环,升级企业数字改革的风控体系,对产品提供溯源解决方案等。区块链对传统经济的企业和机构进行改革,是利用区块链的去中心化、共识机制、不可篡改等特性,对原有商业模式、产业模式、激励体系、用户体系等进行升级改进。[2020/9/20]

以太坊状态是一个Merkle Patrica树(MPT),其中

叶子节点是地址 (0x...) => 帐户的映射,其中帐户存储与地址关联的余额、nonce等

内部节点维护树结构,以便可以快速计算整个树的哈希根

由于存档节点将保留所有区块的所有历史状态,这意味着 MPT 中的任何更新都将创建 O(log(N)) 个内部节点,并且不会删除旧的内部节点。

Geth 的全节点

为了解决存档节点状态爆炸的问题,Geth 的天才工程师们创建了一种称为“修剪”模式的新模式,该模式仅定期存储 MPT。这里我们举一个简化的例子,其中节点只保存每 3 个区块的MPT。(注意,为了获得一个不包含任何状态区块的状态,节点必须获得该区块之前最近的状态,并重放接下来的交易)。

党政研究:区块链技术在政府治理中的应用是物理技术与社会技术的统一:《党政研究》2020年第2期刊文《区块链技术的政府治理实践:应用、挑战及对策》,文章提到,区块链技术在政府治理中的应用是物理技术与社会技术的统一。其共识机制、智能合约、去信任系统、时间戳、分布式账本等核心技术能够有效保障政务数据安全,提高政务效率,减少权力腐败,被应用于多国政府治理。但是区块链技术去中心特质使传统治理权威受到了挑战,其本身的局限和特点也使政府治理面临稳健性风险,甚至破坏政府治理。尽管区块链技术目前并不十分成熟,但是政府应当抓住治理变革契机,将先进技术转变为政府治理效能。(光明网)[2020/3/30]

通过定期存储 MPT,状态的存储大小显著减少。据 Etherscan 数据,目前 Geth 全节点的区块链数据大小约为 1TB。

Geth 的可快速同步的全节点

通过从创世区块开始重放所有交易来运行节点的一个问题是,重放所有交易会占用很长时间。一般来说,建立这样一个节点需要数周时间才能从创世区块赶上网络的最新状态。为了加速节点的启动过程,Geth 进一步提供了一种快速同步模式,可以下载最新的稳定区块的 MPT,而无需重放和维护区块之前的历史 MPT。下载完 MPT 后,它会像全节点一样重放新区块(带有定期状态存储)。

动态 | 今年以来,已有4321家机构参与97家区块链上市公司的调研:Choice数据显示,今年以来,已有4321家机构参与了97家区块链上市公司的调研。其中,华宇软件、苏宁易购、广电运通等8家上市公司皆有上百家机构关注。多家机构认为,2020年区块链应用有望提速。(上证报)[2019/12/26]

在不存储历史 MPT(有时甚至是历史区块主体)的情况下,一个 Geth 节点的存储大小可以进一步减少到 447G(截至 2021/12/06)。通过减去 300GB 的区块数据,我们推断状态大小约为 150GB。

以目前以太坊 447GB 的存储大小和 15 TPS,我们预计具有 1TB SSD 的普通配置计算机应该能够运行以太坊节点相当长的一段时间(比如数年)。那么存储爆炸或状态爆炸真的存在吗?或许未来几年以太坊并不会,但假如我们可以将以太坊的虚拟机 (EVM) 扩展到数百或数千 TPS 呢?

让我们将目光转向另一个基于 EVM 的链,币安智能链(BSC)。截至 2021 年 12 月 8 日,BSC 已有:

约 984 GB 链上数据,其中区块约占 550 GB,状态约占 400 GB。

20.6623 亿笔交易,100 TPS

声音 | 《比较》杂志研究部主管:在央行层面,法定数字货币将不会采用区块链技术:11月9日,经济参考网发表《比较》杂志研究部主管陈永伟的文章《DC/EP来了!它究竟会是什么样》。文章表示,根据现有的信息来看,至少在央行层面,法定数字货币(DC/EP)将不会采用区块链技术。其原因主要还是DC/EP在定性和发行目的上与其它数字货币不同。比特币等数字货币采用区块链技术,很大一个原因是要确保分布式记账下的共识,并由此来保证其本身的货币信用。而DC/EP作为法定货币,本身有国家作为信用担保,自然无需多此一举。与此同时,目前区块链技术从效率上看还不高。以比特币为例,每一次交易都要全网验证,需要大量的时间,这显然不能适用于大规模交易的进行。[2019/11/9]

如果我们进一步用交易数量来预测数据大小,我们可以得到:

如果 TPS 为 100,即 ~3,153 M TPY

1 年后,总 TX ~5,219M,区块 ~ 1.375 TB,状态 ~ 1.085TB

3 年后,总 TX ~11,525M,区块 ~3.025TB,状态 ~2.387 TB

如果 TPS 为 150(观察到的峰值 TPS),即 ~4,730 M TPY

1 年后,总 TX ~6,796M,区块 ~1.809 TB,状态 ~1.427 TB

3 年后,总 TX ~16,256M,区块 ~4.327 TB,状态 ~3.414TB

动态 | 深大通:将联合区块链技术开发公司 打造可信联盟链:据证券时报网消息,深大通8月23日在投资者互动平台称,公司做区块链是认真的。公司已经终止收购区块链通和井销天下两家公司。下一步公司将联合北京邮电大学和相关区块链技术开发公司,打造自己的可信联盟链,致力于解决行业痛点问题。[2018/8/23]

综上所述,对于BSC来说,如果保持目前的速度甚至更高,则很快就会达到以太坊存档节点相同的存储大小,这是普通计算机几乎无法运行的。

具有极高 TPS 区块链的存储爆炸问题

如果我们对一个极高 TPS 的区块链(比如像 QuarkChain 能够做到的那样)做一个更大胆的假设,这个数字会变成多少?我们来考虑一个具有 1000 TPS 的区块链并分析其区块和状态大小,将是:

假设 tx 大小约为 100 字节,每年区块所需的存储量为 1000 (TPS) * 100(每 tx 字节数)* 365 * 24 * 3600 = 2.86 TB

假设 MPT 有 100 亿账户(超过世界人口!),我们预计状态大小将为 150G(以太坊状态大小)/0.18B(以太坊唯一地址)* 10B = 8.3 TB

将这些数字放在一起,我们很容易得出一个结论,这是大多数普通配置计算机将 无法承受的要求!

为了优化存储成本,我们必须将限制放宽为兼容 EVM 而不是兼容以太坊。即,我们必须构建/运行另一个支持 EVM 的链,而不是高度优化的以太坊客户端。

状态存储优化

我们提出的第一个优化是使用普通的 KV 而不是 MPT。当 MPT 很大时,MPT 中的所有内部节点可能非常昂贵。而我们的优化将去掉 MPT 中的所有内部节点。假设每个账户的数据大约是 50 字节(20 个地址 + 2 个nonce + 12 个账户 + 其他),我们可以节省下100亿账户的数据为:

~ 10B * 50 + 100GB(代码)= 600 GB,大约是MPT版本的1/10!

虽然使用普通 KV 会带来巨大的好处,但一个主要问题是我们无法在如此短的区块间隔内计算每个区块的状态后哈希,这意味着我们将失去以太坊的以下好处:

快速同步:下载任何区块的状态并通过重放剩余的区块来快速同步网络

分叉检测(或拜占庭检测):来自对等方新创建的区块是否会导致与本地执行区块的状态不同。

为了启用快速同步,我们有一个周期性的快照区块(快照间隔 = epoch = 例如,14 周)。一个快照区块包含前状态哈希这一附加信息,即前一个快照区块的后状态哈希(执行交易之后的状态哈希):

非快照区块不维护状态哈希,而是具有增量哈希,其中包含该区块的所有交易事务的原始数据库操作(删除、更新)的哈希。这使得分叉检测成为可能!

我们使用交易前状态哈希来代替以太坊中区块的交易后状态哈希。原因是节点不能立即计算状交易后的状态哈希,但是通过使用交易前状态哈希,节点可以使用整个epoch间隔来计算哈希。例如,假设状态哈希计算每秒处理 10M 的状态数据,那么计算 600 GB 的整个状态将需要 600 GB / 10 M ~ 16.67 小时(vs. epoch = 14 周)

计算状态前哈希的流程如下:

1. 当一个快照区块被接收并最终确定时,它的 KV 状态被快照,并创建一个后台线程来迭代所有 KV 条目(地址 => 帐户)并计算哈希。

2. 当下一个快照区块被创建时,计算出的状态前哈希值将存储在该区块中。同样,节点将创建 KV 的另一个快照并在后台计算其哈希。

3.当下一个快照区块被创建时,节点除了存储状态前哈希之外,节点现在可以释放快照区块的KV快照,这意味着来自快照区块以来所有被删除/更新的数据将被自动垃圾回收(例如,在 levelDB 中压缩)

其结果意味着,要存储状态,节点只需要最多两个 KV 快照(很可能是一个带增量和一个 KV 快照)。

使用快照区块,我们可以通过仅存储以下数据来进一步减少节点中所需的区块数据:

最新的快照区块的交易执行前状态快照,即(最新 —? 1)快照区块的交易执行后状态

(最新 — 1)快照区块之后的完整区块?

我们可以对存储成本进行简单的数学计算:假设 epoch 持续时间为 2 周,则区块重放大小为

2 * 14(天)* 24(小时)* 3600(秒)* 100 * 1000(TPS)= 224 GB!

而且,这里的数字不会随着时间的推移而增长!

我们分析了以太坊当前的存储使用情况:

不仅是区块,状态存储消耗了很多的空间

当 TPS > 1000 时,存储空间用量高得令人望而却步

我们提出对区块和状态进行优化:

区块大小从每年 2.86 TB 减少到 224 GB

状态大小(~10B 帐户)从 8.3 TB 减少到 600 GB

一台 2TB 的普通配置计算机应该能满足长时间运行节点的条件

缺点:轻节点无法验证状态中的一个数据(必须是全节点)

感谢 dapp-learning 主办此次活动。教学全程视频可点击公众号第二条推送观看。

标签:区块链MPT以太坊TPS区块链专业好找工作吗impt币值得买吗以太坊官网下载tps币行情

中币下载热门资讯
NFT:抢钱还是创新?电子游戏界对NFT各执一词_QUARTZ

游戏玩家是出了名的怀疑论者人群。例如,2017年,美国艺电公司(EA)因决定让玩家付费解锁其《星球大战:前线2》 游戏中的某些角色而面临强烈反对.

1900/1/1 0:00:00
元宇宙:元宇宙的四大机会与3大难题_BSPT币

一千个人有一千个元宇宙;人类社会的发展,往往建立在能源、信息、材料、生命科学等技术的进步之上。从量变到质变,推动着人类社会、经济、文化、科技不断前进,是一个不可阻拦的大趋势;元宇宙就是一轮新.

1900/1/1 0:00:00
ARK:分形式扩容:从 L2 到 L3_bitstamp提现交税

摘要递归证明为新颖的、令人惊喜的设计带来了许多可能性引入 L3 概念,即在 L2 上递归构建的应用专用层 (application-specific layer)L3 为应用程序提供特定的服务需.

1900/1/1 0:00:00
EFI:关于明年的NFT、DeFi、公链的发展 听听大V们怎么说_Clever DeFi

2021 陪着我们走过了三百多天,终于走到了它该落幕的时候。回望过去,我们猛然发现,这一年竟然发生了这么多值得铭记的事情.

1900/1/1 0:00:00
区块链:金色趋势丨BTC反弹谨防冲高回落_区块链dapp开发白富美

日线昨日回踩前期突破的趋势线,当前短期支撑在这一带,不过目前量能想突破上方压力带52000-53500美金的可能性不大,均线系统也未粘合并多头向上,发动不了较长周期的行情.

1900/1/1 0:00:00
加密货币:金色前哨 | 韩国税务机构计划开始对加密货币礼物和继承代币征税_NTS

韩国对于加密货币领域的征税计划已酝酿多时。根据KBS最新报道,韩国税务机构计划开始对加密货币礼物和继承代币征税。尽管这听起来需要很复杂的方法以法定形式缴纳税款.

1900/1/1 0:00:00