- Vous pouvez retrouver le contrat tel qu'il était demandé (et monolithique) dans le dossier
contracts/original/Voting.sol
- Pour aller plus loin, j'ai créer une dapp en essayant une modularité dans mes fichiers contrats et j'ai mis en place une "usine de contrat voting". C'est cette usine qu'hardhat déploie et la dapp s'occupe de déployer les contrats voting.
npx hardhat node
npx hardhat run scripts/deploy.js --network localhost
Le contrat déployer est FactoryVoting.sol
. Ce contrat permet de multiplier le déploiement du contrat Voting.sol
afin d'avoir plusieurs session de vote.
Une fois cela fait, vous pouvez lancer la dApp npm run start
Pour déployer un nouveau contrat voting : Il n'y a aucune condition.
Pour ajouter quelqu'un à la whitelist : Il faut être le owner.
Pour passer à l'étape ProposalsRegistrationStarted
: Il faut au moins 3 whitelistés pour que le vote soit pertinent et qu'une majorité puisse (potentiellement) se dégager.
Pour passer à l'étape ProposalsRegistrationEnded
: Il faut au moins 2 propositions pour qu'il y ait un choix et qu'une majorité puisse (potentiellement) se dégager.
Pour passer à l'étape VotingSessionEnded
: Il faut au moins 3 votes pour qu'il y ait un résultat qui soit un minimum pertinent.
- Optimiser le contrat pour réduire les frais de gaz à chaque déploiement
- On pourrais faire un arbre de merkle pour prouver la whitelist de chaque contrat voting
- On pourrais faire un deuxième tour de vote en cas d'égalité et ne garder que les propositions qui sont à égalité pour restreindre le choix de vote
- Les bugs du front (Essayez un refresh en cas de bug)