CryptoChain
CryptoChain är en fullständig implementation av en blockkedja för en egen kryptovaluta med transaktionshantering, validering och nätverkssynkronisering via WebSocket. Systemet inkluderar en transaktionspool, MongoDB-lagring och JWT-autentisering. Frontend är byggd i React/Vite.
Projektbeskrivning
Detta projekt är utvecklat som en slutlig inlämningsuppgift och implementerar en komplett blockkedja med:
- Transaktionshantering och validering
- Transaktionspool för väntande transaktioner
- Belöningstransaktioner vid mining
- Nätverkssynkronisering mellan noder via WebSocket
- MongoDB-lagring för blockkedja, block, transaktioner och användare
- JWT-autentisering för säker åtkomst
- Frontend-klient (React/Vite) för användarinteraktion
Funktioner
Backend
- Skapa och validera transaktioner
- Hantera väntande transaktioner i transaktionspool
- Skapa och validera block med proof-of-work
- Synkronisering mellan noder via WebSocket
- MongoDB-lagring (databas:
CryptoChain
eller enligt .env)
- JWT-baserad autentisering och rollhantering
Frontend
- Byggd i React/Vite
- Skapa nya transaktioner
- Lista transaktioner (transaktionspool)
- Lista block (blockkedjan)
- Mine:a block (lägg till transaktioner i kedjan)
- Logga in/registrera användare
Teknisk struktur
Backend
- Models: Block, Blockchain, Transaction, User
- Controllers: API-logik och validering
- Routes: API-endpoints
- Middleware: Autentisering, felhantering
- Network: WebSocket-baserad synkronisering
- Database: MongoDB-integration
Frontend
- Components: React-komponenter
- Services: API-integration
- State Management: Lokal state-hantering
- UI/UX: Responsiv design
Installation och körning
Förutsättningar
- Node.js (version 18 eller senare)
- npm (ingår i Node.js)
- MongoDB
Backend-installation
- Klona repot och navigera till projektmappen:
git clone https://github.com/Gl373/CryptoChain
cd CryptoChain
- Installera beroenden:
- Konfigurera miljövariabler:
cp backend/config/.env.example backend/config/.env
# Uppdatera .env
- Starta en nod:
Starta flera noder (exempel):
# Nod 1
PORT=3000 SOCKET_PORT=5001 npm start
# Nod 2
PORT=3001 SOCKET_PORT=5002 NODES=localhost:5001 npm start
# Nod 3
PORT=3002 SOCKET_PORT=5003 NODES=localhost:5001,localhost:5002 npm start
Frontend-installation
- Navigera till frontend-mappen:
- Installera beroenden:
- Starta utvecklingsservern:
API-dokumentation
Autentisering
POST /api/v1/auth/register
POST /api/v1/auth/login
Transaktioner
POST /api/v1/transactions
GET /api/v1/transactions
Block
GET /api/v1/blocks
POST /api/v1/blocks/mining
Viktigt om transaktionspool och mining
- Transaktionspoolen visar väntande transaktioner.
- När du minar ett block (POST /api/v1/blocks/mining) läggs alla väntande transaktioner in i blocket och poolen töms.
- Transaktionerna finns då i blockkedjan (GET /api/v1/blocks).
Säkerhet
- JWT-autentisering för alla skyddade endpoints
- Rollbaserad åtkomstkontroll
- Validering av transaktioner
Testning och TDD
- Tester för transaktionshantering och validering finns i
backend/src/tests/
- Kör tester med:
Felsökningstips
- Om du får 401 Unauthorized: Kontrollera att du skickar JWT-token i Authorization-headern.