7 使用ディスクスペースの節約
コインの取引履歴が十分な数のブロックに埋め込まれたら、使用ディスクスペースを節約するために、古い履歴を消去しても構わない。取引情報のデータ構造にはハッシュ木[7][2][5]を採用しているので、データを消去しても、ブロックのハッシュ値は変わらない。ハッシュ木の性質により、そのルートハッシュ値は取引データ全体のハッシュ値になる。この値はブロックのヘッダーに格納されている。古くなったブロックでは、ハッシュ木の枝を刈り取ってサイズを縮小できるが、この際、途中の不要なハッシュ値も削除可能である。
ブロックのヘッダー部分の大きさは約80byteである。従って、ブロックを10分間に1個ずつ生成する場合、1年間に80byte×6×24×365=4.2MBが必要になる。2008年現在、一般的なPCは2GBのRAMを搭載して販売されており、ムーアの法則によればこれが1年間に1.2GBの勢いで成長している。そのため、ヘッダー部分だけならば、すべてのブロックをメモリに格納できるだろう。
ハッシュ木は、原文ではMerkle Treeと書かれていますが、同じものを指します。末端のデータからハッシュ値を積み上げて、全体のハッシュ値を決める方式です。ハッシュ木を使う利点は、データを削除しても全体のハッシュ値が変わらないことです。普通のハッシュ値では、少しでもデータを削除すると全体のハッシュ値が変わってしまうので、演算量証明をやり直す必要があり、困るわけです。
たとえ全参加者が元データを削除しても、ブロックのヘッダー部分、つまりハッシュ値のチェーンは残るため、ビットコイン創成時から現在までの演算量証明は誰でも追跡できます。とにかくチェーンが長い方が勝つので、たとえば「ビットコイン開始時からのデータをすべてねつ造しよう」とする人が現れても、長大な演算量証明を築き上げられず、成功しないでしょう。
4 個のコメント
Skip to comment form
取引履歴を削除したら現在の所持金が分からなくなりませんか?
Author
取引履歴は、コインの所有者は持っている必要があります。
その他の、全体で共有しているブロックチェーンからは削除しても構わないはずです。
ハッシュ木を使うことにより、削除しても、コインの所有者が提示した取引履歴が本物であることを証明できますからね。
これができないと、みんなが共有しているブロックチェーンがすさまじい量になります。
コインの所有者が自分の取引履歴(特に支払い)を故意に隠した場合も、ハッシュ木からわかるのでしょうか?
すごい参考になります!
質問なんですが、二重支払いを防ぐために、各ノードは全履歴を持っていく必要がある認識ですが、ヘッダーだけだと検証できなくないですか?