diff --git a/NeoTether b/NeoTether new file mode 100644 index 0000000..088e13f --- /dev/null +++ b/NeoTether @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +interface ITRC20 { + function totalSupply() external view returns (uint256); + function balanceOf(address account) external view returns (uint256); + function transfer(address recipient, uint256 amount) external returns (bool); + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); +} + +contract NeoTether is ITRC20 { + string public name = "NeoTether"; + string public symbol = "USDT"; + uint8 public decimals = 6; + uint256 private _totalSupply; + address public owner; + + mapping(address => uint256) private _balances; + mapping(address => mapping(address => uint256)) private _allowances; + + modifier onlyOwner() { + require(msg.sender == owner, "Only owner"); + _; + } + + constructor(uint256 initialSupply) { + owner = msg.sender; + _mint(owner, initialSupply); + } + + function totalSupply() public view override returns (uint256) { + return _totalSupply; + } + + function balanceOf(address account) public view override returns (uint256) { + return _balances[account]; + } + + function transfer(address recipient, uint256 amount) public override returns (bool) { + _transfer(msg.sender, recipient, amount); + return true; + } + + function allowance(address owner_, address spender) public view override returns (uint256) { + return allowances[owner][spender]; + } + + function approve(address spender, uint256 amount) public override returns (bool) { + _approve(msg.sender, spender, amount); + return true; + } + + function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { + _transfer(sender, recipient, amount); + _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); + return true; + } + + function _transfer(address sender, address recipient, uint256 amount) internal { + require(sender != address(0), "Zero sender"); + require(recipient != address(0), "Zero recipient"); + require(_balances[sender] >= amount, "Low balance"); + _balances[sender] -= amount; + _balances[recipient] += amount; + emit Transfer(sender, recipient, amount); + } + + function _mint(address account, uint256 amount) internal onlyOwner { + require(account != address(0), "Zero mint"); + _totalSupply += amount; + _balances[account] += amount; + emit Transfer(address(0), account, amount); + } + + function mint(address account, uint256 amount) public onlyOwner { + _mint(account, amount); + } + + function approve(address owner, address spender, uint256 amount) internal { + require(owner_ != address(0), "Zero owner"); + require(spender != address(0), "Zero spender"); + allowances[owner][spender] = amount; + emit Approval(owner_, spender, amount); + } +} +{ + "symbol": "USDT", + "name": "NeoTether", + "type": "TRC20", + "decimals": 6, + "contract": "TKbW8zqrTQxVnmK6grveytadvrDcWHcEEE", + "logo": "https://drive.google.com/uc?export=view&id=YOUR_LOGO_FILE_ID", + "website": "https://rihath1988.netlify.app", + "whitepaper": "https://drive.google.com/file/d/1A6VO8e_j8ROk4A-sfNCYzB81LWZc7g3E/view", + "audit": "https://drive.google.com/file/d/TRONxC9dsfBzsx9JS88BAuditFile/view", + "explorer": "https://tronscan.org/#/token20/TKbW8zqrTQxVnmK6grveytadvrDcWHcEEE", + "status": "active" +}https://drive.google.com/file/d/16W8e_h8KO4A-snGNf_BzB1LVwZcg-z3E/view?usp=drivesdkhttps://drive.google.com/file/d/16W8e_h8KO4A-snGNf_BzB1LVwZcg-z3E/view?usp=drivesdk +https://drive.google.com/file/d/1YomCsV6bgE3cnvl58SI8k-Wzj5v26mFl/view?usp=drivesdk