AutoChain est une application décentralisée (DApp) de gestion de véhicules sur blockchain. Ce README explique comment configurer et certifier les constructeurs automobiles dans le système.
- Node.js v16 ou supérieur
- npm ou yarn
- Ganache ou un autre réseau Ethereum
- Contrat AutoChain déployé
- Clé privée de l'administrateur du contrat
- Connexion sécurisée via MetaMask
- Détection automatique du rôle utilisateur (Constructeur, Vendeur, Acheteur)
- Gestion des permissions basée sur les rôles
- Création et certification de nouveaux véhicules
- Enregistrement des données techniques sur la blockchain
- Gestion des véhicules certifiés
- Mise en vente de véhicules possédés
- Définition des prix en ETH
- Gestion du portefeuille de véhicules
- Navigation et recherche de véhicules disponibles
- Achat sécurisé via smart contracts
- Vérification de l'historique complet
- Historique transparent de tous les propriétaires
- Certification constructeur vérifiable
- Transactions immuables sur la blockchain
# Cloner le projet et installer les dépendances
cd autochain-dapp
npm install
# Installer dotenv pour les scripts
npm install dotenvCopiez le fichier d'exemple et configurez vos variables :
cp .env.example .envÉditez le fichier .env avec vos valeurs :
# ================================
# BLOCKCHAIN NETWORK CONFIGURATION
# ================================
NEXT_PUBLIC_NETWORK_NAME=Ganache Local
NEXT_PUBLIC_RPC_URL=http://127.0.0.1:7545
NEXT_PUBLIC_CHAIN_ID=1337
# ================================
# SMART CONTRACT CONFIGURATION
# ================================
NEXT_PUBLIC_CONTRACT_ADDRESS=0x8E30414c9E14FAAC56303BAE6a045Aa20Ad65b3A
# ================================
# ADMIN CONFIGURATION
# ================================
ADMIN_PRIVATE_KEY=0x882f783cfe5181d8174aed29d7803499b5200f3cd867f848c91e26f4c112d328
# ================================
# CONSTRUCTORS CONFIGURATION
# ================================
CONSTRUCTOR_ADDRESSES=0x2f609E0C31aD4f3eE42ebEF47cF347D198deE998,0x390953dfBD34bC86C6Fb9Acfd137606FfA0c4bAa
CONSTRUCTOR_NAMES=Tesla,BMW
CONSTRUCTOR_DESCRIPTIONS=Constructeur Tesla officiel,Constructeur BMW officiel
# Client-side (pour l'interface)
NEXT_PUBLIC_CONSTRUCTOR_ADDRESSES=0x2f609E0C31aD4f3eE42ebEF47cF347D198deE998,0x390953dfBD34bC86C6Fb9Acfd137606FfA0c4bAa
NEXT_PUBLIC_CONSTRUCTOR_NAMES=Tesla,BMW
NEXT_PUBLIC_CONSTRUCTOR_DESCRIPTIONS=Constructeur Tesla officiel,Constructeur BMW officiel| Variable | Description | Exemple |
|---|---|---|
NEXT_PUBLIC_NETWORK_NAME |
Nom du réseau blockchain | Ganache Local |
NEXT_PUBLIC_RPC_URL |
URL du noeud RPC | http://127.0.0.1:7545 |
NEXT_PUBLIC_CHAIN_ID |
ID de la chaîne blockchain | 1337 |
NEXT_PUBLIC_CONTRACT_ADDRESS |
Adresse du contrat AutoChain | 0x8E30... |
ADMIN_PRIVATE_KEY |
Clé privée de l'admin du contrat | 0x882f... |
CONSTRUCTOR_ADDRESSES |
Adresses des constructeurs (serveur) | 0x2f60...,0x3909... |
CONSTRUCTOR_NAMES |
Noms des constructeurs | Tesla,BMW |
CONSTRUCTOR_DESCRIPTIONS |
Descriptions des constructeurs | Constructeur Tesla officiel,Constructeur BMW officiel |
NEXT_PUBLIC_CONSTRUCTOR_* |
Versions client des variables constructeurs | Mêmes valeurs que les versions serveur |
- Frontend: Next.js 14, React 19, TypeScript
- Styling: Tailwind CSS v4, Radix UI
- Blockchain: Ethereum, Ethers.js v6
- Wallet: MetaMask Integration
- UI/UX: Shadcn/ui, Lucide Icons
Interface moderne avec thème sombre professionnel inspiré des plateformes blockchain :
- Palette de couleurs : Bleu/Violet primaire, Vert accent
- Animations fluides et effets de survol
- Design responsive et accessible
- Grille blockchain animée en arrière-plan
app/
├── page.tsx # Page d'accueil avec connexion MetaMask
├── dashboard/ # Tableau de bord principal
├── create-car/ # Création de véhicule (Constructeurs)
├── sell-car/ # Mise en vente (Propriétaires)
├── buy-car/ # Achat de véhicules (Acheteurs)
├── car/[id]/ # Détails d'un véhicule
├── history/ # Historique global des transactions
└── layout.tsx # Layout principal avec providers
components/
├── navigation.tsx # Navigation responsive avec rôles
├── car-card.tsx # Carte de véhicule avec actions
├── stats-overview.tsx # Statistiques du tableau de bord
├── blockchain-status.tsx # Statut de connexion blockchain
├── error-boundary.tsx # Gestion d'erreurs
└── ui/ # Composants UI réutilisables
lib/
├── web3.ts # Utilitaires Web3 et types
└── utils.ts # Utilitaires généraux
hooks/
└── use-web3.ts # Hook personnalisé Web3
-
Installation des dépendances
npm install
-
Configuration MetaMask
- Installer l'extension MetaMask
- Se connecter à un réseau Ethereum (Mainnet, Sepolia, etc.)
- Avoir des ETH pour les transactions
-
Déploiement du Smart Contract
- Déployer le contrat
AutoChain.solsur le réseau choisi
- Déployer le contrat
-
Lancement de l'application
npm run dev
-
Accès à l'application
- Ouvrir http://localhost:3000
- Connecter MetaMask
- Commencer à utiliser AutoChain !
Utilisez le script de configuration automatique :
node scripts/setup-constructors.jsCe script va :
- Valider la configuration depuis
.env - Se connecter au réseau blockchain
- Initialiser le contrat AutoChain
- Certifier tous les constructeurs listés
- Afficher un résumé des certifications
AutoChain Constructor Setup
==============================
Validation de la configuration...
Configuration valide
Réseau: Ganache Local (http://127.0.0.1:7545)
Contrat: 0x8E30414c9E14FAAC56303BAE6a045Aa20Ad65b3A
Constructeurs à certifier: 2
Connexion au réseau...
Connecté au réseau Chain ID: 1337
Initialisation du contrat...
Admin du contrat: 0x742d35Cc6634C0532925a3b8D4C9db96590b5
Adresse du wallet: 0x742d35Cc6634C0532925a3b8D4C9db96590b5
Wallet admin vérifié
Certification des constructeurs...
Traitement: Tesla (0x2f609e0c31ad4f3ee42ebef47cf347d198dee998)
Certification de Tesla...
Transaction envoyée: 0xabc123...
Tesla certifié avec succès! Block: 15432
Vérification: Tesla est maintenant certifié
Traitement: BMW (0x390953dfbd34bc86c6fb9acfd137606ffa0c4baa)
Certification de BMW...
Transaction envoyée: 0xdef456...
BMW certifié avec succès! Block: 15433
Vérification: BMW est maintenant certifié
RÉSUMÉ FINAL
================
Tesla 0x2f609e0c31ad4f3ee42ebef47cf347d198dee998 CERTIFIÉ
BMW 0x390953dfbd34bc86c6fb9acfd137606ffa0c4baa CERTIFIÉ
Script terminé!
Ajoutez les nouvelles adresses, noms et descriptions (séparés par des virgules) :
# Exemple avec 3 constructeurs
CONSTRUCTOR_ADDRESSES=0x2f609E0C31aD4f3eE42ebEF47cF347D198deE998,0x390953dfBD34bC86C6Fb9Acfd137606FfA0c4bAa,0x1234567890123456789012345678901234567890
CONSTRUCTOR_NAMES=Tesla,BMW,Mercedes
CONSTRUCTOR_DESCRIPTIONS=Constructeur Tesla officiel,Constructeur BMW officiel,Constructeur Mercedes officiel
# N'oubliez pas les versions NEXT_PUBLIC_ pour le frontend
NEXT_PUBLIC_CONSTRUCTOR_ADDRESSES=0x2f609E0C31aD4f3eE42ebEF47cF347D198deE998,0x390953dfBD34bC86C6Fb9Acfd137606FfA0c4bAa,0x1234567890123456789012345678901234567890
NEXT_PUBLIC_CONSTRUCTOR_NAMES=Tesla,BMW,Mercedes
NEXT_PUBLIC_CONSTRUCTOR_DESCRIPTIONS=Constructeur Tesla officiel,Constructeur BMW officiel,Constructeur Mercedes officielnode scripts/setup-constructors.jsnpm run devL'interface utilise des couleurs automatiques pour chaque constructeur. L'ordre des couleurs :
- Rouge (Tesla par défaut)
- Bleu (BMW par défaut)
- Vert (Mercedes)
- Violet
- Orange
- Cyan
Les logos doivent être placés dans /public/ avec le format : {nom-constructeur}-logo.png
Exemple :
tesla-logo.pngbmw-logo.pngmercedes-logo.png
Ce wallet n'est pas l'admin du contrat
Solution : Vérifiez que ADMIN_PRIVATE_KEY correspond bien à l'admin du contrat.
Impossible de se connecter au réseau
Solutions :
- Vérifiez que Ganache est démarré
- Vérifiez l'URL RPC dans
NEXT_PUBLIC_RPC_URL - Vérifiez le Chain ID dans
NEXT_PUBLIC_CHAIN_ID
Erreurs de configuration:
- CONSTRUCTOR_NAMES doit avoir le même nombre d'éléments que CONSTRUCTOR_ADDRESSES
Solution : Assurez-vous que tous les tableaux (addresses, names, descriptions) ont le même nombre d'éléments.
Solutions :
- Vérifiez les variables
NEXT_PUBLIC_CONSTRUCTOR_* - Redémarrez l'application après modification du
.env - Vérifiez que les constructeurs sont bien certifiés avec le script
autochain-dapp/
├── .env # Configuration principale
├── .env.example # Modèle de configuration
├── scripts/
│ └── setup-constructors.js # Script de certification
├── lib/
│ ├── web3.ts # Utilitaires blockchain
│ └── constructors.ts # Configuration constructeurs
└── public/
├── tesla-logo.png # Logos des constructeurs
└── bmw-logo.png
Une fois la configuration terminée :
# Démarrer l'application
npm run dev
# Ouvrir dans le navigateur
# http://localhost:3000- Ne jamais commiter le fichier
.env(il contient des clés privées) - Toujours utiliser
.env.examplecomme modèle - Garder les clés privées sécurisées
- Redémarrer l'app après modification du
.env - Les variables
NEXT_PUBLIC_*sont visibles côté client
cp .env.example .env- Modifier
.envavec vos valeurs node scripts/setup-constructors.jsnpm run dev- Ouvrir http://localhost:3000
- Intégration IPFS pour les images de véhicules
- Support multi-chaînes (Polygon, BSC)
- Système de réputation des vendeurs
- API pour intégrations tierces
- Application mobile React Native
Les contributions sont les bienvenues ! Veuillez :
- Fork le projet
- Créer une branche feature
- Commit vos changements
- Push vers la branche
- Ouvrir une Pull Request
Ce projet est sous licence MIT.
Pour toute question ou problème :
- Ouvrir une issue sur GitHub
- Consulter la documentation technique
- Nous contacter par email : [email protected], [email protected], ou [email protected]
