Skip to content

Instantly share code, notes, and snippets.

@evaletolab
Last active November 24, 2022 18:13
Show Gist options
  • Save evaletolab/46a72c5e99ce24b91fec15f1dd57b5b3 to your computer and use it in GitHub Desktop.
Save evaletolab/46a72c5e99ce24b91fec15f1dd57b5b3 to your computer and use it in GitHub Desktop.

Ex1. Ma petite banque

On va créer une petite banque super basique avec le service juridique, la sécurité, et un accès universel, c'est moins de 30 lignes (de texte) pondues sur la table de la cuisine.

contract Bank {
  mapping (address => uint32) private account;

  constructor() {
  }

  receive() external payable{
    require(msg.value>0);
    account[msg.sender] += uint32(msg.value);
  }

  modifier owner() {
    require(account[msg.sender]>0, "Auth: You are not allowed");
    _;
  }

  function getBalance() external view returns(uint32){ 
    return account[msg.sender];
  }

  function withdraw() external payable owner {
    uint32 amount = account[msg.sender];
    account[msg.sender] = 0;
    payable(msg.sender).transfer(uint256(amount));
  }
}

Mais ca suffit pas, ensuite il faut encore faire,

  1. une monnaie propre à cette banque,
  2. pour offrir une incitation avec un joli taux d'intérêt
  3. créer de la liquidité pour convertir notre monnaie avec les autres

Ex2. La banque peut produire des reconnaissances de dettes

pragma solidity ^0.5.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

contract GLD is ERC20, ERC20Detailed {
    constructor(uint256 initialSupply) ERC20Detailed("Gold", "GLD", 18) public {
        _mint(msg.sender, initialSupply);
    }
}

Ex2. Une banque offre un service de crédit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment