Skip to content

unineko5555/Raffle_Dapp

Repository files navigation

🎲 Raffle DApp - Cross-Chain Lottery System

Raffle DApp

透明性と公平性を保証するブロックチェーンベースの抽選システム

Deployed on Vercel Ethereum Base Arbitrum

📱 ライブデモ

  • フロントエンド: https://raffledapp-six.vercel.app/
  • 対応チェーン: Ethereum Sepolia, Base Sepolia, Arbitrum Sepolia
  • テスト用 USDC: 各テストネットで無料取得可能

✨ 主要機能

🔥 コア機能

  • 完全分散型抽選: スマートコントラクトによる透明な抽選プロセス
  • VRF 証明可能ランダム性: Chainlink VRF による改ざん不可能な乱数生成
  • クロスチェーン対応: 複数ブロックチェーン間での統一された体験
  • ガス代無料参加: Account Abstraction によるユーザビリティ向上

💰 経済システム

  • ジャックポットシステム: 蓄積型大賞システム
  • 自動賞金分配: スマートコントラクトによる即座の支払い
  • USDC 決済: 安定した価値での参加とペイアウト
  • 手数料透明性: 全ての手数料がオンチェーンで確認可能

🚀 技術的特徴

  • UUPS Proxy Pattern: アップグレード可能なコントラクト設計
  • リアルタイム同期: イベントベースの即時状態更新
  • モバイル最適化: レスポンシブデザインとタッチ操作対応
  • ソーシャルログイン: Google, X アカウントでの簡単参加

🏗️ システムアーキテクチャ

graph TB
    subgraph "Frontend Layer"
        UI[Next.js UI]
        WC[Wallet Connect]
        AA[Account Abstraction]
    end

    subgraph "Blockchain Layer"
        ETH[Ethereum Sepolia]
        BASE[Base Sepolia]
        ARB[Arbitrum Sepolia]
    end

    subgraph "Smart Contracts"
        RC[Raffle Contract]
        VRF[Chainlink VRF]
        PROXY[UUPS Proxy]
    end

    subgraph "Data Layer"
        IDX[Event Indexer]
        API[API Routes]
        DB[(PostgreSQL)]
    end

    UI --> WC
    UI --> AA
    WC --> ETH
    WC --> BASE
    WC --> ARB
    ETH --> RC
    BASE --> RC
    ARB --> RC
    RC --> VRF
    RC --> PROXY
    RC --> IDX
    IDX --> DB
    DB --> API
    API --> UI
Loading

🚀 クイックスタート

前提条件

🐳 Docker 使用の場合(推奨)

  • Docker & Docker Compose
  • Git

📦 ローカル開発の場合

  • Node.js 22.x 以上
  • Foundry
  • MetaMask または対応ウォレット

ローカル開発環境

🐳 Docker 使用(推奨)

# リポジトリのクローン
git clone https://github.com/your-username/raffle-dapp.git
cd raffle-dapp

# 全サービス起動(フロントエンド + バックエンド)
docker-compose up

# バックグラウンド起動
docker-compose up -d

# インデクサー含む起動
docker-compose --profile indexer up

# 特定のサービスのみ起動
docker-compose up frontend
docker-compose up backend

# ログ確認
docker-compose logs frontend
docker-compose logs backend

# コンテナに入る
docker-compose exec frontend sh
docker-compose exec backend bash

# サービス停止
docker-compose down

アクセス:

📦 ローカルインストール

# リポジトリのクローン
git clone https://github.com/your-username/raffle-dapp.git
cd raffle-dapp

# 全依存関係のインストール
npm install

# フロントエンド開発サーバー起動
cd frontend
npm run dev
# http://localhost:3000 でアクセス

# バックエンド(別ターミナル)
cd backend
make install && make build
forge test

環境変数設定

# frontend/.env.local
NEXT_PUBLIC_ALCHEMY_API_KEY=your_alchemy_api_key
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id

# backend/.env
PRIVATE_KEY=your_private_key
SEPOLIA_RPC_URL=your_sepolia_rpc_url
BASE_SEPOLIA_RPC_URL=your_base_sepolia_rpc_url
ARBITRUM_SEPOLIA_RPC_URL=your_arbitrum_sepolia_rpc_url

📁 プロジェクト構成

Raffle_Dapp/
├── 📂 backend/              # Foundry + Solidity スマートコントラクト
│   ├── src/                 # コントラクトソースコード
│   ├── test/                # テストファイル
│   ├── script/              # デプロイメントスクリプト
│   └── README.md            # バックエンド詳細ドキュメント
├── 📂 frontend/             # Next.js + TypeScript フロントエンド
│   ├── app/                 # App Router構成
│   ├── components/          # Reactコンポーネント
│   ├── hooks/               # カスタムフック
│   └── README.md            # フロントエンド詳細ドキュメント
├── 📂 raffleIndexer/        # Rindexer イベントインデックス
│   ├── rindexer.yaml        # インデックス設定
│   ├── docker-compose.yml   # PostgreSQL設定
│   └── README.md            # インデックス詳細ドキュメント
└── 📂 scripts/              # 共通スクリプト

詳細な技術仕様と開発手順については、各ディレクトリの README.md を参照してください。

🛠️ 技術スタック

フロントエンド

  • Framework: Next.js 15, TypeScript
  • Styling: Tailwind CSS, shadcn/ui
  • Web3: wagmi, viem, Account Kit
  • Deployment: Vercel

バックエンド

  • Smart Contracts: Solidity, Foundry
  • VRF: Chainlink VRF v2.5
  • Proxy: OpenZeppelin UUPS
  • Testing: Forge

インフラ

  • RPC: Alchemy
  • Indexing: Rindexer + PostgreSQL
  • CI/CD: GitHub Actions

🎯 ロードマップ

Phase 1 ✅ 完了

  • 基本的なラッフルシステム
  • VRF 統合
  • クロスチェーン対応
  • Account Abstraction

Phase 2 🚧 進行中

  • mainnet 展開
  • NFT ベース参加券
  • DAO 投票システム

Phase 3 📋 計画中

  • L2 最適化
  • モバイルアプリ
  • 追加チェーン対応

🤝 コントリビューション

  1. このリポジトリを Fork
  2. Feature branch を作成 (git checkout -b feature/amazing-feature)
  3. 変更を Commit (git commit -m 'Add amazing feature')
  4. Branch に push (git push origin feature/amazing-feature)
  5. Pull Request を作成

📄 ライセンス

MIT License - 詳細はLICENSEファイルを参照

🎓 学習リソース

このプロジェクトはCyfrin Updraftの Web3 開発コースの一環として開発されました。

関連チュートリアル


🎲 公平で透明な抽選システムを、ブロックチェーンの力で。

Live DemoDocumentationReport Bug

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •