- フロントエンド: 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
- Docker & Docker Compose
- Git
- Node.js 22.x 以上
- Foundry
- MetaMask または対応ウォレット
# リポジトリのクローン
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アクセス:
- フロントエンド: http://localhost:3000
- Anvil(ローカルチェーン): http://localhost:8545
# リポジトリのクローン
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_urlRaffle_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
- 基本的なラッフルシステム
- VRF 統合
- クロスチェーン対応
- Account Abstraction
- mainnet 展開
- NFT ベース参加券
- DAO 投票システム
- L2 最適化
- モバイルアプリ
- 追加チェーン対応
- このリポジトリを Fork
- Feature branch を作成 (
git checkout -b feature/amazing-feature) - 変更を Commit (
git commit -m 'Add amazing feature') - Branch に push (
git push origin feature/amazing-feature) - Pull Request を作成
MIT License - 詳細はLICENSEファイルを参照
このプロジェクトはCyfrin Updraftの Web3 開発コースの一環として開発されました。
🎲 公平で透明な抽選システムを、ブロックチェーンの力で。