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,
- une monnaie propre à cette banque,
- pour offrir une incitation avec un joli taux d'intérêt
- créer de la liquidité pour convertir notre monnaie avec les autres
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);
}
}