クライアントはblk0001.datの暗号学的な完全性を信頼できないソースから検証する能力を明らかに持っている。なぜなら、ネットワーク経由で受信したブロックに対してそれを行っており、blk0001.datには……信頼できないソースからネットワーク経由で受信したシリアライズされたブロックが含まれているからだ。
blk0001.datのファイル位置データをProcessBlock()に渡し、下流の呼び出し先AcceptBlock()でWriteToDisk()のストレージ呼び出しをスキップするだけで、それほど難しくないはずだ。
私が間違いでなければ、これは現時点で「公式」クライアントが blk0001.dat に検証済みデータが含まれていると推定していることを意味し、別のソースからダウンロードしたデータが侵害されていた場合、現在この情報を検証する方法がない。これはソフトウェアがこの問題に対処しようとしている間の一時的な危険だ。
一方で、UI や bitcoind のコマンドラインスイッチとして、ブロックデータの何らかの「再検証」をローカルで実行するオプションを追加することもできるだろう。コンピューターのウイルスがブロックチェーンのデータを操作する場合の予防策など、他の用途もあると思う。検証コードはすでにソフトウェアにあるので、アルゴリズムとトリガーメカニズムを設定するだけだ。検証プロセス中に懸念のある特定のブロックがあれば、ピアノードへのブロック要求に基づいてチェーンを「修復」する努力や、チェーン全体を破棄することもできるだろう。
そのような機能がいつか追加されることを望む。