ERC20

Description:

ERC20 token contract with Factory capabilities. Standard implementation for fungible tokens on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "USDT.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.20;\r
\r
/**\r
 * @title ERC20 interface\r
 */\r
interface IERC20 {\r
    function totalSupply() external view returns (uint256);\r
    function balanceOf(address account) external view returns (uint256);\r
    function transfer(address to, uint256 amount) external returns (bool);\r
    function allowance(address owner, address spender) external view returns (uint256);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
    function transferFrom(address from, address to, uint256 amount) external returns (bool);\r
    event Transfer(address indexed from, address indexed to, uint256 value);\r
    event Approval(address indexed owner, address indexed spender, uint256 value);\r
}\r
\r
/**\r
 * @title ERC20 standard implementation\r
 */\r
contract ERC20 is IERC20 {\r
    string public name;\r
    string public symbol;\r
    uint8 public constant decimals = 6; // USDT uses 6 decimals\r
    uint256 private _totalSupply;\r
    mapping(address => uint256) private _balances;\r
    mapping(address => mapping(address => uint256)) private _allowances;\r
\r
    constructor(string memory _name, string memory _symbol){\r
        name = _name;\r
        symbol = _symbol;\r
    }\r
\r
    function totalSupply() public view override returns (uint256){\r
        return _totalSupply;\r
    }\r
\r
    function balanceOf(address account) public view override returns (uint256){\r
        return _balances[account];\r
    }\r
\r
    function transfer(address to, uint256 amount) public override returns (bool){\r
        require(_balances[msg.sender] >= amount, "ERC20: insufficient balance");\r
        _balances[msg.sender] -= amount;\r
        _balances[to] += amount;\r
        emit Transfer(msg.sender, to, amount);\r
        return true;\r
    }\r
\r
    function allowance(address owner, address spender) public view override returns (uint256){\r
        return _allowances[owner][spender];\r
    }\r
\r
    function approve(address spender, uint256 amount) public override returns (bool){\r
        _allowances[msg.sender][spender] = amount;\r
        emit Approval(msg.sender, spender, amount);\r
        return true;\r
    }\r
\r
    function transferFrom(address from, address to, uint256 amount) public override returns (bool){\r
        require(_balances[from] >= amount, "ERC20: insufficient balance");\r
        require(_allowances[from][msg.sender] >= amount, "ERC20: allowance exceeded");\r
        _balances[from] -= amount;\r
        _balances[to] += amount;\r
        _allowances[from][msg.sender] -= amount;\r
        emit Transfer(from, to, amount);\r
        return true;\r
    }\r
\r
    // Internal mint function\r
    function _mint(address account, uint256 amount) internal {\r
        require(account != address(0), "ERC20: mint to zero");\r
        _totalSupply += amount;\r
        _balances[account] += amount;\r
        emit Transfer(address(0), account, amount);\r
    }\r
}\r
\r
/**\r
 * @title USDT Educational Token\r
 */\r
contract USDT is ERC20 {\r
    constructor(uint256 initialSupply) ERC20("USDT", "USDT") {\r
        _mint(msg.sender, initialSupply * 10 ** uint256(decimals));\r
    }\r
}\r
"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": []
  }
}}

Tags:
ERC20, Token, Factory|addr:0x7140aac37d1593faf430435d27025659fad5220c|verified:true|block:23684442|tx:0xd17f72c73150812c09946929b43668c32e8750273cfc4a99b0990c946d288cbd|first_check:1761758088

Submitted on: 2025-10-29 18:14:48

Comments

Log in to comment.

No comments yet.