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
3 weeks ago
by
Quentin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add project readme
parent
9113aeeb
Changes
1
Show 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
This diff is collapsed.
Click to expand it.
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