
ハッシュ関数:暗号資産のすべての下で静かに働く仕組み
ブロックチェーンを本質的な部品にまで分解すると、ほとんどの仕事をこなしている二種類の暗号に行き当たります。デジタル署名は誰が使えるかを決めます。ハッシュ関数はそれ以外のすべてをつなぎとめています――ブロック、アドレス、採掘、取引 ID、そして財布があなたが署名しようとしているものを解読するやり方さえも。
ハッシュ関数が説明されることはめったにありません。気づかれることがめったにないからです。十分を割く値打ちはあります。理解すれば、暗号資産の驚くほど多くの部分が魔法に見えなくなるからです。
ハッシュ関数がすること
ハッシュ関数は、どんな入力――一語でも、一つのファイルでも、取引を詰めた一つのブロック全体でも――を受け取り、決まった大きさの指紋を返します。ビットコインが使う SHA-256 は、一文字を与えても一ギガバイトを与えても、常に 256 ビットを返します。ふつうは 16 進数の 64 文字で書かれます。
役に立つ性質は三つです。
決定的。 同じ入力は常に同じ出力になります。誰でも、どこでも、計算し直して確かめられます。
一方向。 指紋から入力へさかのぼる実用的な方法はありません。唯一のやり方は、一致するまで入力を当てずっぽうに試すことで、良いハッシュならそれは絶望的です。
衝突に強い。 同じ指紋を持つ二つの異なる入力を見つけることは現実的に不可能です。一文字変えるだけで、出力はまるごと、予測できない形で変わります。
ハッシュとはそれだけのものです。もっと大きな何かの、短く、確かめられ、偽造できない指紋。
気づかないうちにハッシュと出会う場所
取引 ID。 txid は取引のハッシュにすぎません。だから一意であり、だからブロックエクスプローラーに貼り付けるのはこれです。ちょうど一つの取引を指し、同じ ID を持つ別の取引は誰にも作れません。
チェーンそのもの。 どのブロックも一つ前のブロックのハッシュを含んでいます。古いブロックの何かを変えればそのハッシュが変わり、それ以降のすべてのブロックとのつながりが断たれます。この指紋の連なりが、歴史の改ざんを隠せないものにしています。
採掘。 プルーフ・オブ・ワークはハッシュのくじ引きです。採掘者はブロックヘッダーを何度も何度もハッシュし、そのたびに一つの数を変えながら、目標を下回る結果を探します。ハッシュは予測できないので近道はなく、あるのは試行の数だけです。だからプルーフ・オブ・ワークは本物のエネルギーを使い、その費用が安全を買うのです。
アドレス。 ほとんどのアドレスは何かのハッシュです。古典的なビットコインのアドレスは公開鍵のハッシュです。SSP のビットコインのアドレスは P2WSH、つまり 2-of-2 の支払い規則を記した証人スクリプトの SHA-256 ハッシュです。使う前にチェーン上にあるのはその指紋であって、鍵そのものではありません。
財布の中のハッシュ
ハッシュはチェーンの階層だけの概念ではありません。署名に使うソフトウェアの中にも現れます。
SSP Key は、承認の前にイーサリアムの取引を解読するとき、関数セレクタでその呼び出しが何をするかを見分けます。関数のシグネチャを Keccak-256 でハッシュしたものの先頭 4 バイトです。transfer(address,uint256) は a9059cbb で始まる値に、approve(address,uint256) は 095ea7b3 で始まる値になります。取引の先頭にこの 4 バイトを見つけると、解読器はどの関数が呼ばれているかが分かり、トークンを送ろうとしているのか、承認を与えようとしているのかを平易な言葉で示せます。
これはハッシュの使い道をよく表しています。もっと長いものの、小さく、紛れのない指紋。同時に限界の注意書きでもあります。4 バイトはあまりに短いので、別々の二つの関数が同じセレクタを共有することがありうるのです。解読器がわざと閉じる側へ倒れて失敗するように作られている理由の一つがこれです。予想外のものはすべて、自信ありげな推測ではなく生のデータへ戻されます。
ハッシュにできないこと
小さな入力は隠せません。 ハッシュは一方向ですが、入力が小さな候補の集まりから来るなら、攻撃者は候補を一つ残らずハッシュして比べればよいのです。だからハッシュした PIN や短いパスワードはほとんど守りにならず、だからシードフレーズは覚えやすい何かではなく、長くてでたらめな単語の列なのです。
意味については何も証明しません。 ハッシュが証明するのは二つのものが同一であることです。どちらかが正直かどうかについては何も語りません。完璧に検証された悪意ある取引のハッシュも、悪意ある取引のままです。
暗号化ではありません。 ハッシュを「復号」して元に戻すことはできません。ハッシュを逆にできると称するものは、当て推量をしています。
なぜあなたに関わるのか
ハッシュを手で計算することはまずないでしょう。けれども理解していれば、そうでなければ暗記すべき規則に見えるいくつものことに説明がつきます。
txid が支払いの存在を証明する理由。承認された取引を書き換えられない理由。採掘がエネルギーを消費する理由。まだ使っていないアドレスが鍵ではなく指紋を明かす理由。長くてでたらめなシードが安全で、短く気の利いたシードが安全でない理由。
ハッシュ関数は、暗号資産のうち、静かに、一日に何十億回と、ただ働き続けている部分です。それが何を保証し――何を保証しないのかを知ることは、お金を預けている仕組みを理解する最も安上がりな方法の一つです。


