ビットコインの原論文を読む 7節 使用ディスクスペースの節約

7 使用ディスクスペースの節約

コインの取引履歴が十分な数のブロックに埋め込まれたら、使用ディスクスペースを節約するために、古い履歴を消去しても構わない。取引情報のデータ構造にはハッシュ木[7][2][5]を採用しているので、データを消去しても、ブロックのハッシュ値は変わらない。ハッシュ木の性質により、そのルートハッシュ値は取引データ全体のハッシュ値になる。この値はブロックのヘッダーに格納されている。古くなったブロックでは、ハッシュ木の枝を刈り取ってサイズを縮小できるが、この際、途中の不要なハッシュ値も削除可能である。

fig4

ブロックのヘッダー部分の大きさは約80byteである。従って、ブロックを10分間に1個ずつ生成する場合、1年間に80byte×6×24×365=4.2MBが必要になる。2008年現在、一般的なPCは2GBのRAMを搭載して販売されており、ムーアの法則によればこれが1年間に1.2GBの勢いで成長している。そのため、ヘッダー部分だけならば、すべてのブロックをメモリに格納できるだろう。

[2] H. Massias, X.S. Avila, and J.-J. Quisquater, “Design of a secure timestamping service with minimal trust requirements,” In 20th Symposium on Information Theory in the Benelux, May 1999.

[5] S. Haber, W.S. Stornetta, “Secure names for bit-strings,” In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.

[7] R.C. Merkle, “Protocols for public key cryptosystems,” In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980.

ハッシュ木は、原文ではMerkle Treeと書かれていますが、同じものを指します。末端のデータからハッシュ値を積み上げて、全体のハッシュ値を決める方式です。ハッシュ木を使う利点は、データを削除しても全体のハッシュ値が変わらないことです。普通のハッシュ値では、少しでもデータを削除すると全体のハッシュ値が変わってしまうので、演算量証明をやり直す必要があり、困るわけです。

たとえ全参加者が元データを削除しても、ブロックのヘッダー部分、つまりハッシュ値のチェーンは残るため、ビットコイン創成時から現在までの演算量証明は誰でも追跡できます。とにかくチェーンが長い方が勝つので、たとえば「ビットコイン開始時からのデータをすべてねつ造しよう」とする人が現れても、長大な演算量証明を築き上げられず、成功しないでしょう。