チェックポイントのことを言っているのだろうか? そうであれば、理解している限り、それらはダウンロードされたブロックの検証中にのみ適用される。blk0001.datとblkindex.datの内容はクライアントによってチェックされない。なぜならクライアントはデータがそれらのファイルに書き込まれる前にチェックするよう設計されているからだ。
それは正確ではない。-checkblocks(CheckBlock())は blk0001.dat / blkindex.dat の内容に対してかなりの数のチェックを実行する。AcceptBlock()はコンテキストを追加してもう少し多くのことをするが、大した差ではない。ただ、今はこの点は置いておこう。
もっと重要な点として見落としているのは、検証の省略を提案している人は誰もいないということだ。Bitcoin のコードは信頼できない blk0001.dat データの検証とインデックス作成を十分にこなせる。blkindex.dat が存在しない場合に合理的に動作するよう、いくつかの修正が必要なだけだ。
提案は単純に、バルクデータ転送用に設計されていないプロトコル(Bitcoin P2P)を使って大量の非圧縮データをダウンロードするのをやめよう、ということだ。
クライアントは blk0001.dat の暗号学的な完全性を信頼できないソースから検証する能力を明らかに持っている。なぜなら、ネットワーク経由で受信したブロックに対してそれを行っており、blk0001.dat には……信頼できないソースからネットワーク経由で受信したシリアライズされたブロックが含まれているからだ。
blk0001.dat のファイル位置データを ProcessBlock()に渡し、下流の呼び出し先 AcceptBlock()で WriteToDisk()のストレージ呼び出しをスキップするだけで、それほど難しくないはずだ。