技術・仕組み

ビットコインの「ハッシュ関数」とは?【実例で分かりやすく解説】

ビットコインのトランザクション処理では「ハッシュ関数」というものが使われています。

いけやん
いけやん
「ハッシュ関数」について、理解しましょう!
読者さん
読者さん
ハッシュかんすう・・・?なんじゃそりゃ。

ビットコインに使われている「ハッシュ関数」とは

「ハッシュ関数」とは、

入力した値から出力される数が予見することができない関数

です。

読者さん
読者さん
はてな?
いけやん
いけやん
具体例でみていきましょう。

例えば、

「abc123」

という値をハッシュ関数に入力すると、

「C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646」

というようなランダム64文字の値が出力されます。

また、

「bitcoin bitcoin bitcoin」

という値をハッシュ関数に入力すると、

「C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646」

というようなランダム64文字の値が出力されます。

さらに、先ほどと1文字だけ変えて

「bitcoin bitcoin bitkoin」

という値をハッシュ関数に入力すると、

「53EFA2C0505E6AE40F8E5C7BAF81496A27494715C6832E967589E9A150F6D6BD」

というようなランダム64文字の値が出力されます。

【ビットコイン】ハッシュ値とは

ハッシュ関数で出力される結果のことを「ハッシュ値」と言います。

読者さん
読者さん
つまり「ハッシュ値=64文字の値」だな。

【ビットコイン】ハッシュ関数の特徴(入力・出力結果)

先ほどの例からもわかるように、ハッシュ関数で入力する値と出力される結果(ハッシュ値)には、次のような特徴があります。

  • 入力値が少しでも違うと、ハッシュ値は全く異なる。
  • 入力値が同じだと、ハッシュ値も同じになる。
  • 入力値が何ケタであっても、ハッシュ値は同じケタ(64文字)になる。
読者さん
読者さん
ふむふむ。具体例を見たら少しイメージがわくな。

【ビットコイン】ハッシュ関数の「不可逆性」

もう一つ、ハッシュ関数の重要な性質「不可逆性」について。

これはハッシュ関数を使って

「取引記録をハッシュ値」に変換するのは簡単(=誰でもすぐできる)

だが、

「ハッシュ値を取引記録」に変換するのは不可能(=誰にもできない)

ということ。

つまり、

  • 〇:「AさんからBさんへ1BTC移動した」⇒「1A5566・・・3」
  • ×:「1A5566・・・3」⇒「AさんからBさんへ1BTC移動した」

ということ。

読者さん
読者さん
一方通行の性質がある、ということだな!

 

ハッシュ関数、ハッシュ値の考え方がビットコインのトランザクション(取引記録)処理の基本になっています!

いけやん
いけやん
覚えておきましょう!