Un contrat intelligent de portefeuille multi-signatures sécurisé et flexible développé avec Solidity et Foundry.
- 🔐 Minimum 3 signataires requis
- ✅ 2 validations obligatoires pour chaque transaction
- 📝 Soumission de transactions par les signataires
- 👍 Validation et révocation des transactions
- 👥 Gestion dynamique des signataires (ajout/retrait)
- 🧪 Tests complets avec couverture 100%
- 📚 Documentation Natspec complète
- Solidity - v0.8.19
- Foundry - Framework de test et déploiement
- Natspec - Documentation du code
- Cloner le repo
git clone https://github.com/0xNaxzerrr/MultiSigWallet
cd MultiSigWallet
- Installer les dépendances
forge install
- Compiler les contrats
forge build
Pour exécuter la suite de tests complète :
forge test
Pour voir la couverture de code :
forge coverage
- Créer un fichier
.env
avec votre clé privée :
echo "PRIVATE_KEY=votre_clé_privée" > .env
- Déployer sur le réseau de votre choix :
forge script script/DeployMultiSigWallet.s.sol --rpc-url <votre_rpc_url> --broadcast
Le contrat comporte plusieurs composants clés :
-
Transaction : Structure contenant les détails d'une transaction
to
: Adresse de destinationvalue
: Montant d'ETHdata
: Données de la transactionexecuted
: État d'exécutionnumConfirmations
: Nombre de confirmations
-
Signataires : Gestion des propriétaires du wallet
- Minimum 3 signataires
- 2 confirmations requises pour l'exécution
Permet à un signataire de soumettre une nouvelle transaction.
Permet à un signataire de confirmer une transaction en attente.
Permet à un signataire de révoquer sa confirmation.
Ajoute un nouveau signataire au wallet.
Retire un signataire existant (tout en maintenant le minimum requis).
- Vérifications multiples de sécurité
- Modifieurs de contrôle d'accès
- Protection contre la réentrance
- Validation des adresses nulles
Ce projet est sous licence MIT. Voir le fichier LICENSE
pour plus de détails.
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commit vos changements
- Push sur votre fork
- Ouvrir une Pull Request