【3分でわかる!】暗号資産におけるハッシュ関数とは?要点を絞ってわかりやすく解説♪
暗号資産(仮想通貨)を勉強していると出てくる「ハッシュ関数」という言葉。
意味わからん‼という方のためにわかりやすく解説しているので是非ご覧ください‼
仮想通貨(暗号資産)とは結局なに?という疑問を辿っていくと、「ブロックチェーン」や「ハッシュ関数」、「マイニング」など、耳なじみのない言葉が沢山出てくると思います。
本記事では、「ハッシュ関数」について、要点を絞ってご説明したいと思います。
そもそも仮想通貨(暗号資産)ってなに?などについては、以下の記事を是非読んでみて下さいね。
bitFlyer無料口座開設
ハッシュ関数ってなに?
「ハッシュ関数」とは、マイニングにて報酬を受け取るといった際に、必ずやらなくてはならない作業となります。
ハッシュ関数とは
代入が簡単な代わりに、結果からは代入した値が分からない関数のことです。
マイニングという作業では、「ハッシュ関数」にさまざまな値を代入していきます。
そして、代入して出てきた「ハッシュ関数」がある一定の数値(ナンス)よりも小さくなった時、マイニングは成功となり報酬が与えられるのです。
「ハッシュ関数」の特性上、代入値は全く分かりません…
だからコンピュータを使って、マイニング成功までひたすら代入する作業を繰り返すのです‼
ハッシュ関数の特徴
「ハッシュ関数」は正確には「一方的ハッシュ関数」と呼ばれ、あらゆる入力値に対して常に同じ固定長の値を返す性質を持つ関数です。
「ハッシュ関数」によって求められる値は「ハッシュ値」と呼ばれ、任意の入力値に対してどんな値が返るか予想ができないのが特徴で、入直データが同じであれば常に同じハッシュ値が出力されますが、少しでも異なるデータを入れると全く違う値が得られます。
ハッシュ値からは入力データの逆算が現実的にできないという一方向性の特性から、「ハッシュ関数」は主に検索の高速化やデータ比較処理の高速化、データ改ざんの検出に使われています。
ナンスの見つかったブロックは改ざん不能=承認完了
ナンスとは、Number used once(一度だけ使用される使い捨ての数字)の略で、ブロックを生成するときにマイナーによって生成される 32 ビットの数値のことを言います。
なぜナンスを見つける=承認になるかというと、ナンスが見つかったブロックは事実上改ざんができなくなってしまうからです。
ブロックチェーンではいくつものブロックが存在します。それぞれのブロック内に取引情報がまとめられているのですが、もしひとつのブロックを改ざんしてしまうと、それ以降のブロックの取引情報(ナンスも含む)も全て変わってしまいます。
つまり、取引を改ざんしようとすると、それ以降のブロックのナンスも計算し直す必要があるということになります。
現在、世界中のマイナーが巨額の資金を投入して、高性能なコンピュータに計算を行わせています。
ナンスひとつを見つけるだけでも、これだけ大規模に行われているのですから、改ざん者だけで複数のナンスを計算し直すのはほぼ不可能と言えます。
ビットコインにおけるハッシュ関数
ビットコインが採用するSHA-256(Secure Hash Algorithm 256-bit)の場合、0と1により構成された256桁の固定の出力をします。以下では、ビットコインでハッシュ関数が利用されている電子署名とマイニングについて、それぞれ詳しく見ていきましょう。
電子署名
電子署名は、特定の人だけが情報にアクセス可能な「公開鍵暗号」と、あらゆる文字列を固定長の値に変換する「ハッシュ」を利用した技術です。秘密鍵で暗号化された文書は公開鍵を使って復号化できるという仕組みを利用して、ビットコインの送金では送受信者の間で取引の偽造や改ざんがされていない正当なものであることを証明します。
ハッシュ関数は秘密鍵から公開鍵を作成する際に使用されています。まず、送信するデータをハッシュ関数に入れてハッシュ値を算出し、そのハッシュ値を秘密鍵によって暗号化します。送信相手には送信するデータ原本と暗号化されたハッシュ値(電子署名)を送ります。受け取る側は、送信主の公開鍵を使用して電子署名をハッシュ値に復号化し、データ原本のハッシュ値を算出して比較します。両者のハッシュ値を比較し、一致すればデータの送り主が本人であると確認できるという仕組みです。
マイニング
マイニングとは、取引履歴のデータベースであるブロックチェーンを維持・管理していく作業のことです。ハッシュ値はブロックチェーンの整合性を確認するために利用されており、ビットコイン取引での決済承認においてはマイナーがハッシュ値を求める膨大な量の計算のマイニングが必要となります。
ビットコインはハッシュ関数として256ビット(=32バイト)のハッシュ値を得ることができるSHA-256を使用しています。マイニングでは、ブロックチェーン末尾のブロックのハッシュ値・新しい取引情報・32ビット(1~4,294,967,295)の任意の値「ナンス」の3つをSHA-256に入力して、特定のハッシュ値が算出されるまで計算を繰り返します。
ハッシュレート
ハッシュレートとは、単純にいうと「計算力」を表す言葉です。
単位はH/sで、1秒間に200回計算できるコンピューターならハッシュレートは200H/sといったように表されます。
マイニングを行う際は、自分のコンピューターがどれくらいのハッシュレートが出るのか、そしてマイニングしようとしている通貨はどれくらいハッシュレートがあるのか、この2つを知らなければいけません。
ディフィカルティ
ディフィカルティとは「マイニングの難易度」を表す指標です。
先述した通り、世界中でマイナーが高性能なコンピューターを使ってハッシュレートの計算を行なっています。
しかし、より高性能なコンピューターが登場するとブロックが形成される感覚が短くなってしまうため、ナンスの値を増やして難易度を調整しているのです。
よって、難易度が上昇すると得られる報酬は少なくなってしまいます。
マイニングを行う際は、「ハッシュレート」と「ディフィカルティ」について必ず把握する必要があるため、マイニングを行いたい人は必ず覚える必要があります‼
最後に
本記事では、「ハッシュ関数」と呼ばれる、仮想通貨(暗号資産)のマイニングで使われる用語について解説いたしました。
正直、簡単に説明しようにも、そもそもの仕組みを理解していないと中々わかりにくいかと思います…
単に、仮想通貨(暗号資産)取引を行いたい!というだけの方は、ここまでを覚える必要はありません。
もっと深いところまで知りたい、マイニングを行いたい、という方はより細かいところまで仮想通貨を知る必要がありますので、勉強してみて下さいね!