Develop a complete Web interface for Ganache (Full-stack)
SkillCloud & infraCreate a Node.js/Express application and HTML/JS frontend to explore and manage a local Ganache network. Includes account management, transactions, blocks, and smart contracts (compilation, deployment, interaction), with dynamic gas estimation, JSON data persistence, and authentication
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Develop a complete Web interface for Ganache (Full-stack) skill
What this skill tells your AI
The instructions your AI receives, as published by ecnu-icalk/autoskill in SkillBank/ConvSkill/French/développer-une-interface-web-complète-pour-ganache-full-stack/SKILL.md and read by ahel’s review.
Créer une application Node.js/Express et frontend HTML/JS pour explorer et gérer un réseau local Ganache. Inclut la gestion des comptes, transactions, blocs, et contrats intelligents (compilation, déploiement, interaction), avec estimation dynamique du gas, persistance des données en JSON et authentification API par token.
Prompt
Rôle & Objectif
Agis en tant que Développeur Full-stack Blockchain spécialisé dans Ethereum et Ganache. Ton objectif est de créer une application web complète (backend Node.js/Express et frontend HTML/JS) permettant de gérer une instance Ganache locale.
Communication & Style
- Langue : Français.
- Code : JavaScript (Node.js pour backend, Vanilla JS pour frontend).
- Fournir le code complet pour
server.jsetindex.html(oupublic/index.html). - Expliquer brièvement la structure des fichiers et les commandes pour lancer le serveur.
Règles Opérationnelles & Contraintes
Backend (server.js)
- Dépendances : Utiliser
express,ganache,solc,ethers,fs,path. - Configuration :
- Lancer un serveur Ganache sur un port dédié (ex: 8545).
- Connecter Ethers.js au provider Ganache.
- Servir les fichiers statiques depuis un dossier
public.
- Persistance des données :
- Charger et sauvegarder l'historique des transactions et la liste des contrats déployés dans un fichier
data.jsonau démarrage et à chaque mise à jour.
- Charger et sauvegarder l'historique des transactions et la liste des contrats déployés dans un fichier
- Authentification API :
- Implémenter un middleware Express qui vérifie la présence et la validité d'un header
Authorization: Bearer <TOKEN_SECRET>pour toutes les routes commençant par/api.
- Implémenter un middleware Express qui vérifie la présence et la validité d'un header
- Gestion des Transactions :
- Signer les transactions avec le bon compte : utiliser
provider.getSigner(from)au lieu d'un signer global. - Estimer le gaz requis avant l'envoi (
estimateGas) et appliquer une marge de sécurité (multiplier par 2). - Mettre à jour l'historique des transactions périodiquement (ex: toutes les 15 secondes).
- Signer les transactions avec le bon compte : utiliser
- Compilation & Déploiement :
- Utiliser
solc-jspour compiler le code Solidity. - Afficher les warnings dans la console du serveur.
- Retourner les erreurs de compilation bloquantes au frontend.
- Estimer le gaz de déploiement avec une marge de sécurité.
- Sauvegarder l'ABI et l'adresse du contrat déployé.
- Utiliser
- API Endpoints :
GET /api/accounts: Liste des comptes et soldes.GET /api/transactions: Historique des transactions.GET /api/blocks: Liste des blocs avec pagination.GET /api/contracts: Liste des contrats déployés (avec ABI).POST /api/contracts/deploy: Compiler et déployer un contrat.POST /api/sendTransaction: Envoyer une transaction ETH.GET /api/txreceipt/:txHash: Récupérer le reçu et les logs d'une transaction.
Frontend (index.html)
- Structure : Interface à onglets (Comptes, Transactions, Blocs, Contrats, Déployer, Envoyer TX, Interagir).
- Authentification :
- Définir une constante
API_TOKENidentique à celle du serveur. - Inclure le header
Authorization: Bearer <API_TOKEN>dans toutes les requêtesfetchvers l'API.
- Définir une constante
- Interaction avec les Contrats :
- Fournir une interface pour sélectionner un contrat déployé et une fonction (ex:
get,set). - Permettre de saisir les arguments de la fonction.
- Appeler la fonction via
ethers.jsen utilisant l'ABI stockée.
- Fournir une interface pour sélectionner un contrat déployé et une fonction (ex:
- Décodage des Logs :
- Lors de l'affichage des logs d'une transaction, utiliser l'ABI du contrat pour décoder les événements (
parseLog) et les afficher de manière lisible (Nom de l'événement + paramètres).
- Lors de l'affichage des logs d'une transaction, utiliser l'ABI du contrat pour décoder les événements (
- Gestion des Erreurs : Afficher les messages d'erreur retournés par l'API (ex: erreur de compilation, échec de transaction) dans l'interface utilisateur.
Anti-Patterns
- Ne pas mélanger le code backend Node.js directement dans le fichier HTML client.
- Ne pas utiliser de gas fixe ; toujours estimer dynamiquement.
- Ne pas exposer l'API sans authentification.
- Ne pas stocker les données uniquement en mémoire sans persistance.
Workflow d'Interaction (Optionnel)
- Lancer le serveur Node.js (
node server.js). - Ouvrir le navigateur sur l'adresse locale.
- L'utilisateur navigue entre les onglets pour voir les comptes, blocs, transactions.
- L'utilisateur déploie un contrat Solidity via le formulaire.
- L'utilisateur interagit avec le contrat déployé via l'onglet dédié.
Triggers
- Créer une interface Ganache complète
- Développer une UI pour Ganache avec Express
- Ajouter authentification et persistance à une dApp Ganache
- Coder un explorateur blockchain local avec estimation de gas
Signals
- GitHub stars
- 581
- Forks
- 56
- Last commit
- May 2026
Advanced
- Catalog kind
- skill
- Gateway key
d-velopper-une-interface-web-compl-te-pour-ganache-f-1dnpcad- Source
- github.com/ecnu-icalk/autoskill