


シリーズ紹介 Zero to Zero Knowledge
ゼロからゼロ知識という新しいシリーズへようこそ!
このシリーズでは、私たちのプライバシー保護プロトコルに使われるさまざまな技術の基礎を学んでいきます。
今日は ハッシュ関数 について学びます。ブロックチェーンで使用される暗号学の重要な要素です。このシリーズ後半では、その特性に依存するトピックも紹介します。
ハッシュ関数は、任意の長さの入力を受け取り、固定された長さの出力を生成します。

このツールを使って、実際にハッシュ関数を理解しましょう。
任意のテキストを入力すると固定長の出力が生成されます。異なるハッシュアルゴリズムによって出力がどのように変化するか観察してください。
試してみる: https://cryptii.com/pipes/hash-function
暗号ハッシュ関数は、以下の 3つの特性 を持つ必要があります:
ハッシュ関数にはいくつかのクラスがあります。以下にいくつかの例を示します:
BLAKE2の紹介: https://www.blake2.net
「完整性ハッシング」は、データの整合性チェックの例です。ファイルにチェックサムを生成し、ユーザーに対して正しさを保証するために使用されます。

ハッシュツリー もしくは メルクルツリー は、データブロックの暗号ハッシュでラベル付けされた枝と葉ノードから構成されています。

メルクルツリーは 暗号コミットメント方式 の例です。ツリーローはコミットメントと見なし、葉ノードがもともとのコミットメントに含まれていることを証明します。
P2Pネットワークで保存または転送されたデータを検証し、ピアから受け取ったデータが変更されていないことを保証します。
Zcashの Sapling および Orchard シールドプールでは、ノートコミットメントツリー が使用され、トランザクションがコンセンサスに合致していることを確認しながら、送信者、受取人、消費された金額を完全に隠します。
SHA256 は、ビットコインチェーンで各ブロックの不変性を強制するために使用される「署名ハッシュ」の例です。マイナーは、前のブロックのハッシュ + 現在のブロック内のすべてのトランザクションのハッシュ(hashMerkleRoot)+ タイムスタンプ + ランダム値 / ネットワーク難易度を使用して新しいブロックを生成します。

Equihash は、Zcashのマイニングに使用されるハッシュアルゴリズムです。KomodoやHorizenなどのネットワークでも使用されています。
一般化バースデー問題に基づく非対称Proof-of-Work、Equihash(BiryukovおよびKhovratovich):https://eprint.iacr.org/2015/946
さまざまなハッシュ関数の種類とその用途についてさらに理解を深めるために、以下のリソースは非常に役立ちます:
https://en.wikipedia.org/wiki/Hash_function
ZecHub (@ZecHub)によるスレッド
オリジナルXスレッド: https://x.com/ZecHub/status/1621240109663227906
このページは、ZecHub WikiのためにオリジナルのZero to Zero Knowledgeスレッドから作成されました。