# Crypto Code TOKEN Co

By [Saman Rasti🏰](https://paragraph.com/@112212) · 2023-10-26

---

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.17;
     
    // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0/contracts/token/ERC20/IERC20.sol
    interface IERC20 {
       function totalSupply() external view returns (uint);
     
       function balanceOf(address account) external view returns (uint);
     
       function transfer(address recipient, uint amount) external returns (bool);
     
       function allowance(address owner, address spender) external view returns (uint);
     
       function approve(address spender, uint amount) external returns (bool);
     
       function transferFrom(
           address sender,
           address recipient,
           uint amount
       ) external returns (bool);
     
       event Transfer(address indexed from, address indexed to, uint value);
       event Approval(address indexed owner, address indexed spender, uint value);
    }
     
     
     
    contract ERC20 is IERC20 {
       uint public totalSupply;
       mapping(address => uint) public balanceOf;
       mapping(address => mapping(address => uint)) public allowance;
       string public name = "CryptoCode";
       string public symbol = "SAMAN";
       uint8 public decimals = 18;
     
       function transfer(address recipient, uint amount) external returns (bool) {
           balanceOf[msg.sender] -= amount;
           balanceOf[recipient] += amount;
           emit Transfer(msg.sender, recipient, amount);
           return true;
       }
     
       function approve(address spender, uint amount) external returns (bool) {
           allowance[msg.sender][spender] = amount;
           emit Approval(msg.sender, spender, amount);
           return true;
       }
     
       function transferFrom(
           address sender,
           address recipient,
           uint amount
       ) external returns (bool) {
           allowance[sender][msg.sender] -= amount;
           balanceOf[sender] -= amount;
           balanceOf[recipient] += amount;
           emit Transfer(sender, recipient, amount);
           return true;
       }
     
       function mint(uint amount) external {
           balanceOf[msg.sender] += amount;
           totalSupply += amount;
           emit Transfer(address(0), msg.sender, amount);
       }
     
       function burn(uint amount) external {
           balanceOf[msg.sender] -= amount;
           totalSupply -= amount;
           emit Transfer(msg.sender, address(0), amount);
       }
    }

---

*Originally published on [Saman Rasti🏰](https://paragraph.com/@112212/crypto-code-token-co)*
