关闭矿工程序并重新启动它的过程很复杂。 要想在所有保证中都能做到这一点,需要考虑以下几个因素:
考虑到需要不断向网络发送证明,矿工应该尽可能少地处于离线状态。 离线时间 Offline-Time 包括计算机完全重新启动矿工守护程序所需的时间。 由于这些原因,我们建议您按照以下步骤操作:
在仍有待处理操作的情况下关闭矿工程序可能会导致矿工被惩罚。 通过运行 lotus-miner proving info 来检查是否有未决操作。 如果任何截止日期(Deadline)显示了过去的 区块高度 block height ,请不要重新启动。
在下面的例子中,Deadline Open 是 454, 早于 Current Epoch (当前纪元)的 500。这时不应关闭或重启该矿工程序:
$ lotus-miner proving info Miner: t01001 Current Epoch: 500 Proving Period Boundary: 154 Proving Period Start: 154 (2h53m0s ago) Next Period Start: 3034 (in 21h7m0s) Faults: 768 (100.00%) Recovering: 768 Deadline Index: 5 Deadline Sectors: 0 Deadline Open: 454 (23m0s ago) Deadline Close: 514 (in 7m0s) Deadline Challenge: 434 (33m0s ago) Deadline FaultCutoff: 384 (58m0s ago)
在下一个示例中,由于没有 Deadlines 早于 Current Epoch,因此可以安全地重启矿机。 您需要大约 45 分钟的时间,矿工程序才能恢复在线以声明故障。 这称为 Deadline FaultCutoff。 如果矿工程序没有故障,那么您大约有一个小时的时间。
$ lotus-miner proving info Miner: t01000 Current Epoch: 497 Proving Period Boundary: 658 Proving Period Start: 658 (in 1h20m30s) Next Period Start: 3538 (in 25h20m30s) Faults: 0 (0.00%) Recovering: 0 Deadline Index: 0 Deadline Sectors: 768 Deadline Open: 658 (in 1h20m30s) Deadline Close: 718 (in 1h50m30s) Deadline Challenge: 638 (in 1h10m30s) Deadline FaultCutoff: 588 (in 45m30s)
上面的 proving info(证明信息)示例显示了当前证明窗口和截止日期 Deadline 的信息。 如果您希望看到任何即将到来的截止日期 Deadline ,可以使用:
$ lotus-miner proving deadlines
每行对应一个截止日期(30 分钟,涵盖 24 小时)。 当前的已标记。 这有时对于查找一天中的矿工不必向链提交任何证明的时间很有用。
在停止该矿工程序之前,请检查交易状态,以确保该矿工程序未正在接收客户的数据或未正在检索客户的数据:
lotus-miner storage-deals list lotus-miner retrieval-deals list lotus-miner data-transfers list
为了防止在等待当前截止日期 Deadline 之前完成新交易时,可以暂时禁止存储交易和检索交易。 这样可以确保关闭时,矿工程序不会发现自己正处于新交易期间:
lotus-miner storage-deals selection reject --online --offline lotus-miner retrieval-deals selection reject --online --offline
矿工程序完成重启后,可以使用以下方式重置交易:
lotus-miner storage-deals selection reset lotus-miner retrieval-deals selection reset
要获得当前扇区和状态的概述,请运行:
lotus-miner sectors list
任何正在进行的密封操作将从最后一个检查点重新开始,通常对应于当前密封阶段的开始。 鉴于密封非常耗时,因此在重新启动矿工程序之前,应等待接近完成的某些阶段。
考虑到上述所有因素,您可以决定关闭矿工程序的最佳时机:
lotus-miner stop
您可以根据需要尽快重启矿工程序。 工作者程序不需要重新启动,因为他们会在矿工程序恢复运行时自动重新连接到该矿机。 但是,如果要在关闭矿工程序的同时升级节点,则需要重新启动机器。
可以随时重新启动 Lotus 密封工作者程序(Seal Worker),但是如果他们处于其中一个密封步骤的期间,则该操作将再次开始(从最后一个检查点开始)。
WARNING
在从头开始完全密封之前 (PreCommit1 阶段) ,最多可以尝试三种操作来完成 PreCommit2 操作。