ハッシュ値とは?

任意の情報について、一方的な方向性(逆は無理:「ハッシュ値」から任意の情報には「戻せません」)で、
2の256乗(SHA256,Blake2s等)のうちの任意の数値に変化させたとき、その値を「ハッシュ値」と呼びます。
ブロックチェーンは、この「ハッシュ値」で動いております。
とにかく「情報を扱う度」にハッシュ関数と呼ばれるものに情報を入れて「ハッシュ値」を取得しています。
そのとき、まったく同じ情報であれば「同じハッシュ値」になります。
そして、僅かでも(1バイト……1ビットともいう)でも異なれば、全然違う「ハッシュ値」が出ます。
それこそ、今回分は0が良く並んだきれいな「ハッシュ値」だったにも関わらず、
「僅かずれた」だけで、数字やAからFが入り乱れた(0xなので16進法です)、
まるで無作為に並べただけでは? と疑いたくなるような「ハッシュ値」が出ます。

どのような場面がハッシュ値ですか?

ブロックチェーンでよくみかけるハッシュ値は「トランザクションID……txid」です。
コインを送金後、txidをくれと言われたときに、相手に送金した証として渡すtxidが「ハッシュ値」です。
※ 注:コインを送るアドレスは「Base58」または「Bech32」と呼ばれ「ハッシュ値」とは異なります。

あと、その他にハッシュ値が使われている場面はありますか?

ブロックチェーンには、必ず「ブロックエクスプローラ」と呼ばれるものが実装されております。
そして、このエクスプローラをじっくり観察いたしますと、面白いことに気が付くと思います。
トランザクションIDの他に「ブロックハッシュ」と呼ばれるものが並んでいると思います。
そのブロックハッシュをよく確認してみてください。
トランザクションIDとは異なり、0が先頭から並んでいると思います。
わざわざ揃えたのか? と考えたくなります。
その答えは「イエス」です。
その0が先頭から並んでいる「ブロックハッシュ」は、
マイナーと呼ばれる方々が「0が先頭から並ぶハッシュを探して見つけ出したもの」です。
あの機材が並ぶ……、よくブロックチェーン関連の記事でみかける、あの機械です。
「ハッシュ値」が、0が先頭から並ぶなんて、地道に探すしかないくらい大変な作業ですから、
あのような大掛かりな機械やグラフィックカードをフル回転させて計算し、探していきます。
そして、「0が先頭から並ぶハッシュ」が条件を満たしている場合、新規ブロックとして承認するため、
「ブロックハッシュ」としてブロックチェーンに記録され、ブロックエクスプローラからみることができます。

あのような機械で計算となると、コストがかかりますよね?

はい。かかります。
そのため、そのコスト分を回収するために、コインを「新規で掘り当てる」と「報酬」が出ます。
マイナーの方々は、その「報酬」を目当てに「ブロックハッシュ」を計算する作業に励んでおります。
一般的に、このような作業は「マイニング」と呼ばれております。
※ 採掘のイメージとなるため「掘る」という表現が使われております。

あれ、「ブロックハッシュ」で、0から始まっていないブロックがあります!
もしやこれは……バグですか?

いいえ。正常です。
それらは「Proof Of Work(PoW)」と呼ばれる承認方式で「採掘されていない」ブロックです。
違う承認方式で割り当てており(PoWではないので「掘る」ではないです)、
「ハッシュ値」で承認された訳ではないゆえに、0から始まっていない、となります。
その場合、nNonceと呼ばれるマイナー用パラメタが0のままでハッシュ値を取得するため、
数字やAからFが入り乱れた「ハッシュ値」になっております。
※ もちろん、nNonceが0でも0から始まる可能性は……0ではないですが、まあ0です。(^^;

ハッシュ値は大きい数なので、uint64_tを使うのですか?

いいえ。uint64_tにも収まりません。オーバーフローします。
uint256と呼ばれる、uint8_tを32個連結させて256ビットにした「独自定義のクラス」を使います。
※ クラスにoperatorが実装されており「専用関数経由」ではありません。とても便利です。
※ もう一つの主役である「楕円曲線暗号」では、uint32_tを8個連結になっておりました。

□ 本ページをご覧いただきました方は、以下のページもよくご覧いただいております。
■ 集計中.....