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;
}
}
Submitted on: 2025-10-13 15:12:52
Comments
Log in to comment.
No comments yet.