Some checks are pending
Deploy to VPS / deploy (push) Waiting to run
- Update RPSArena.sol: move bet payment to commit() instead of createMatch() - Fix Hardhat tests to match new contract API (7/7 passing) - Deploy updated contract to local Hardhat node (0xe7f1725...) - Add blockchain service (server) listening to contract events - Create matches on-chain from server matchmaking handler - Frontend calls contract directly for commit/reveal via MetaMask - Add Prisma DB persistence for match results and player stats - Copy ABI to shared package for frontend/server consumption - Update deployment docs and architecture docs Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2 KiB
2 KiB
Architecture — The Arena RPS Royale
Vue d'ensemble
Le projet est un monorepo organisé en trois applications et un package partagé, orchestré par Docker Compose.
rps-royale/
├── apps/
│ ├── web/ # Next.js 15 + Phaser 3 (frontend jeu)
│ ├── server/ # Node.js + Socket.io + Express (backend temps réel)
│ └── contracts/ # Hardhat + Solidity (smart contract commit-reveal)
├── packages/
│ └── shared/ # Types et constantes TypeScript partagés
└── docker-compose.yml
Flux de données
- Le joueur ouvre
jeu.cosmolan.fr(Next.js + Phaser) - Il se connecte via Socket.io à
api.jeu.cosmolan.fr(Node.js) - Le matchmaking place deux joueurs dans une "room"
- Le serveur crée le match sur la blockchain (
createMatch) et retourne lematchIdon-chain - Chaque joueur appelle directement
commit(matchId, hash)sur le contratRPSArena.solen payant la mise - Le serveur écoute les événements
Committedon-chain et déclenche la phase Suspense - Chaque joueur appelle
reveal(matchId, choice, nonce)sur le contrat - Le smart contract vérifie les hashes, détermine le gagnant et distribue automatiquement le pot (moins 3% de frais plateforme)
Réseau Docker
Tous les services partagent le réseau npm_default (géré par Nginx Proxy Manager).
| Service | Port conteneur | Port hôte | Exposé via NPM |
|---|---|---|---|
| rps-web | 3000 | 127.0.0.1:3050 | jeu.cosmolan.fr |
| rps-server | 3001 | 127.0.0.1:3051 | api.jeu.cosmolan.fr |
| rps-db | 5432 | 127.0.0.1:3052 | Interne |
| rps-redis | 6379 | 127.0.0.1:3053 | Interne |
| hardhat-node | 8545 | 127.0.0.1:3054 | Interne |
Technologies clés
- Phaser 3 : moteur 2D pour les animations, particules et scènes de jeu
- Socket.io : communication temps réel multijoueur
- Hardhat : environnement de développement Ethereum avec tests automatiques
- Prisma ORM : accès typé à PostgreSQL
- Commit-Reveal : pattern blockchain anti-triche