/** * Source Code first verified at https://etherscan.io on Thursday, March 28, 2019 (UTC) */ pragma solidity ^0.4.23; contract USDT{ mapping (address => uint256) private balances; mapping (address => uint256[2]) private lockedBalances; string public name; //fancy name: eg Simon Bucks uint8 public decimals; //How many decimals to show. string public symbol; //An identifier: eg SBX uint256 public totalSupply; address public owner; event Transfer(address indexed _from, address indexed _to, uint256 _value); constructor( uint256 _initialAmount, string _tokenName, uint8 _decimalUnits, string _tokenSymbol, address _owner ) public { balances[_owner] = _initialAmount; // Give the owner all initial tokens totalSupply = _initialAmount; // Update total supply name = _tokenName; // Set the name for display purposes decimals = _decimalUnits; // Amount of decimals for display purposes symbol = _tokenSymbol; // Set the symbol for display purposes owner = _owner; // set owner } /*DirectDrop and AirDrop*/ /*Checking lock limit and time limit while transfering.*/ function transfer(address _to, uint256 _value) public returns (bool success) { //Before ICO finish, only own could transfer. if(_to != address(0)){ if(lockedBalances[msg.sender][1] >= now) { require((balances[msg.sender] > lockedBalances[msg.sender][0]) && (balances[msg.sender] - lockedBalances[msg.sender][0] >= _value)); } else { require(balances[msg.sender] >= _value); } balances[msg.sender] -= _value; balances[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } } /*With permission, destory token from an address and minus total amount.*/ function burnFrom(address _who,uint256 _value)public returns (bool){ require(msg.sender == owner); assert(balances[_who] >= _value); totalSupply -= _value; balances[_who] -= _value; lockedBalances[_who][0] = 0; lockedBalances[_who][1] = 0; return true; } /*With permission, creating coin.*/ function makeCoin(uint256 _value)public returns (bool){ require(msg.sender == owner); totalSupply += _value; balances[owner] += _value; return true; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } /*With permission, withdraw ETH to owner address from smart contract.*/ function withdraw() public{ require(msg.sender == owner); msg.sender.transfer(address(this).balance); } /*With permission, withdraw ETH to an address from smart contract.*/ function withdrawTo(address _to) public{ require(msg.sender == owner); address(_to).transfer(address(this).balance); } }