主页 > imtoken知乎 > 以太坊全节点大小数据与比特币全节点比较

以太坊全节点大小数据与比特币全节点比较

imtoken知乎 2023-03-18 05:37:33

我对前段时间“以太坊全节点是2TB还是180GB”的问题个人理解大致如下,请误会:

以太坊的区块链与比特币不同。

比特币的区块链只记录“交易历史”。以太坊的区块链记录“交易历史”和“余额状态”。

比特币开发者也考虑过升级协议,在比特币区块链上注册“余额状态”,也就是UTXO承诺,但考虑到各种问题一直没有实现。

180GB 的以太币确实可以称为全节点。它还保留了完整的交易历史,只要连接上算力,就具有独立出块的能力。

删除的只是历史状态数据,相当于“余额”,可以从交易历史中重新计算。

所谓的“2TB全节点”应该叫“归档节点”而不是“全节点”(虽然也是全节点),这也是以太坊社区最初的称呼。

“归档节点”中的数据比一般“全节点”多,即使删除也可以重新计算,但重新计算过程非常耗时耗力。

如果我理解正确的话,以太的存档节点不仅会回放交易历史,还会拍照记录历史中的每一刻。

我发现了一个技术团队的测试结果,该团队在非常、非常高调的机器上运行了数周,以跟上最新的区块。

以太第一个可疑点/喷点:当新节点同步时,如果历史上的所有交易都必须完全验证(重放)并且完成“自我清白”的过程,计算负担将太重了。

因此,同步所有以太节点时,选项为“快”,节点只会直接下载最近状态,直接从最近状态开始完整验证。

也就是说,对于历史交易来说,相当于只是简单地“检查”了一次,并没有实际进行验证。

如果你不使用这种偷懒的方法,而是老老实实进行一次完整的重放验证,你可能要在高端机器上运行几天甚至几周——具体多久,我不知道,我是谁想分享一些数据。

对比一下,2018年12月,如果Bitcoin Core(最主流的比特币全节点软件)需要完成一次历史交易完整验证的同步,12月高端机只需要5个小时左右2018.

需要注意的一点:Bitcoin Core 默认不会完全验证所有的交易历史,因为默认开启了assertvalid,并且开发者写入了一个区块哈希值,相当于相信开发者已经完成了代表用户在此块之前进行完整(数字签名)验证。

需要更改配置,设置assertvalid=0,才是真正的完整验证。上面的测试是设置assumevalid=0。

另外,即使比特币全节点开启了剪枝,简单粗暴地删除旧块,它仍然可以算作全节点。但是,如果历史区块被删除,就无法重新计算,所以这种开启剪枝的全节点无法帮助新的全节点从头开始重新同步,也无法“自我证明”给其他人。

至于中本聪白皮书中提到的裁剪,从未实施过。可能是因为追溯扫描旧区块数据的工作模式效率比较低——很久以前,比特币全节点软件已经完成了区块数据和UTXO数据的分离管理,这样验证交易的效率不会太高坏的。 .

相比之下,比特币最主流的全节点软件Bitcoin Core没有SPV客户端功能。

以太的第二个可疑点/喷点:以太节点的光模式,相当于比特币的SPV。

这种“节点”对硬件要求极低,同步速度极快,因为它不验证任何东西,直接跟随算力。不知道算以太的“全节点”时,这个轻模式的“伪节点”是否也算...

其实对于网络上出现的一个节点,无论是不是“真节点”,外人都无法准确区分

因为节点可以完全“充值”,从别人那里拉数据,做“二级交易商”比特币和以太坊的区别,不管是比特币还是以太坊。

PS:同步比特币全节点时,最常见的性能瓶颈是磁盘读写,因为chainstate目录中保存的UTXO集(相当于所有比特币地址的余额状态)被查询和更新的非常频繁。会产生大量碎片化的读写操作,对机械硬盘来说压力很大。使用固态硬盘会好很多。

目前来说,如果可以为数据库缓存分配6GB以上的内存比特币和以太坊的区别,就可以完全避免频繁读写磁盘带来的性能瓶颈,但是UTXO集的大小可能会达到新高未来。那时你需要更多的内存,或者高性能的 SSD 来缓解这个问题。

原文链接:微博@LocalPartitionFromImage

Dogecoin:区块链中全节点的定义,我认为应该是一个自诞生以来就拥有所有主链数据的节点。所有的“数据”都是关键。至于能不能挖到,能不能包含处理过的数据,甚至是版本,能不能被其他节点直接发现和连接,能不能发币等等,都无所谓。应该理解,全节点就是总账,如果信息缺失无法完全对账,就不是全节点。

以太坊全节点VS比特币全节点