Smart contract d’une clause pénale

  • si la température est au dessus de 2°C, la condition est remplie (= la clause pénale est activée), le restaurateur récupère l’ether qu’il a envoyé au smart contract et celui du grossiste.
  • si la température est en dessous de 2°C, la clause pénale n’est pas activée, chacun récupère les ethers qu’ils ont mis en jeu.
contract clausePenale {
address public restaurateur;
address public grossiste;
// Ci- dessus les adresses identifiant les deux parties au contratbool public restaurateurPosted = false;
bool public grossistePosted = false;
// Ci- dessus les "booléens" renseignant si les parties ont bien envoyé leur température (vrai ou faux). Par défaut, ils sont sur faux.uint public restaurateurDepot = 0;
uint public grossisteDepot = 0;
// Ci-dessus les mises des parties au contrat, par défaut égales à 0.uint public restaurateurTemperature;
uint public grossisteTemperature;
// Ci-dessus les températures du restaurateur et du grossisteuint public temperatureMax = 2;// Ci - dessus la température maximale autorisée par le règlement européenfunction envoiTemperature (uint x) public payable {
// la logique du programme se trouve sous cette fonction "envoiTemperature"
require(msg.sender == restaurateur || msg.sender == grossiste);
// Ci-dessus cette fonction impose que la fonction "envoiTemperature" ne puisse être utilisée que par les parties.
if (msg.sender == restaurateur) {
restaurateurPosted = true;
restaurateurDepot =+ msg.value;
restaurateurTemperature = x;
}
// Si l'envoyeur est le fournisseur, le booléen est défini sur "true"; on enregistre sa somme mis en jeu et la température de son thermomètreif (msg.sender == grossiste) {
grossistePosted = true;
grossisteDepot =+ msg.value;
grossisteTemperature = x;
}
// même opération pour le grossisteif (grossistePosted && restaurateurPosted) {// si les deux parties ont bien envoyé leur température...if ( grossisteTemperature == restaurateurTemperature ) {//...et que celles-ci sont bien égales...if ( grossisteTemperature > temperatureMax ) {
restaurateur.transfer(restaurateurDepot+grossisteDepot);
restaurateurDepot = 0;
grossisteDepot = 0;
//...et que la température est supérieure à la température max; On transfère les dépôts} else {// sinon chacun récupère sa miserestaurateur.transfer(restaurateurDepot);
grossiste.transfer(grossisteDepot);
restaurateurDepot= 0;
grossisteDepot = 0;
}
}
}
}
}

--

--

Doctorant | Consultant Smart contract | abdoulayediallo.fr

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store