Ce projet à été créer dans le but d'une démonstration d'un cas d'usage de la blockchain, dans le cadre d'un atelier codeLabs du DevFest Nantes 2023.
Le projet à pour but de récompenser en NFT les gagnants des compétitions à l'issue d'un vote, pour chaque compétition une liste de jury sont selectionné, un jury est unique et est identifié par un SBT.
Le Festival du Cinéma du DevFest a une renommée internationale et récompense les meilleures œuvres cinématographiques de la communauté des développeurs. Les organisateurs du festival ont émis le souhait de moderniser le processus de récompense en utilisant la technologie des NFT. Votre mission, si vous l'acceptez, est de réaliser cette application en permettant aux organisateurs de sélectionner les films nominés, de définir les membres du jury, d'organiser des votes par le jury et de remettre les prix aux lauréats.
front (Front UI)
|
+-- public (static files)
|
+-- src (React sources)
blockchain (Smart Contract)
|
+-- contracts (Solidity source file of the smart contract)
|
+-- deploy (Deployment script)
|
+-- test (Unit tests)
Cloner le projet :
$ git clone https://github.com/BlockchainEtSociete/DevFest_CodeLabs.git
Aller sur l'engrenage puis server !
Configuration :
- Hostname : 127.0.0.1
- Port: 7545
- Network id : 5777
cliquez sur le bouton : SAVE AND RESTART
Importer un portefeuille existant :
- Copier le mnemonic de ganache et coller dans la 1ere case de la phrase de récupération.
Créer un réseau local :
- Cliquez sur le bouton "Ajouter un réseau"
- "Ajouter manuellement un réseau"
- Nom du réseau : Ganache Local
- Nouvelle URL de RPC : http://localhost:7545
- ID de chaîne : 1337
- Symbole de la devise : ETH
- IPFS Desktop une petite config sera peu être nécéssaire :
{
"API": {
"HTTPHeaders": {
"Access-Control-Allow-Credentials": [
"true"
],
"Access-Control-Allow-Methods": [
"PUT",
"POST"
],
"Access-Control-Allow-Origin": [
"*",
"https://webui.ipfs.io",
"http://webui.ipfs.io.ipns.localhost:8081"
]
}
},
"Addresses": {
"API": "/ip4/0.0.0.0/tcp/5001",
"Announce": [],
"AppendAnnounce": [],
"Gateway": "/ip4/0.0.0.0/tcp/8081",
"NoAnnounce": [],
"Swarm": [
"/ip4/0.0.0.0/tcp/4001",
"/ip6/::/tcp/4001",
"/ip4/0.0.0.0/udp/4001/quic",
"/ip4/0.0.0.0/udp/4001/quic-v1",
"/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
"/ip6/::/udp/4001/quic",
"/ip6/::/udp/4001/quic-v1",
"/ip6/::/udp/4001/quic-v1/webtransport"
]
}
}
Modifier le fichier .env.dist par .env avec vos configurations ou par défaut :
VITE_IPFS_API_SCHEME="http"
VITE_IPFS_API_HOST="localhost"
VITE_IPFS_API_PORT="5001"
VITE_IPFS_GATEWAY_SCHEME="http"
VITE_IPFS_GATEWAY_HOST="localhost"
VITE_IPFS_GATEWAY_PORT="8081"
$ cd front
$ npm install
$ npm run dev
Modifier le fichier .env.dist par .env avec vos configurations :
MNEMONIC="YOUR_MNEMONIC_GANACHE"
$ cd blockchain
$ npm install
$ npm run build
$ npm run deploy:ganache
Si vous rencontrez des problèmes à la compilation ou au déploiement, vous pouvez utiliser les commandes suivantes:
$ npm run clean
$ npm run deploy:ganache:reset
$ npm run test
Fin de la procédure d'installation !
API de récupération des wallets pour la fin du Codelab (si ont a le temps)
$ cd wallets-api
$ nvm use
$ npm install
$ node src/index.js
- API Rest qui se lance sur
http://<ip>:3000
(ip peut êtrelocalhost
)- avec un seul endpoint :
/wallets/:code
- par défaut il n'y a pas de wallets push sur Git, il faut donc :
- créer un fichier
wallets.json
à la racine de ce dossier - la structure js des wallet est dans
wallets_example.json
- créer un fichier
- avec un seul endpoint :