Académique Documents
Professionnel Documents
Culture Documents
org/en/download/
2. Pour vérifier si Nodejs est installé, exécutez cette commande sur votre terminal :
node -v
npm -v
3. Créer un dossier qui va contenir votre application ainsi que le fichier log
4. Installer les dépendances en utilisant npm :
npm i ethereumjs-tx
npm i fs
npm i log-timestamp
npm i react
npm i web3-eth
npm i web3
npm i eth-provider
npm i ipfs-http-client
5. Télécharger go-ipfs, l’extraire vers un dossier sur C:\Program Files\ et ajouter le chemin de ce
dossier aux variables d’environnement PATH
6. Installer L’extension Metamask sur Chrome : https://metamask.io/
7. Sélectionner le réseau de test Rinkebey et créer un nouveau compte sinon se connecter au
compte existant
8. Déployez le code Solidity suivant à l'aide de Remix sur le testnet Rinkeby :
https://remix.ethereum.org/
Compiler Contact.sol :
Déployer Contract.sol et confirmer à l’aide MetaMask pour associer un compte personnalisé
au contrat sur un environnement Injected Web3
Enregistrer l’adresse et l’Interface binaire d'application (ABI)
{
"inputs": [],
"name": "getHash",
"outputs": [
{
"internalType": "string",
"name": "x",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "x",
"type": "string"
}
],
"name": "sendHash",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
9. Pour chaque utilisateur créer un Wallet Ethereum (adresse publique, adresse privée) sur un
réseau rinkebey testnet : https://mycrypto.com/
10. Pour demander des fonds, coller votre adresse publique Ethereum et sélectionner 0.1 test
ETH sur le site : https://faucets.chain.link/rinkeby
11. Copier le fichier App.js dans un dossier contenant le fichier log.txt sur la machine ou serveur
dédié :
try {
const uploadResult = await ipfs.add(Buffer.from(buffer));
} catch(e) {
console.log(e)
console.log(e.message)
return
}
};
getData();
fs.watchFile(filepath, (curr, prev) => {
console.log(`${filepath} file Changed`);
getData();
});
private_key : L’adresse privée de Wallet Ethereum de l’utilisateur rognée de 0X
filepath : Le chemin de fichier log
addr : Adresse publique de contrat
account : Wallet Ethereum de l’utilisateur
ethAddress : Adresse publique de contrat
buffer : Le fichier log converti en tampon
13. Pour vérifier que votre noeud ipfs au réseau public, consulter ce lien :
http://127.0.0.1:5001/webui
d931c9f18dc6f111e4a88fe758be4d3ce1c1cd300a2ab3f30032f126dd35e374 : L’adresse
privée de Wallet Ethereum de l’utilisateur rognée de 0X
Dans notre exemple : 0x15679D106919bd7bb6A761d9d2cd6DDc2c5F2D50 est l’adresse
publique de l’utilisateur
15.
Processus métier de l’exécution de l’application :
L’application est toujours en écoute de toute modification sur le fichier log
Une fois l’application est lancée :
o Le fichier est converti en tampon
o Le fichier mis en mémoire tampon est envoyé vers IPFS
o IPFS renvoie un hachage
o Le hachage d’IPFS est envoyé pour le stockage sur Ethereum de l’adresse de l’utilisateur vers
l’adresse de contrat
A chaque fois que le fichier est modifié par le système ou bien par un utilisateur de la chaine :
o Le fichier est converti en tampon
o Le fichier mis en mémoire tampon est envoyé vers IPFS
o IPFS renvoie un hachage
o Le hachage d’IPFS est envoyé pour le stockage sur Ethereum de l’adresse de l’utilisateur vers
l’adresse de contrat
o Le contrat Ethereum renvoie un numéro de hachage de la transaction