8
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?

はじめに

RinHash は、私が開発している仮想通貨 RinCoin のために設計した
独自の Proof-of-Work(PoW)アルゴリズムです。

既存の PoW(SHA-256 / Scrypt / Ethash など)は、最終的に ASIC による
ハッシュ集中が起きやすく、GPU・CPU マイナーが排除されがちです。

そこで私は 「GPU・CPU で現実的に掘れ、ASIC では効率が出にくい」
ことを目標に RinHash を設計しました。


RinHash とは

RinHash は、複数のハッシュ関数を直列に組み合わせた PoW アルゴリズムです。

BLAKE3 → Argon2d → SHA3-256

設計思想

なぜ ASIC 耐性が必要か

  • ASIC によるハッシュ集中
  • ネットワークの中央集権化
  • 個人マイナーの排除
    のような問題点が挙げられます。RinHashは独自のアルゴリズムを実装することによりGPUやCPUでもマイニング可能にし、企業が独占するのではなく公平なマイニングを目指しています。

RinHash の狙い

  • GPU・CPU でマイニング可能
  • ASIC ではコスト効率が出にくい
  • 実装を公開し、検証可能にする

各アルゴリズムの役割

BLAKE3

  • 非常に高速なハッシュ関数
  • ブロックヘッダー(80byte)を一度拡散する役割

Argon2d

  • メモリハード関数
  • RinHash では Argon2d を採用
  • ランダムメモリアクセスが多く ASIC 実装が難しい

SHA3-256

  • 最終ハッシュの整形
  • 出力を 32 byte に固定

RinHash の仕様

Input  : 80 bytes (Block Header)
Output : 32 bytes

C 実装例(簡略)

void rinhash(const uint8_t *input, uint8_t *output)
{
    uint8_t blake3_out[32];
    uint8_t argon2_out[32];

    blake3_hasher hasher;
    blake3_hasher_init(&hasher);
    blake3_hasher_update(&hasher, input, 80);
    blake3_hasher_finalize(&hasher, blake3_out, 32);

    argon2d_hash_raw(
        2, 64, 1,
        blake3_out, 32,
        "RinCoinSalt", 11,
        argon2_out, 32
    );

    sha3_256(output, argon2_out, 32);
}

まとめ

RinHash を始めPoWにはいくつもの種類がありますが、PoWには今後も発展の余地があると考えています。
この記事を読んで少しでも気になってくれたら嬉しいです。

8
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
8
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?