ビットコイン投資ダイアリー

ビットコイン・仮想通貨に関する情報やノウハウをまとめたブログ

ハッシュとは?【ビットコイン用語】

 

ハッシュとは?

ハッシュとは、計算により得られる数値です。

元のデータを特定しにくく、計算後の桁数が等しいという特徴を持ちます。

例えば、MD5というハッシュ関数を元に「あいうえお」を計算すると、「ad7cf5ce5313f8b3fc59d626b9aad653」の数値を得ることができますが、一文字加えた「あいうえおか」を計算すると、「a763b2ee7bee44426f50aaeb2625e3b6」という全く違う数値かつ全く同じ桁数のハッシュを得ます。もちろん「あいうえお」なら何度計算しても「ad7cf5ce5313f8b3fc59d626b9aad653」と同じ計算結果が得られます。

f:id:dokugakukoumuin:20170330211532p:plain

ビットコインとハッシュの関係

ビットコインにおいてハッシュが用いられるのは、ブロックチェーンにブロックが追加される際です。以下のようにビットコインの取引が行われると、取引は世界中のノードに発信され、ブロックにまとめられます。

f:id:dokugakukoumuin:20170322172945p:plain

  1. こうして生まれた新たなブロック
  2. ブロックチェーン末尾のブロック
  3. nonce値(任意の数値)

の3つを、マイナーがSHA256という関数を元に計算し、ハッシュ値を得ます。(数学的に言うのなら、関数 ハッシュ値(新ブロック,末尾,nonce値)。

f:id:dokugakukoumuin:20170330213516p:plain

ハッシュ値は、なんでもいいわけではありません。nonce値という任意の数値(256桁)を何度も変化させて計算を行い、ゼロが16個(記事執筆時)続いたハッシュのみが適正なハッシュと認められます。こうして、ゼロが16個繋がったハッシュ値を見つけ出したもののみが新たなブロックをブロックチェーンの末尾に追加できるわけです。最も早く追加したマイナーは、報酬としてビットコインを与えられます。

f:id:dokugakukoumuin:20170330205426p:plain

ハッシュがブロックチェーンに用いられる理由

改ざんを防ぐためというのがハッシュが用いられる理由です。0が16個も続くハッシュを見つけるにはかなりの時間と専用の業務用PCを必要とします。ブロックチェーン上には、適正なハッシュ値をもったブロックのみが繋げられていきます。今までの全てのブロックが適切なハッシュ値を持ったものであり、ハッシュ値には一個前の末尾のデータが含まれているので、一つのブロックを改ざんしたのならば、それ以後に続く全てのブロックを改ざんしなくてはハッシュ値が不正になってしまいます。世界中にはたくさんのマイナーがいて、どんどん正規のブロックが積み上がっていくので、改ざんするには、これを上回る勢いで計算を行い、ブロックを積み上げていかなくてはなりません。しかし、このブロックの積み上げにハッシュが用いられることから、膨大な時間と費用がかかり、事実上無理で、メリットもないのです。

具体的には、世界中で行われているマイニング作業に用いられている専用PC(高速で0が16個続くハッシュを見つけ出すPC)を上回る量の専用PCの確保代金やそれだけの電気代を提供しなくてはなりません。そうまでするのならば、その計算能力を提供して大量のビットコインを報酬として受け取ったほうが利益になるのです。