MyToken

Description:

Smart contract deployed on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyToken {
    // --- Метаданные токена ---
    string public name;        // Название токена
    string public symbol;      // Символ токена
    uint8 public decimals;     // Количество знаков после запятой

    // --- Основные данные ---
    uint256 public totalSupply;                           // Общая эмиссия
    mapping(address => uint256) public balanceOf;         // Баланс по адресу
    mapping(address => mapping(address => uint256)) public allowance; // Лимиты делегирования

    // --- События ---
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // --- Конструктор ---
    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _initialSupply
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        
        // Эмиссия токенов
        totalSupply = _initialSupply * (10 ** uint256(decimals));
        balanceOf[msg.sender] = totalSupply; // Всё на создателе токена

        emit Transfer(address(0), msg.sender, totalSupply);
    }

    // --- Логика передачи ---
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0), "Invalid address");
        require(balanceOf[msg.sender] >= _value, "Not enough balance");

        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;

        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    // --- Разрешение делегату ---
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    // --- Передача с использованием делегирования ---
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0), "Invalid address");
        require(balanceOf[_from] >= _value, "Not enough balance");
        require(allowance[_from][msg.sender] >= _value, "Allowance exceeded");

        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        allowance[_from][msg.sender] -= _value;

        emit Transfer(_from, _to, _value);
        return true;
    }
}

Tags:
addr:0xe74ccb8ae740383adcd2922c156d5d74067afa6b|verified:true|block:23569011|tx:0x926b258d08030df97ae3f8dc8cf769fdc84490b2b1b3a29fae7793e5338adf36|first_check:1760361172

Submitted on: 2025-10-13 15:12:52

Comments

Log in to comment.

No comments yet.