核对你的账本与调平两条链:verifychain 与 preciousblock 图 1
核对你的账本与调平两条链:verifychain 与 preciousblock · 图 1

一、先分清两件事

一个是账本有没有坏,一个是两条一样重的链该扶哪条。前者是数据完整性问题,后者是链选择裁决问题。比特币核心给出的两件工具分别是 verifychain 与 preciousblock,恰好一个拿听诊器、一个拿法槌。

核对你的账本与调平两条链:verifychain 与 preciousblock 图 2
核对你的账本与调平两条链:verifychain 与 preciousblock · 图 2

二、verifychain:五级检查强度

verifychain 接受两个可选参数,检查等级与区块数量,文档写明等级范围零到四、每一级都包含前几级的检查。零级只是把区块从磁盘读一遍,验的是文件读得出来;一级校验区块有效性;二级核对撤销数据,这是回滚能力的地基;三级检查链顶区块的断开过程;四级尝试把区块重新连接回去。默认停在三级。数字越小越快、覆盖面越浅,数字越大越接近一次完整的手动重验。典型用法是异常重启后先低级别扫一遍确认账面正常,硬件报错或断电事故后再上高级别,同时用区块数量参数限制耗时。它只报告发现,不修复问题;查出异常时的正确反应通常是整库重同步或按支持文档定位损坏文件,而不是赌一个更低的等级重跑。

三、preciousblock:给同工作量的平局一个先后

共识规则是选最重链,但存在一个规则没有偏好的角落:两个合法区块携带相同的工作量同时抵达,先到的块赢,这是传播时序决定的偶然。preciousblock 允许手动对这一段偶然表态——文档的语义是把一个区块当作先于其他同等工作量的区块收到,从而让节点在它上面继续建设和出块;再次调用会覆盖前一次的裁决,且效果不跨重启保存。

四、法槌的作用范围要说清

它不会改变任何链上事实:其他节点不会因为你的裁决而改主意,两个块的经济后果始终由后续区块落在哪条上来揭晓。它影响的只有这台机器接下来的工作与验证重心,因而适用场景很窄,主要集中在运维实验与特殊排障;把它当成站队工具,只会让自己在分叉期间孤立。与之同类的还有把区块标记无效的运维手段,两者都属于高风险操作,动手前应完整理解后果。

五、组合使用的姿势

日常运维里两件事几乎不会同时发生,但它们共享同一个心态:节点软件不是黑盒。数据库可以体检、链的偏好可以查询甚至表态——当然,先读文档再读日志,永远是这两件工具正确的打开方式。

本文内容为节点运维科普,不构成投资建议。

六、给两条命令排一个使用日程

把两件工具放回日常日历,位置立刻清楚。verifychain 属于定期体检:断电事故后、磁盘更换后、大版本升级重启后,先低级别跑一遍再恢复对外服务,是对自己和网络都负责的习惯;它不要求停服太久,把区块数量参数调小、分几天跑完同样有效。preciousblock 则像应急包里的手电,一年用不上一次,但你要清楚它的保险丝在哪里——只在平局时刻表达偏好、重启即失效、不影响任何其他节点。两个命令共享一条底层原则:节点软件把可验证性做成了接口,账本对不对、链怎么选边,都可以查询、可以核对,而不是要求使用者凭感觉信任。把这条原则用起来,全节点的意义才算完整——它不只是存了一份链的副本,更是把这份副本的审计权交到了你手里。

七、体检之外:日志与备份的配套习惯

verifychain 报出的异常往往只是冰山一角,定位要靠 debug 日志里区块验证失败的行号与哈希,抄下这两样再去查已知问题清单,效率远高于整日翻日志。更重要的是备份侧的认知:区块数据库本身不需要备份——丢了可以重新下载验证,值得备份的是钱包文件与配置。明白这一点,体检不通过的处置就清晰了:先判断是链数据损坏还是钱包文件异常,前者重同步,后者从备份恢复并配合重扫。两件工具各就各位,节点运维就从玄学退回到流程。