Closed4

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

riddle_tecriddle_tec

昨日
https://zenn.dev/gin_nazo/scraps/32b1a7fceffc2d


https://blog.framinal.life/entry/2025/04/14/154104

100日チャレンジに感化されたので、アレンジして自分でもやってみます。

やりたいこと

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

できたもの

https://github.com/lirlia/100day_challenge_backend/tree/main/day66_bitcoin_blockchain

riddle_tecriddle_tec

完璧です!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ヶ月前にクローズされました