ロード時のブロックチェーン検証
SVN rev 139 では、ロード後にブロックチェーンの基本的なチェックを行う。
これがあれば、blk*.dat を削除する必要はなく、フォークまで自動的に再編成を行っただろう。当時はこれを慎重に実装する時間がなかった。
すべてのブロックをロードする必要があるため、望ましい以上に時間がかかるかもしれない。遅すぎる場合は、特定のブロック番号までしか遡らないようにすることもできる。
1秒以上かかると思うが。 起動するたびにこれをやらなければならないのか 😞
メニューオプションにして手動で実行できるようにできないか? n 回の起動/日数ごとにチェックするようリマインドするカウンターを付けるとか。 あるいはソフトウェアを更新するたびにとか。
ブロックチェーン全体の再チェックが必要になるのは非常にまれなイベントのように思えるので、常に再チェックするのはやりすぎだ。
次の SVN リビジョンでは、ブロック 74000 の最後のチェックポイントまでしか遡らないようにする。将来問題を修正する必要がある場合は、少なくとも問題のある箇所まで遡るようにいつでもできる。また、ブロックインデックスを検証するコードも追加しており、これによりプルーフ・オブ・ワークチェーンが検証される。
それでも、システムは blk*.dat ファイルに対して完全に安全というわけではない。誰かの blk ファイルのコピーを使う場合、その人を信頼していることになる。