ビットコインのトランザクション処理では「ハッシュ関数」というものが使われています。
ビットコインに使われている「ハッシュ関数」とは
「ハッシュ関数」とは、
入力した値から出力される数が予見することができない関数
です。
例えば、
「abc123」
という値をハッシュ関数に入力すると、
「C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646」
というようなランダム64文字の値が出力されます。
また、
「bitcoin bitcoin bitcoin」
という値をハッシュ関数に入力すると、
「C775E7B757EDE630CD0AA1113BD102661AB38829CA52A6422AB782862F268646」
というようなランダム64文字の値が出力されます。
さらに、先ほどと1文字だけ変えて
「bitcoin bitcoin bitkoin」
という値をハッシュ関数に入力すると、
「53EFA2C0505E6AE40F8E5C7BAF81496A27494715C6832E967589E9A150F6D6BD」
というようなランダム64文字の値が出力されます。
【ビットコイン】ハッシュ値とは
ハッシュ関数で出力される結果のことを「ハッシュ値」と言います。
【ビットコイン】ハッシュ関数の特徴(入力・出力結果)
先ほどの例からもわかるように、ハッシュ関数で入力する値と出力される結果(ハッシュ値)には、次のような特徴があります。
- 入力値が少しでも違うと、ハッシュ値は全く異なる。
- 入力値が同じだと、ハッシュ値も同じになる。
- 入力値が何ケタであっても、ハッシュ値は同じケタ(64文字)になる。
【ビットコイン】ハッシュ関数の「不可逆性」
もう一つ、ハッシュ関数の重要な性質「不可逆性」について。
これはハッシュ関数を使って
「取引記録をハッシュ値」に変換するのは簡単(=誰でもすぐできる)
だが、
「ハッシュ値を取引記録」に変換するのは不可能(=誰にもできない)
ということ。
つまり、
- 〇:「AさんからBさんへ1BTC移動した」⇒「1A5566・・・3」
- ×:「1A5566・・・3」⇒「AさんからBさんへ1BTC移動した」
ということ。
ハッシュ関数、ハッシュ値の考え方がビットコインのトランザクション(取引記録)処理の基本になっています!