0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

あなたのデータは守られている?ハッシュ関数の秘密とマイニングの仕組み

Posted at

🔐 1. ハッシュ関数の計算

💡 ハッシュ関数とは?

ハッシュ関数(Hash Function)は、任意の長さのデータ(テキストやファイルなど)を入力すると、固定長の文字列(ハッシュ値)を出力する関数だよ。

  • 例: 「Hello, World!」 → a591a6d40bf420404a011733cfb7b190

🔑 特性

  • 一方向性: ハッシュ値から元のデータを逆算することはほぼ不可能。
  • 固定長出力: 入力が短くても長くても、出力は常に同じ長さ(例えば、SHA-256なら256ビット)。
  • 衝突耐性: 異なる入力が同じハッシュ値になる可能性は極めて低い。
  • 微小変化に敏感: 入力の1ビットでも変わると、ハッシュ値は大きく変わる。

🧮 具体的な計算方法(SHA-256の場合)

  1. 入力データの準備: 「Hello, World!」のようなデータをバイナリ形式に変換する。
  2. パディング: データの長さが512ビットの倍数になるように調整する。
  3. 初期ハッシュ値の設定: 規定された8つの32ビットワード(固定値)を準備。
  4. メッセージの分割: 512ビットごとにデータを分割。
  5. 圧縮関数の実行: 64ラウンドの計算を実行し、データを「混ぜる」。
  6. 最終出力: 256ビットのハッシュ値が得られる。

🔒 ブロックチェーンでの利用例

  • ブロックハッシュ: 各ブロックにはその内容から生成されたハッシュが付与される。
  • データ改ざん防止: もしブロックのデータが改ざんされると、ハッシュ値も変わるので一目瞭然。

⛓️ 2. ブロック生成時の計算(PoWとマイニング)

🚧 PoW(プルーフ・オブ・ワーク)とは?

PoW(Proof of Work)は、「計算量の証明」 を行うことで、ブロックチェーンネットワークの安全性を保つ仕組みだよ。

  • 例えば、ビットコインのネットワークでは、新しいブロックを追加する権利 を得るために、このPoWを競争するんだ。
  • これが「マイニング(採掘)」と呼ばれる作業だよ。

⛏️ マイニングの計算方法

  1. ブロック情報の準備

    • 新しい取引データ、前のブロックのハッシュ、タイムスタンプ、その他の情報をまとめる。
  2. ナンス(Nonce)の設定

    • ナンスとは、マイナー(採掘者)が自由に変更できる数値のこと。
    • これを色々変えて試すことで、正しいハッシュ値を見つける。
  3. ハッシュ関数の実行

    • ブロックのデータ + ナンスをハッシュ関数(SHA-256など)に通す。
  4. 正しいハッシュ値の探索

    • 出力されるハッシュ値が、「難易度ターゲット(Difficulty Target)」 と呼ばれる条件を満たすまで、ナンスを変えてハッシュを計算し続ける。
    • 例えば、ハッシュ値が「0000...」といった特定の先頭のゼロの数を持つ必要がある。
  5. 成功したらブロックを追加

    • 条件を満たすハッシュ値を見つけたマイナーが、新しいブロックをネットワークに送信。
    • 他のノードがその計算を確認して、正しければブロックチェーンに追加する。

📈 計算の難易度

  • ビットコインの場合、約10分ごと にブロックが生成されるように、難易度が自動的に調整されるよ。
  • マイナーの参加が増えれば難易度が上がり、逆に減れば難易度が下がる仕組みだね。

💵 報酬(インセンティブ)

  • 正しいブロックを生成したマイナーは、新しく発行されたビットコイン と、取引手数料 を報酬として受け取れるんだ。
  • これがマイナーたちが競争して計算を行う大きなモチベーションになっているよ。

💡 まとめ

🔐 ハッシュ関数の役割

  • データを固定長の一意な値に変換し、改ざんを防止する。
  • ブロックチェーンの安全性を支える重要な技術。

⛓️ PoWとマイニングの仕組み

  • ナンスを変えながらひたすらハッシュ計算を行い、特定の条件を満たすハッシュ値を見つける。
  • 計算力が高いほどブロック生成の成功率が上がる(=報酬も増える)。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?