首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么go-ethereum报告的块大小很小?

为什么go-ethereum报告的块大小很小?
EN

Ethereum用户
提问于 2017-04-27 09:29:18
回答 2查看 342关注 0票数 4

我正在运行一个完整的geth节点,并对区块链大小感兴趣。

因此,我将所有块的大小之和与块链副本所消耗的实际磁盘大小进行了比较。

虽然chaindata文件夹的大小是136个GiB,但是所有块大小的总和都小于5 GiB。这种差异是从何而来的?

获取磁盘大小

代码语言:javascript
复制
$ du -hs geth/chaindata/
136G    geth/chaindata/

获取块大小

在这里,我使用JSON接口并查询每个块(eth_getBlockByHash),从我所知道的最好的块(使用eth_getBlockByNumber API调用)返回。

从每个块中,我得到了size值(根据维基是以字节为单位)。但是,所有size属性的总和大约只有4.76 GiB。

我在这里错过了什么?

(我知道我可以按每个街区的编号来取,但这与问题无关。)

EN

回答 2

Ethereum用户

发布于 2017-04-29 09:02:00

您所看到的差异是由于状态数据,状态数据单独存储在块数据中。

块本身由一个头、包含事务的列表和一个ommers列表组成。这是块数据。这说明了你的~5GB值。

所有其他数据--例如帐户数据,如合同代码、余额、非the以及其他数据(如日志和收据)--都被视为状态数据,而不是保存在块本身中。(仍然由所有“完整”节点下载。)这说明了你所看到的剩余的130‘re。

有关此问题的更多详细信息,请参见以下内容:

状态数据存储在哪里?

下面的图片也可能是有用的,它来自于下面的前一个线程:

云母块结构

块本身显示在右边,标头包含从状态数据派生出来的值,这些值显示在中间的大方框中。

注:

通过从以太扫描下载平均块大小的CSV,并在给定平均块时间的情况下推断出每天的块数,我得到了一个类似的5GB数字:https://etherscan.io/chart/blocksize

票数 3
EN

Ethereum用户

发布于 2017-05-01 05:00:33

你在Mac上吗?根据我的经验,Mac上的'du‘会报告比你用字节加起来的磁盘使用量要大得多。搜索谷歌。你终究会明白的。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/15586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档