ビットコインの原論文を読む 8節 取引の簡易検証法

8 取引の簡易検証法

取引を検証するだけで良いなら、ノードの役割をすべて果たす必要はない。その代わりに普段は、最長チェーン内の各ブロックヘッダーを、それを確実に持っているノードに要求して手に入れておけば良い。そして検証時には、その取引を含むブロックのハッシュ木を要求する。ユーザ単独では取引を検証できないが、そのブロックを調べれば、ネットワーク上のいずれかのノードが取引を受け入れたと確認できる。また、その後にブロックが連なっていれば、ネットワーク全体が取引を承認したこともわかる。

fig5

善良なノード群がネットワークを制御できていれば、この検証法は信頼できる。しかし攻撃者の力が強くなると、信頼性は減少する。各ノードは自身で取引を検証できるので問題ないが、この簡易検証法しか使わないユーザは、攻撃者がネットワーク内で一定の演算能力を持つ場合に、ねつ造された取引を見破れない。これに対抗するには、不正ブロックを発見した善良なノードが、そのことをユーザに知らせるような仕組みが必要かもしれない。ユーザの画面に対して、ブロック全体をダウンロードして問題がある取引の整合性を確認するように、警告を伝えられれば良い。頻繁に支払いを受けるようなビジネス利用者は、セキュリティを確保するために素早い検証が必要なので、他者に頼らず自身でノードを設置すべきだろう。

前節の方法でデータ量は削減できますが、それでも各コインの直近の取引履歴は残しておかねばなりません。ビットコインを利用するだけのユーザ、特にモバイルクライアントに全コインのデータを保持させるのは、酷というものです。そこで、採掘を行っているノードからデータを取り寄せて検証するという仕組みが用意されています。その際も、ブロックデータすべてを取り寄せる必要はなく、関係する部分だけを得られるようになっています。これも、ハッシュ木の効用ですね。

 

コメントを残す

メールアドレスは公開されません