Description:
Smart contract deployed on Ethereum with Factory features.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"My token.sol": {
"content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.20;\r
\r
contract MyToken {\r
// Метаданные\r
string public name = "My Token";\r
string public symbol = "MTK";\r
uint8 public decimals = 18;\r
\r
// Состояние\r
uint256 public totalSupply;\r
mapping(address => uint256) public balanceOf;\r
mapping(address => mapping(address => uint256)) public allowance;\r
\r
// События стандарта ERC-20\r
event Transfer(address indexed from, address indexed to, uint256 value);\r
event Approval(address indexed owner, address indexed spender, uint256 value);\r
\r
// Конструктор: минтим 1,000,000 MTK на адрес того, кто деплоит\r
constructor() {\r
uint256 initialSupply = 1_000_000 * (10 ** uint256(decimals));\r
totalSupply = initialSupply;\r
balanceOf[msg.sender] = initialSupply;\r
emit Transfer(address(0), msg.sender, initialSupply);\r
}\r
\r
// Базовые функции стандарта\r
function transfer(address to, uint256 value) external returns (bool) {\r
_transfer(msg.sender, to, value);\r
return true;\r
}\r
\r
function approve(address spender, uint256 value) external returns (bool) {\r
allowance[msg.sender][spender] = value;\r
emit Approval(msg.sender, spender, value);\r
return true;\r
}\r
\r
function transferFrom(address from, address to, uint256 value) external returns (bool) {\r
uint256 currentAllowance = allowance[from][msg.sender];\r
require(currentAllowance >= value, "ERC20: insufficient allowance");\r
// начиная с 0.8.x проверки переполнений/недополнений встроены\r
allowance[from][msg.sender] = currentAllowance - value;\r
_transfer(from, to, value);\r
return true;\r
}\r
\r
// Внутренняя передача\r
function _transfer(address from, address to, uint256 value) internal {\r
require(to != address(0), "ERC20: transfer to the zero address");\r
uint256 fromBalance = balanceOf[from];\r
require(fromBalance >= value, "ERC20: transfer amount exceeds balance");\r
balanceOf[from] = fromBalance - value;\r
balanceOf[to] += value;\r
emit Transfer(from, to, value);\r
}\r
}\r
"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}
}}
Submitted on: 2025-11-05 14:43:15
Comments
Log in to comment.
No comments yet.