Last active
September 1, 2021 13:54
-
-
Save Davidegloh/eca6d594b1ca626409bb5345681e8f6a to your computer and use it in GitHub Desktop.
[Event - Solidity]#event
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Event | |
// Event : C'est une façon de log des events et de la data durant l'execution d'une fonction. Comme un console.log en JS. Lorsque la fonction est executée allez dans la console et regarder dans logs. Les arguments des logs seront affichés. Les events sont importants pour que les frontends in dapps can react to changes in our contracts. | |
//Exemple : pour la function addBalance : | |
//event balanceAdded(uint amount, address depositedTo); // Event : C'est une façon de log des events et de la data during a function execution. En arguments s'affichera // le montant déposé et l'addresse recevant les fonds. | |
pragma solidity 0.7.5; | |
contract Bank { | |
//storage - permanent storage of data (state variables) | |
//memory - temporary storage used in function execution | |
//call data - save arguments/input to our functions | |
//strings, arrays, mappings, structs | |
mapping(address => uint) balance; | |
address owner; | |
//Events | |
event balanceAdded(uint amount, address depositedTo); // Event : C'est une façon de log des events et de la data during a function execution. En arguments s'affichera | |
// le montant déposé et l'addresse recevant les fonds. | |
event transfertDone(uint amount, address sender, address recipient); | |
modifier onlyOwner { | |
require (owner == msg.sender); | |
_; // run the function | |
} | |
// Constructor | |
constructor(){ | |
owner = msg.sender; | |
} | |
//Functions | |
function addBalance(uint _toAdd) public onlyOwner returns(uint) { //fonction addBalance pour rajouter un uint à une address | |
balance[msg.sender] += _toAdd; // ou aussi balance [msg.sender] + _toAdd. Ici on rajouter une valeur à l'adresse de l'envoyeur | |
emit balanceAdded(_toAdd, msg.sender); //emit fait écho au "event balanced added" ligne 18. | |
return balance[msg.sender]; //ici on retourne la balance de l'envoyeur "[msg.sender]"" updaté | |
} | |
function getBalance() public view returns(uint) {// fonction pour afficher une balance qui retourne un integer de l'adresse de l'envoyeur. | |
return balance[msg.sender]; | |
} | |
function transfer (address recipient, uint amount) public {// fonction permettant de transferer des fonds d'une adresse à l'autre | |
require(balance[msg.sender] >= amount, "Balance not sufficient"); // error handling "require" pour s'assurer que l'envoyeur à les fonds suffisants pour l'envoi. 2eme argument c'est le message d'erreur | |
require(msg.sender != recipient, "Dont transfer money to yourself"); // error handling "require" pour s'assurer que l'envoyeur ne s'envoit pas les fonds à lui même | |
emit transfertDone(amount, msg.sender, recipient); | |
uint previousSenderBalance = balance[msg.sender]; | |
_transfer(msg.sender, recipient, amount); // déclaration de la fonction _transfer (ci-dessous) avec en argument les inputs : adresse de | |
// l'envoyeur, sdu receveur et le montant à transferer. | |
assert(balance[msg.sender] == previousSenderBalance - amount); | |
//event Logs and further checks | |
} | |
function _transfer(address from, address to, uint amount) private { // fonction qui permet de débiter les fonds de l'envoyeur et de créditer | |
balance[from] -= amount; //le compte du receveur. Noter que cette fonction est "private" | |
balance[to] += amount; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment