Skip to content

Instantly share code, notes, and snippets.

@Davidegloh
Last active September 1, 2021 13:54
Show Gist options
  • Save Davidegloh/eca6d594b1ca626409bb5345681e8f6a to your computer and use it in GitHub Desktop.
Save Davidegloh/eca6d594b1ca626409bb5345681e8f6a to your computer and use it in GitHub Desktop.
[Event - Solidity]#event
//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