
こんにちは、yoshihiroです。
今回は、仮想通貨関連でよく耳にするけど何のことかいまいち分からない単語ランキング1位候補の「ハッシュ」について、簡単に説明したいと思います。難しい話は極力避けてるので、ぜひ読んでみてください。
まず関数とは、何か数字なり文字列を入力すると、決められた式に従って計算結果を出力してくれるものですね。
ハッシュ関数も同じで、何か文字列を入力すると、特定の決まりに基づいて文字列を出力します。この時に出力された文字列のことを、ハッシュと呼びます。ハッシュ関数の一番の特徴は、どんな長さの文字を入力しても、必ず決まった長さの文字列が出力されることです。
実際にブロックチェーンで使われているのは、ハッシュ関数に暗号的な性能も付け加えた、暗号学的ハッシュ関数と呼ばれるものです。
暗号学的ハッシュ関数には色々な種類があるのですが、最も有名なのはSHA-256と呼ばれるもので、ビットコインのブロックチェーンにも使われています。
SHA-256を使うと、どんな文字列を入力しても16進数で64桁のハッシュを出力します。つまり、0~9+A~Fまでの16種類の文字が64個続く文字列を、ハッシュとして生成するのです。
ではこの暗号学的ハッシュ関数にはどんな特徴があるのか、特に重要な3点について説明します。
暗号学的ハッシュ関数では、入力値が同じであれば誰が使っても必ず同じハッシュが出力されます。しかし、出力されたハッシュから入力値を推測するのは非常に困難であり、事実上不可能です。以前の記事で紹介した楕円曲線暗号に似ていますね。この性質はブロックチェーンを形成する上でとても重要な性質になります。
暗号学的ハッシュ関数では、入力値が少しでも異なれば、出力されるハッシュは大きく異なります。例えば、句読点が1つ違うだけでも、出力されるハッシュは全く別のものになるのです。そのため、ハッシュ同士の関係性を分析しても入力値の推測には意味がありません。
暗号学的ハッシュ関数では、異なる文字列を入力すれば、(ほぼ)必ず異なるハッシュを出力します。たまたま同じハッシュが出てきた、ということはありません。
ハッシュとは何か、理解できましたでしょうか?もしできなかった人がいたらタイトル詐欺になってしまうので、僕のTwitterに連絡してください。訂正します。
このハッシュは、ブロックチェーンの至るところで使われています。ブロックチェーンへ記載するデータはすべてハッシュ化されていますし、マイニングもハッシュの生成を繰り返すことで行われます。
ちなみに、実は誰でも簡単にSHA-256を使ってハッシュを生成することができます。例えばこちらのページでは、文字列を入力するだけで実際のハッシュを生成してくれます。本記事に記載のハッシュもここで生成しました。色々試してみると楽しいと思いますよ。