perfect potato hash recipe

ハッシュ関数

料理の「ハッシュ」は食材を細かく刻んで混ぜます。ハッシュタグの「#」は縦横に細かく刻むことをイメージする文字です。同様に、データを切り刻んで混ぜ、一定の長さ(例えば128ビットとか256ビットとか)のデータに変換する関数を、ハッシュ関数といいます。ハッシュ関数の値をハッシュ値または単にハッシュといいます。

ここで扱うハッシュ関数は、厳密には「暗号学的ハッシュ関数」(cryptographic hash function)と呼ばれるものです。ハッシュ関数には、検索の高速化などの用途もあり、そちらで使われるハッシュ関数は、暗号学的ハッシュ関数である必要はありません。

具体的なハッシュ関数としては、古くは128ビットのMD5(エムディーファイブ)や160ビットのSHA-1(シャーワン)がよく使われました。MD5はもはや暗号学的ハッシュ関数としては使ってはいけません。アメリカのNIST(国立標準技術研究所)はSHA-1を2030年に終了すると発表しました。今後はSHA-2およびSHA-3と呼ばれる方法を使うべきです。SHA-2にはビット数の異なるいくつかのバリエーションがあり、256ビットのSHA-256(シャー256)などがよく使われます。SHA-3にもいくつかのバリエーションがあります。

ハッシュは至るところで使われています。例えばビットコインなどで使われているブロックチェーンは、情報のブロックをハッシュでつなぐことにより、改ざんしにくいようになっています。改ざんするには、それとつながったブロックのハッシュを全部再計算しなければなりません。ところがブロックをつなぐハッシュは大量の計算が必要な仕組みになっているので、簡単には改ざんできません。大量の計算をする見返りとして、新たなビットコインが貰えるので、世界中で大量のハッシュの計算が行われています。ブロックチェーンの全ハッシュレートのグラフを見れば、現在だいたい 200 million TH/s (terahashes per second) 程度、つまり 200 エクサハッシュ/秒(エクサは 1018)程度の計算が行われています。世界最高速のスーパーコンピュータでも毎秒 1 エクサ回程度の浮動小数点の演算しかできないので、どれだけ大量の計算かがわかると思います。

電力消費量も半端ではありません。Bitcoin network power demand というサイトで現在の電力消費量の推定値が公開されています。これも上がり下がりがありますが、2021年の合計は 104.89 TWh(テラワット時)です。比較のため、国内の電力消費量によれば、2021年の日本の年間電力消費量は 916 TWh ですから、日本の 1/9 ほどです。世界の電力消費量は、2019年ですがエネ百科によれば 25.0 兆 kWh つまり 25000 TWh とのことなので、ビットコインによる消費は 0.42% ほどです。しかもビットコイン以外の暗号資産もあります。

ただ、ブロックチェーンでも、ビットコインのような PoW(Proof of Work)型以外にもいろいろな方式が考えられます。暗号資産第2位のイーサリアムは、2022-09-15 に PoW から PoS(Proof of Stake)への切り替えを伴う The Merge を完了しました。これで電力消費量が 99.95% 減になるはずだとのことです。