主页 > imtoken手机钱包 > 简介 | 以太坊区块链的大小不会很快超过 1TB
简介 | 以太坊区块链的大小不会很快超过 1TB
在深入本文之前,请阅读本文底部关于我参与的研究的两份报告 (1,2) 和一篇关于数据准确性的文章 (3)。
我至少每月一次看到有人在 r/ethereum 上发布一张图表,预测以太坊区块链将很快超过 1 TB。 我想利用这篇文章中的这个机会来澄清一些关于以太坊的谣言——区块链的大小,并试图解释为什么这张图表在技术上是正确的,但它并没有说明全部。
我们先来看看这个图表。 它显示了以太坊节点(红色)(此图中使用 Geth 节点)和比特币节点(蓝色)(可能是比特币核心节点)的完整数据目录大小,节点大小随时间变化的图标. 比特币以线性趋势向上移动,而以太坊的趋势提醒读者指数斜率。
关于区块、区块历史、状态和状态历史
将膨胀归咎于以太坊区块链的用户与他们自己的假设相差不远。 但实际上不是链的扩容,而是以太坊状态的扩容。 在继续阅读之前,我想澄清一下白皮书中的一些术语。
如果这让您觉得有些乏味,请继续耐心阅读。
了解修剪模式和同步模式
2016 年初,Go-Ethereum 团队引入了所谓的快速同步模式。 从那以后,尤其是在同年以太坊垃圾邮件攻击之后,以完全同步模式运行 geth --fast 一直是一件令人头疼的事情。 我在写这些模式时使用了斜体,因为稍后我会回来帮助您阐明它们的本质含义。 所以现在记住他们。
2016 年底,Parity 团队(前身为 Ethcore)通过提供压缩同步模式(warpsychronization)来应对链上垃圾邮件,以消除新用户的全链同步。 与 Geth-fast 一样,Parity --warp 很快成为那些试图同步以太坊链的人事实上的标准模式。 截至今天,上述选项是两个客户端的默认选项。
然而,快速同步/完全同步对 Geth 节点意味着什么? 与非压缩同步相比,warp-sync对Parity节点意味着什么? 羊毛布?
一个完全同步的 Geth 节点可以处理整个区块链并重放曾经发生过的所有交易。 快速同步的 Geth 节点只下载与所有区块同步的所有交易收据,以及最新的状态数据库。 完成后,它会切换到完全同步模式。 请注意,这不仅会产生快速同步,还会产生紧凑的状态数据库,因为历史状态对于高度比最新块低 1024 的块不可用。 这没什么影响,但在继续阅读之前,请记住 Geth 同步模式也是精简模式。
查看Parity配置选项,就更复杂了。 除了前面提到的同步模式,Parity 还提供了单独的精简模式,即快速模式(fast)和存档模式(archive)。 是的,Gethfast 也是一种同步模式,我们了解到 Gethfast 更紧凑,但是 Parityfast 紧凑模式不会与同步模式重新耦合。 在这一点上,我不得不承认,术语令人困惑,您可能不想再读下去了。 等等,让我们用笔和纸画点什么。
Geth 的快速模式支持更快的同步和数据库压缩,而 Gethfull 禁用这两种模式。 然而,在 Parity 中,可以在不禁用状态树压缩的情况下禁用 wrap 模式! 这句话很重要,所以特地加粗了。 我不是要在这里比较以太坊客户,至少不是我的本意。 我试图告诉您,可以使用较小的数据库运行完全验证的以太坊节点。 Parity 只是为它提供了一个概念验证。
为什么是这样? 因为只要你把所有的历史区块都保存在你的磁盘上以太坊设计原理,你就可以通过重新处理整个链来计算任何历史状态。 但在大多数用例中,根本不需要历史状态! 因此,明智的做法是从状态历史中删除过时的条目,以将所需的磁盘空间减少 95%。
那么,完整验证节点的最小大小是多少?
好吧,如果您只运行奇偶校验而不启用扭曲(无扭曲),则可能是数十 GB。 今年初秋还不到 20 GB,但该州增长非常快。 目前,包括区块和交易在内的原始历史区块数据量约为12-15GB,而最新状态的数据量约为1-2GB。
但这算作完整的以太坊节点吗? 当然:
以太坊客户端永远不会删除旧块。 这是比特币和以太坊最显着的区别,因为修剪比特币节点只能删除旧区块。 在上下文中,更容易理解为什么用户经常认为修剪后的以太坊节点不是完整节点。 但是现在,亲爱的朋友,你已经知道这个悖论是真的了。 :)
最重要的是,即使是 warp-synced Parity 节点也会在初始同步后下载块的整个历史记录以太坊设计原理,以便在旧块同步完成后可以向网络提供完整节点。
完整图片:比较 9 个奇偶校验配置
下面是我的“彩色”电子表格的屏幕截图,它试图在不同的操作模式下区分 Parity 的节点安全性。
配置 00 到 05 被视为完整节点。 配置 06 是默认配置的 warp 节点,一旦下载了旧块,就可以将其视为完整节点。 但是,它不会重播所有交易; 它只检查历史区块的工作量证明。
配置 07 经常被用户请求,但强烈建议不要用于生产。 此设置与修剪后的比特币节点有些相似,因为历史区块部分不可用。 这不再是一个完整的节点。 请注意,我在本段上方添加了一个分隔线。 你懂。
Configuration 08 是一个轻客户端,值得单独写一篇文章。 感谢您耐心阅读到这里,这里是给您的总结: 默认情况下,以太坊全节点不需要超过 20-30 GB 的磁盘空间。 :)
以下是一些值得注意的消息和重要说明。
(1) 我在 Parity 工作。 我比较了不同的 Parity 配置,不仅因为我知道和理解它们,还因为 Parity 允许用户单独配置删除模式和同步模式。
(2) 我持有一些比特币和以太币。 我希望这不会对我在本文中概述的技术方面产生任何影响。 我也在努力避免对此过于政治化。
(3) 为了收集数据,我花了 6 个多星期的时间在 36 种不同的配置下运行 Parity。 这很费时间和资源,但还有一个问题是我不能让所有的配置同时运行,所以本文给出的数字的准确性必须谨慎使用。 我希望这些结果在运行相同配置的其他节点的 ±20% 以内。 我想你应该明白:
元数据:
Version: Parity/v1.8.0-unstable-7940bf6ec-20170921/x86_64-linux-gnu/rustc1.19.0 from source w/ musicoin supportUbuntu: 17.04 Kernel 4.10.0-35-generic / September 2017 / Lenovo Thinkpad X270, Core i7-7600U, 1TB SSD, 16GB RAM
谢谢大家看到最后! (比较心动~)
原文链接: