Smart contract d’une garantie autonome au sens de l’article 2321 du code civil

Copyright: https://www.coindesk.com/information/ethereum-smart-contracts-work/

Description du contrat.

L’article 2321 du code civil définit la garantie autonome comme « un engagement par lequel le garant s’oblige, en considération d’une obligation souscrite par un tiers, à verser une somme soit à première demande, soit suivant des modalités convenues. »

La blockchain Ethereum est la plus populaire pour le développement de smart contract.
La garantie autonome la plus simple du monde.
pragma solidity ^0.4.19;contract garantieAutonome {

uint public etherGaranti;
uint public dureeDuContrat = 15 days;
uint public delai;

address public creancier=0xe0f5206bbd039e7b0592d8918820024e2a7437b8;
address public garant=0xe0f5206bbd039e7b0592d8918820024e2a7437b1;


modifier onlyCreancier () {
require(msg.sender == creancier);
_;
}

modifier onlyGarant () {
require (msg.sender == garant);
_;
}

function internal commencerDelai (){
delai = now + dureeDuContrat;

}

function deposerEther() public payable onlyGarant {
require (msg.value == 1 ether);
etherGaranti = msg.value;
commencerDelai();

}

function retirerEther() public onlyCreancier {
require(now < delai);
creancier.transfer(etherGaranti);
etherGaranti = 0;
}

function finirContrat() public onlyGarant {
require(now > delai);
garant.transfer(etherGaranti);
etherGaranti = 0;}

}

Description du code

Création du smart contract et déclaration des variables

En toute première ligne de notre programme, nous avons indiqué la version du langage Solidity utilisé. Ici il s’agit de la version 0.4.19.

pragma solidity ^0.4.19;
garantieAutonome contract {}
uint public nomDeLaVariable = [valeur de la variable]
  • une variable qui stocke l’ether déposé en garantie, que nous avons appelé etherGaranti,
uint public etherGaranti;
  • une autre correspondant à la durée du contrat, appelée dureeDuContratet valant 15 jours,
uint public dureeDuContrat = 15 days;
  • et une dernière correspondant au délai (sur laquelle nous reviendrons plus en détail plus tard).
uint public delai;
address public creancier=0xe0f5206bbd039e7b0592d8918820024e2a7437b9;
address public garant=0xe0f5206bbd039e7b0592d8918820024e2a7437b1;

Création des « modifier » : les vérificateurs de fonctions

Un smart contract est un programme interactif. Le garant interagit avec le programme lorsqu’il dépose l’ether en garantie, tout comme le créancier interagit avec le programme lorsqu’il le retire.

modifier nomDuModifier (){
// on écrit le code entre les accolades
_;}
require(msg.sender == creancier);
require(msg.sender == garant);

Création des fonctions

Attardons-nous maintenant sur la variable delai définie en tête du smart contract.

function deposerEther() public payable onlyGarant {
require (msg.value == 1 ether);
etherGaranti = msg.value;
commencerDelai();

}
function retirerEther() public onlyCreancier {
require(now < delai);
creancier.transfer(etherGaranti);
etherGaranti = 0;
}
require(now > delai);
require (etherGaranti != 0);
garant.transfer(etherGaranti);

--

--

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