Categorygithub.com/watariRyo/cryptochain-go
module
0.0.0-20250102142719-b23928c16d1d
Repository: https://github.com/watariryo/cryptochain-go.git
Documentation: pkg.go.dev

# README

Go によるブロックチェーン基盤作成

報酬やジェネシスブロックは適当
いったんバックエンド完成

  • Done
    • 簡易な Block, Chain, Wallet, Transaction の実装
    • Transaction Pool, Mining
    • handler
    • Mine Transactions
    • P2P 実現のための PubSub
    • コンテナ仮想化
  • TODO
    • Frontend by React
    • Walletsパッケージの歪な依存改善または整理

スタック

名前Version概要
Go1.23開発言語
go-chiv5.1middleware
zerolog1.33Logger
mock0.5.0Mock
viper1.19config 管理
Redis-P2P、PubSub に使用
Docker-コンテナ仮想化
air-HOT リロード

ディレクトリ

cmd

  • エントリ

configs

  • 環境変数の設定、他 Config

internal/crypto

  • hash関連処理

internal/ec

  • 楕円曲線暗号の実装
    • TODO:pkg切り出したい

internal/logger

  • 共通 logger

internal/time

  • タイムスタンプを扱う interface。
  • テスト用の Mock と通常運用とで分けるため

redis

  • Redis の設定ファイル等

web/domain/model

  • メソッド持たない構造体定義

web/domain/repository

  • infra 層の interface

web/infra/blcok

  • ブロックおよびチェーンの作成、追加、検証の実装を格納
    • block
      ブロックの定義、作成、検証、マイニング調整の実施
    • block_chain
      チェーンの管理、検証、チェーンへのブロック追加
    • genesis
      ジェネシスブロックの作成

web/infra/redis

  • PubSub 実装

web/infra/wallets

  • WalletとTransactionの実装
    • wallet
      wallet関連処理。transactionの作成トリガー
    • transaction
      transaction関連
    • transaction_pool
      transactionを保持・操作する。map使用

web/handler

  • API 受け口, json の marshal/unmarshal

web/server

  • RESTAPI の設定

web/usecase

  • ロジック部。ブロック等には直接触れない。メソッド呼び出し、Publish

Dependencies

server -> handler -> usecase -> repository -> infra

WalletとTransactionが密結合でimport cycle errorが発生する
それらをラップする構造体を作成し強引に依存関係を保っている
→ API実行でサンプルだから簡便なレイヤードにしたが、失敗したかもしれない
infra層間ではblockが一番下になっている

# Packages

No description provided by the author
No description provided by the author
No description provided by the author