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

はじめに

こんにちは。
今回は 自作仮想通貨「RinCoin」 を実際に設計・実装・運用している話を書きます。

いわゆる

  • ERC20トークン
  • テストネット用の学習コイン

ではなく、

  • 独自ブロックチェーン
  • 独自PoWアルゴリズム(RinHash)
  • CPU / GPUマイニング対応
  • 実運用ネットワークあり

という、かなり「フルスクラッチ寄り」な仮想通貨です。


RinCoinとは?

RinCoin は以下の特徴を持つ仮想通貨です。

  • Proof of Work(PoW)
  • Bitcoin / Litecoin 系コードベース
  • ASIC耐性を意識した独自ハッシュアルゴリズム
  • GPU / CPU マイニングを前提
  • 個人開発・コミュニティ主導

なぜ作ったのか?

理由はシンプルで、

  • 既存PoWアルゴリズムは ASIC に支配されがち
  • GPU/CPUマイニングが形骸化している
  • アルゴリズムを自分で設計してみたかった

という動機です。

「どうせ作るなら本当に動くものを作ろう」と思い、
デーモン・マイナー・エクスプローラ・ネットワークまで構築しました。


独自PoWアルゴリズム「RinHash」

RinCoinの最大の特徴が RinHash です。

RinHashの構成

BLAKE3 ↓
Argon2d(メモリハード) ↓
SHA3-256

設計意図

  • BLAKE3
    高速で入力を拡散(GPU向き)

  • Argon2d
    メモリハード化・ASIC耐性
    RinCoinでは軽量設定(64KB)から開始

  • SHA3-256
    最終ハッシュの安定性と検証の容易さ


RinHash(C実装例)

以下は実際に使用している処理構成を簡略化した例です。

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

    // 1. BLAKE3
    blake3_hasher hasher;
    blake3_hasher_init(&hasher);
    blake3_hasher_update(&hasher, input, len);
    blake3_hasher_finalize(&hasher, blake3_out, 32);

    // 2. Argon2d
    argon2d_hash_raw(
        2,          // time cost
        64,         // memory cost (KB)
        1,          // lanes
        blake3_out,
        32,
        "RinCoinSalt",
        11,
        argon2_out,
        32
    );

    // 3. SHA3-256
    sha3_256(output, 32, argon2_out, 32);
}

マイナー実装(CPU / GPU)

CPUマイナー

cpuminer-opt ベース

RinHashをCで実装

Stratum / GBT 対応

GPUマイナー

CUDAで RinHash を完全実装

Argon2d を GPU向けに移植

nonce をバッチ処理して高速化

正直、Argon2dのCUDA実装が一番大変でした。


デーモン側(コア)

Bitcoin Core / Litecoin 系をベースに改造

PoW検証に RinHash を使用

ブロックハッシュも RinHash(Bitcoinのような reverse はしない)


実際に運用してみて

良かった点

PoWやマイニングの理解が飛躍的に深まった

GPU最適化・並列処理・エンディアン問題を実体験できた

理論ではなく「現実の仮想通貨」が分かる

つらかった点

CUDA + Argon2d のデバッグ

Stratumの仕様差

マイナーとデーモンの微妙な差分による不整合

エクスプローラ・取引所対応


作って分かったこと

仮想通貨開発は「コード量」より「デバッグ量」

PoWは速さより検証の正確さ

個人でも「動く仮想通貨」は作れる

開発を進める上で英語の知識も必要であると感じました


おわりに

RinCoinは現在もコミュニティにより開発・運用を継続されています。

仮想通貨を作ってみたい

PoWを本気で理解したい

GPUマイナーを書いてみたい

という人には、一度は自作してみることを本気でおすすめします。

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