github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/contracts/auto/ERC20.sol (about) 1 // SPDX-License-Identifier: GPL-3.0 2 3 pragma solidity >=0.7.0 <0.9.0; 4 5 interface IERC20 { 6 function totalSupply() external view returns (uint); 7 function balanceOf(address account) external view returns (uint); 8 function transfer(address recipient, uint amount) external returns (bool); 9 function allowance(address owner, address spender) external view returns (uint); 10 function approve(address spender, uint amount) external returns (bool); 11 function transferFrom(address sender, address recipient, uint amount) external returns (bool); 12 13 event Transfer(address indexed from, address indexed to, uint value); 14 event Approval(address indexed owner, address indexed spender, uint value); 15 } 16 17 contract ERC20 is IERC20 { 18 uint override public totalSupply; 19 mapping(address => uint) override public balanceOf; 20 mapping(address => mapping(address => uint)) override public allowance; 21 string public name; 22 string public symbol; 23 uint8 public decimals = 18; 24 25 constructor(string memory n, string memory s) { 26 name = n; 27 symbol = s; 28 } 29 30 function transfer(address recipient, uint amount) override external returns (bool) { 31 balanceOf[msg.sender] -= amount; 32 balanceOf[recipient] += amount; 33 emit Transfer(msg.sender, recipient, amount); 34 return true; 35 } 36 37 function approve(address spender, uint amount) override external returns (bool) { 38 allowance[msg.sender][spender] = amount; 39 emit Approval(msg.sender, spender, amount); 40 return true; 41 } 42 43 function transferFrom(address sender, address recipient, uint amount) override external returns (bool) { 44 allowance[sender][msg.sender] -= amount; 45 balanceOf[sender] -= amount; 46 balanceOf[recipient] += amount; 47 emit Transfer(sender, recipient, amount); 48 return true; 49 } 50 51 function mint(uint amount) external { 52 balanceOf[msg.sender] += amount; 53 totalSupply += amount; 54 emit Transfer(address(0), msg.sender, amount); 55 } 56 57 function burn(uint amount) external { 58 balanceOf[msg.sender] -= amount; 59 totalSupply -= amount; 60 emit Transfer(msg.sender, address(0), amount); 61 } 62 }