我理解的是full模式和fast模式都下载了区块header和body, 区别主要是一个需要重放交易以生成状态数据,一个直接拿状态数据快照
也就是fast模式少了验算的步骤,所以同步才变快是吧?
但是为什么两者都下载了header和body,同步之后数据量会相差那么多呢,fast模式是少同步了什么其他的数据吗?
差别在于以太坊的状态数据 state ,这个才是需要大量磁盘空间存储。
即使一笔普通转载交易也会造成大量的 state 数据的增加和删除。如果是 full 模式,则需要存储从创世到现在的所有 state 的历史版本,在 leveldb 中的键值对是上亿条目的。
因此,fast 模式只下载区块和进行工作量证明,在下载区块的同时进行最新区块的 state 数据同步。数据同步速度不快,但节约了存储空间。
相对于 state 数据,区块信息和区块回执所需磁盘空间是微不足道的。因此 fast 模式下的本地磁盘占用比 full 模式小很多。
为了加速 fast 模式的同步速度,记得使用 SSD 硬盘并添加参数--cache 2GB
来提高同步速度。
如果觉得我的回答对您有用,请随意打赏。你的支持将鼓励我继续创作!