Closed4
100日チャレンジ day66 (ブロックチェーンエンジン)

昨日
100日チャレンジに感化されたので、アレンジして自分でもやってみます。
やりたいこと
- 世の中のさまざまなドメインの簡易実装をつくり、バックエンドの実装に慣れる(dbスキーマ設計や、関数の分割、使いやすいインターフェイスの切り方に慣れる
- 設計力(これはシステムのオーバービューを先に自分で作ってaiに依頼できるようにする
- 生成aiをつかったバイブコーティングになれる
- 実際にやったことはzennのスクラップにまとめ、成果はzennのブログにまとめる(アプリ自体の公開は必須ではないかコードはgithubにおく)
できたもの

ブロックチェーンの裏側を作る

完璧です!Go完全実装でunit testを積み上げて確実に動作するBitcoinブロックチェーンを作りましょう。
Day66 - Bitcoin ブロックチェーン実装 (Go)
確定仕様
技術スタック:
- Go (完全実装)
- CLI インターフェース (cobra)
- Unit Test 重視
- SQLite (ブロックチェーンデータ永続化)
実装機能:
- ブロックチェーン基本構造
- Proof of Work マイニング (低難易度: 1-2秒)
- デジタル署名によるトランザクション検証
- ウォレット機能 (鍵生成・残高・送金)
- 簡易P2P ネットワーク
- CLI コマンド群
学習ポイント:
- ブロックチェーン基本原理
- Merkle Tree
- ECDSA デジタル署名
- SHA-256 ハッシュ
- Proof of Work
- UTXO モデル
- P2P ネットワークプログラミング
詳細作業工程
ステップ1: プロジェクト初期化 + ブロック構造
-
プロジェクト作成 (
day66_bitcoin_blockchain
) - 基本構造体定義 (Block, Transaction, TxInput, TxOutput)
- SHA-256 ハッシュ機能
- Merkle Tree 実装
- Unit Test: ブロック生成・ハッシュ計算
ステップ2: トランザクション実装
- UTXO モデル実装
- トランザクション作成・検証
- Coinbase トランザクション
- Unit Test: トランザクション検証・UTXO管理
ステップ3: マイニング (Proof of Work)
- PoW アルゴリズム実装
- 難易度調整 (開発用: target leading zeros = 4)
- マイニング機能
- Unit Test: マイニング・難易度調整
ステップ4: ウォレット機能
- ECDSA 鍵ペア生成
- アドレス生成 (Base58 エンコード)
- デジタル署名・検証
- 残高計算
- Unit Test: 鍵生成・署名・残高計算
ステップ5: ブロックチェーン管理
- SQLite データベース設計
- ブロックチェーン永続化
- チェーン検証機能
- UTXO セット管理
- Unit Test: DB操作・チェーン検証
ステップ6: CLI インターフェース
- cobra CLI セットアップ
-
wallet
コマンド (create, balance, send) -
blockchain
コマンド (create, add, print) -
mine
コマンド - CLI統合テスト
ステップ7: 簡易P2P ネットワーク
- ノード間通信プロトコル設計
- gRPC サービス定義
- ブロック同期機能
- ネットワーク Discovery
- Unit Test: P2P通信・同期
ステップ8: 最終統合・デバッグ
- End-to-End テスト
- パフォーマンス確認
- ドキュメント作成
- git commit
各ステップでunit testを実装し、通過を確認してから次に進みます。これでよろしいでしょうか?
始めましょうか?
このスクラップは3ヶ月前にクローズされました