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  }