验证程序的修剪模式

问题描述

为什么验证者节点应该始终是归档节点?不这样做的风险和缺点是什么?我知道拥有至少一个存档节点可能很有趣,但是为什么要全部使用呢?如果保留了区块链数据(外部和块头),则可以在任何时间点复制任何状态,对吗?那么为什么要在DB中保持每个块的状态呢?

当我尝试以修剪模式--pruning 256运行验证程序时出现此问题,并且出现以下错误

Error: Input("Validators should run with state pruning disabled (i.e. archive). You can ignore this check with '--unsafe-pruning.'"

解决方法

默认情况下,验证器节点作为存档节点运行的部分原因是由于遗留原因-我认为之前没有进行过修剪(尽管目前已解决)。

使用修剪的数据库的风险在于,恢复数据库快照可能有些棘手(因此,如果数据库损坏,则可能需要从头开始重新同步)。而且,如果修剪参数的块数太少,则共识可能无法正确运行(1000或10000的值应该很好)。

将其作为存档节点运行时,明显的缺点是存储空间,但这也会使您自己的节点和其他节点的备份具有更好的兼容性。