Commit eba46770 authored by Quentin's avatar Quentin

Add project readme

parent 9113aeeb
### Démocratie-Participative
## Projet : créer une DApp de vote
### **Étape 1 : création du smart contract - 5pts**
> ✔️ Le vote n'est pas confidentiel pour les utilisateurs ajoutés à la liste blanche. \
> ✔️ Chaque votant peut consulter les votes des autres. \
> ✔️ Le vainqueur est déterminé à la majorité simple. \
> ✔️ La proposition qui reçoit le plus de votes l'emporte. \
> ✔️ N'oubliez pas que votre code doit inspirer confiance et veiller à respecter les règles établies \
👉 Le processus de vote :
Voici comment se déroule l'ensemble du processus de vote :
- L'administrateur du vote inscrit une liste blanche d'électeurs identifiés par leur adresse Ethereum.
- L'administrateur du vote démarre la session d'enregistrement des propositions.
Les électeurs inscrits peuvent soumettre leurs propositions pendant que la session d'enregistrement est active.
- L'administrateur du vote clôture la session d'enregistrement des propositions.
- L'administrateur du vote lance la session de vote.
- Les électeurs inscrits votent pour leur proposition favorite.
- L'administrateur du vote clôture la session de vote.
- L'administrateur du vote comptabilise les votes.
- Tout le monde peut vérifier les derniers détails de la proposition gagnante.
👉 Les recommandations et exigences :
- Votre contrat intelligent doit s'appeler "Voting".
- Votre contrat intelligent doit utiliser la dernière version du compilateur.
- L'administrateur est celui qui déploie le contrat intelligent.
- Votre contrat intelligent doit définir les structures de données suivantes :
struct Voter {
bool isRegistered;
bool hasVoted;
uint votedProposalId;
}
struct Proposal {
string description;
uint voteCount;
}
- Votre contrat intelligent doit définir une énumération qui gère les différents états d'un vote
enum WorkflowStatus {
RegisteringVoters,
ProposalsRegistrationStarted,
ProposalsRegistrationEnded,
VotingSessionStarted,
VotingSessionEnded,
VotesTallied
}
- Votre contrat intelligent doit définir un uint winningProposalId qui représente l'ID du gagnant ou une fonction getWinner qui retourne le gagnant.
- Votre contrat intelligent doit importer le contrat intelligent de la bibliothèque "Ownable" d'OpenZeppelin.
- Votre contrat intelligent doit définir les événements suivants :
event VoterRegistered(address voterAddress);
event WorkflowStatusChange(WorkflowStatus previousStatus, WorkflowStatus newStatus);
event ProposalRegistered(uint proposalId);
event Voted (address voter, uint proposalId);
### **Étape 2 : DWYW - 4pts**
Imaginez et implémentez 2 nouvelles fonctionnalités à votre smart contract
### **Commentaires Natspec - 1pt**
https://docs.soliditylang.org/en/latest/natspec-format.html
### **Étape 3 : Tests automatisés - 4pts**
Implémentez les tests automatisés de votre contrat intelligent
### **Étape 4 : création du front de la Dapp - 6pts**
## Spécification
### **Votre Dapp doit permettre :**
- l’enregistrement d’une liste blanche d'électeurs.
- à l'administrateur de commencer la session d'enregistrement de la proposition.
- aux électeurs inscrits d’enregistrer leurs propositions.
- à l'administrateur de mettre fin à la session d'enregistrement des propositions.
- à l'administrateur de commencer la session de vote.
- aux électeurs inscrits de voter pour leurs propositions préférées.
- à l'administrateur de mettre fin à la session de vote.
- à l'administrateur de comptabiliser les votes.
- à tout le monde de consulter le résultat.
### **A rendre**
Lien vers votre répertoire Github, comprenant dans le `readme.md`:
- Explication rapide de ce qui a été fait et de l’organisation du groupe
- Lien vers une vidéo démo des fonctionnalités de votre Front
- Le lien vers un déploiement public de votre dapp (Heroku / GhPages, AWS, Vercel, ...)
**Data Limite**: Dimanche 23 à 23h59
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment