Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CI
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Guillaume DEWISME
CI
Commits
eba46770
Commit
eba46770
authored
Mar 19, 2025
by
Quentin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add project readme
parent
9113aeeb
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
97 additions
and
0 deletions
+97
-0
README.md
README.md
+97
-0
No files found.
README.md
0 → 100644
View file @
eba46770
### 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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment