Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x2D40573AC9e60545fB068bB1a1685675Db16ACFa
Balance 0 ETH
Nonce 1
Code Size 8826 bytes
Indexed Transactions 0 (1 on-chain, 1.2% indexed)
External Etherscan · Sourcify

Contract Bytecode

8826 bytes
0x6080604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461016e578063095ea7b3146101f857806318160ddd146102305780631d5397641461025757806323b872dd146102e7578063313ce567146103115780633f4ba83a1461033c57806342966c68146103515780634d253b50146103695780635a46d3b51461038a5780635c975abb146103ab57806363a846f8146103c057806366188463146103e15780636623fc4614610405578063704b6c021461041d57806370a082311461043e5780638456cb591461045f578063859bc2f3146104745780638da5cb5b14610502578063902d55a51461053357806395d89b4114610548578063a9059cbb1461055d578063b0fc29e614610581578063cd4217c1146105a5578063d73dd623146105c6578063d7a78db8146105ea578063dd62ed3e14610602578063f2fde38b14610629575b600080fd5b34801561017a57600080fd5b5061018361064a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bd5781810151838201526020016101a5565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020457600080fd5b5061021c600160a060020a03600435166024356106d8565b604080519115158252519081900360200190f35b34801561023c57600080fd5b506102456107eb565b60408051918252519081900360200190f35b34801561026357600080fd5b50604080516020600480358082013583810280860185019096528085526102e595369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506107f19650505050505050565b005b3480156102f357600080fd5b5061021c600160a060020a0360043581169060243516604435610a92565b34801561031d57600080fd5b50610326610dfe565b6040805160ff9092168252519081900360200190f35b34801561034857600080fd5b506102e5610e07565b34801561035d57600080fd5b506102e5600435610ef5565b34801561037557600080fd5b506102e5600160a060020a0360043516610ff7565b34801561039657600080fd5b50610245600160a060020a036004351661114f565b3480156103b757600080fd5b5061021c61116a565b3480156103cc57600080fd5b5061021c600160a060020a0360043516611173565b3480156103ed57600080fd5b5061021c600160a060020a0360043516602435611188565b34801561041157600080fd5b506102e5600435611277565b34801561042957600080fd5b506102e5600160a060020a0360043516611430565b34801561044a57600080fd5b50610245600160a060020a036004351661158f565b34801561046b57600080fd5b506102e56115aa565b34801561048057600080fd5b50604080516020600480358082013583810280860185019096528085526102e595369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061169a9650505050505050565b34801561050e57600080fd5b5061051761193f565b60408051600160a060020a039092168252519081900360200190f35b34801561053f57600080fd5b5061024561194e565b34801561055457600080fd5b5061018361195e565b34801561056957600080fd5b5061021c600160a060020a03600435166024356119b9565b34801561058d57600080fd5b506102e5600160a060020a0360043516602435611acf565b3480156105b157600080fd5b50610245600160a060020a0360043516611c88565b3480156105d257600080fd5b5061021c600160a060020a0360043516602435611c9a565b3480156105f657600080fd5b506102e5600435611d33565b34801561060e57600080fd5b50610245600160a060020a0360043581169060243516611dfd565b34801561063557600080fd5b506102e5600160a060020a0360043516611e28565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b505050505081565b60008115806107085750336000908152600860209081526040808320600160a060020a0387168452909152902054155b1515610784576040805160e560020a62461bcd02815260206004820152602c60248201527f506c6561736520636865636b2074686520616d6f756e7420796f752077616e7460448201527f20746f20617070726f76652e0000000000000000000000000000000000000000606482015290519081900360840190fd5b336000818152600860209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60015490565b600254600090600160a060020a031633148061082157503360009081526003602052604090205460ff1615156001145b151561089d576040805160e560020a62461bcd02815260206004820152602e60248201527f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207760448201527f616c6c657420616464726573732e000000000000000000000000000000000000606482015290519081900360840190fd5b8151835114610942576040805160e560020a62461bcd02815260206004820152604a60248201527f546865206e756d626572206f662077616c6c657420617272616e67656d656e7460448201527f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652060648201527f646966666572656e742e00000000000000000000000000000000000000000000608482015290519081900360a40190fd5b5060005b8251811015610a8d57825160009084908390811061096057fe5b60209081029091010151600160a060020a031614156109c9576040805160e560020a62461bcd02815260206004820152601860248201527f506c6561736520636865636b2074686520616464726573730000000000000000604482015290519081900360640190fd5b81818151811015156109d757fe5b90602001906020020151600b600085848151811015156109f357fe5b6020908102909101810151600160a060020a03168252810191909152604001600020558251839082908110610a2457fe5b90602001906020020151600160a060020a03167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd38383815181101515610a6657fe5b906020019060200201516040518082815260200191505060405180910390a2600101610946565b505050565b600a5460009060ff1615610af0576040805160e560020a62461bcd02815260206004820152601160248201527f546865726520697320612070617573652e000000000000000000000000000000604482015290519081900360640190fd5b6000600160a060020a038416118015610b1257506000600160a060020a038516115b1515610b68576040805160e560020a62461bcd02815260206004820152601860248201527f506c6561736520636865636b2074686520616464726573730000000000000000604482015290519081900360640190fd5b600160a060020a0384166000908152602081905260409020548211801590610bb35750600160a060020a03841660009081526008602090815260408083203384529091529020548211155b1515610c55576040805160e560020a62461bcd02815260206004820152604660248201527f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7360448201527f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7560648201527f2073656e642e0000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a0384166000908152600b60209081526040808320549183905290912054610c89908463ffffffff611fdf16565b1015610d05576040805160e560020a62461bcd02815260206004820152602e60248201527f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686560448201527f206c6f636b6564206e756d626572000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038416600090815260208190526040902054610d2e908363ffffffff611fdf16565b600160a060020a038086166000908152602081905260408082209390935590851681522054610d63908363ffffffff61203f16565b600160a060020a03808516600090815260208181526040808320949094559187168152600882528281203382529091522054610da5908363ffffffff611fdf16565b600160a060020a038086166000818152600860209081526040808320338452825291829020949094558051868152905192871693919260008051602061222f833981519152929181900390910190a35060019392505050565b60075460ff1681565b600254600160a060020a03163314610e64576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b600a5460ff161515610ec0576040805160e560020a62461bcd02815260206004820152601160248201527f4974206973206e6f74207061757365642e000000000000000000000000000000604482015290519081900360640190fd5b600a805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600254600160a060020a03163314610f52576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b33600090815260208190526040902054610f72908263ffffffff611fdf16565b33600090815260208190526040902055600154610f95908263ffffffff611fdf16565b60015560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091339160008051602061222f8339815191529181900360200190a350565b600254600160a060020a03163314611054576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b600160a060020a03811660009081526003602052604090205460ff161580159061108c5750600254600160a060020a03828116911614155b151561112e576040805160e560020a62461bcd02815260206004820152604760248201527f5468697320697320616e206578697374696e672061646d696e2077616c6c657460448201527f2c206974206d757374206e6f74206265206120746f6b656e20686f6c6465722060648201527f77616c6c65742e00000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600160a060020a03166000908152600b602052604090205490565b600a5460ff1681565b60036020526000908152604090205460ff1681565b336000908152600860209081526040808320600160a060020a03861684529091528120548083106111dc57336000908152600860209081526040808320600160a060020a0388168452909152812055611211565b6111ec818463ffffffff611fdf16565b336000908152600860209081526040808320600160a060020a03891684529091529020555b336000818152600860209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600254600160a060020a031633146112d4576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b33600090815260046020526040902054811115611387576040805160e560020a62461bcd02815260206004820152605960248201527f546865206e756d62657220746f2062652070726f636573736564206973206d6f60448201527f7265207468616e2074686520746f74616c20616d6f756e7420616e642074686560648201527f206e756d6265722063757272656e746c792066726f7a656e2e00000000000000608482015290519081900360a40190fd5b336000908152602081905260409020546113a7908263ffffffff61203f16565b33600090815260208181526040808320939093556004905220546113d1908263ffffffff611fdf16565b336000908152600460205260409020556001546113f4908263ffffffff61203f16565b60015560408051828152905133917fcac76f4972d9ff5ad35f15943c99ef30a49b3a0203cc98c4ef401ab7b8d1a509919081900360200190a250565b600254600160a060020a0316331461148d576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b600160a060020a03811660009081526003602052604090205460ff1615156001148015906114c95750600254600160a060020a03828116911614155b151561156b576040805160e560020a62461bcd02815260206004820152605d60248201527f4974206973206e6f7420616e206578697374696e672061646d696e697374726160448201527f746f722077616c6c65742c20616e64206974206d757374206e6f74206265207460648201527f6865206f776e65722077616c6c6574206f662074686520746f6b656e2e000000608482015290519081900360a40190fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b600160a060020a031660009081526020819052604090205490565b600254600160a060020a03163314611607576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b600a5460ff1615611662576040805160e560020a62461bcd02815260206004820152601160248201527f546865726520697320612070617573652e000000000000000000000000000000604482015290519081900360640190fd5b600a805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600254600090600160a060020a03163314806116ca57503360009081526003602052604090205460ff1615156001145b1515611746576040805160e560020a62461bcd02815260206004820152602e60248201527f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207760448201527f616c6c657420616464726573732e000000000000000000000000000000000000606482015290519081900360840190fd5b81518351146117eb576040805160e560020a62461bcd02815260206004820152604a60248201527f546865206e756d626572206f662077616c6c657420617272616e67656d656e7460448201527f7320616e6420746865206e756d626572206f6620616d6f756e7473206172652060648201527f646966666572656e742e00000000000000000000000000000000000000000000608482015290519081900360a40190fd5b5060005b8251811015610a8d57611830828281518110151561180957fe5b6020908102909101810151336000908152918290526040909120549063ffffffff611fdf16565b33600090815260208190526040902055815161189c9083908390811061185257fe5b90602001906020020151600080868581518110151561186d57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff61203f16565b60008085848151811015156118ad57fe5b6020908102909101810151600160a060020a031682528101919091526040016000205582518390829081106118de57fe5b90602001906020020151600160a060020a031633600160a060020a031660008051602061222f833981519152848481518110151561191857fe5b906020019060200201516040518082815260200191505060405180910390a36001016117ef565b600254600160a060020a031681565b6b0cecb8f27f4200f3a000000081565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b600a5460009060ff1615611a17576040805160e560020a62461bcd02815260206004820152601160248201527f546865726520697320612070617573652e000000000000000000000000000000604482015290519081900360640190fd5b336000908152600b60209081526040808320549183905290912054611a42908463ffffffff611fdf16565b1015611abe576040805160e560020a62461bcd02815260206004820152602e60248201527f417474656d7074696e6720746f2073656e64206d6f7265207468616e2074686560448201527f206c6f636b6564206e756d626572000000000000000000000000000000000000606482015290519081900360840190fd5b611ac8838361209c565b9392505050565b600254600160a060020a0316331480611afc57503360009081526003602052604090205460ff1615156001145b1515611b78576040805160e560020a62461bcd02815260206004820152602e60248201527f4974206973206e6f7420746865206f776e6572206f72206d616e61676572207760448201527f616c6c657420616464726573732e000000000000000000000000000000000000606482015290519081900360840190fd5b6001548111158015611b925750600160a060020a03821615155b1515611c34576040805160e560020a62461bcd02815260206004820152605560248201527f4974206973207468652066697273742077616c6c6574206f7220617474656d7060448201527f74656420746f206c6f636b20616e20616d6f756e74206772656174657220746860648201527f616e2074686520746f74616c20686f6c64696e672e0000000000000000000000608482015290519081900360a40190fd5b600160a060020a0382166000818152600b6020908152604091829020849055815184815291517f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd39281900390910190a25050565b60096020526000908152604090205481565b336000908152600860209081526040808320600160a060020a0386168452909152812054611cce908363ffffffff61203f16565b336000818152600860209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600254600160a060020a03163314611d90576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b33600090815260208190526040902054611db0908263ffffffff611fdf16565b3360009081526020818152604080832093909355600490522054611dda908263ffffffff61203f16565b336000908152600460205260409020556001546113f4908263ffffffff611fdf16565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600254600160a060020a03163314611e85576040805160e560020a62461bcd028152602060048201526021602482015260008051602061220f833981519152604482015260f960020a601702606482015290519081900360840190fd5b600160a060020a03811615801590611eab5750600254600160a060020a03828116911614155b8015611ed45750600160a060020a03811660009081526003602052604090205460ff1615156001145b1515611f76576040805160e560020a62461bcd02815260206004820152604860248201527f4974206d75737420626520746865206578697374696e67206d616e616765722060448201527f77616c6c65742c206e6f7420746865206578697374696e67206f776e6572277360648201527f2077616c6c65742e000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082821115612039576040805160e560020a62461bcd02815260206004820152601960248201527f546865726520617265206d6f726520746f206465647563742e00000000000000604482015290519081900360640190fd5b50900390565b600082820183811015611ac8576040805160e560020a62461bcd02815260206004820152601c60248201527f546865206e756d62657220646964206e6f7420696e6372656173652e00000000604482015290519081900360640190fd5b6000600160a060020a038316158015906120b557508115155b80156120d05750336000908152602081905260409020548211155b1515612172576040805160e560020a62461bcd02815260206004820152604660248201527f506c6561736520636865636b2074686520616d6f756e74206f66207472616e7360448201527f6d697373696f6e206572726f7220616e642074686520616d6f756e7420796f7560648201527f2073656e642e0000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b33600090815260208190526040902054612192908363ffffffff611fdf16565b3360009081526020819052604080822092909255600160a060020a038516815220546121c4908363ffffffff61203f16565b600160a060020a0384166000818152602081815260409182902093909355805185815290519192339260008051602061222f8339815191529281900390910190a35060019291505056004920616d206e6f7420746865206f776e6572206f66207468652077616c6c6574ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058208ad64fb695d9c130c060a2beb3a1ec1121e8b52e546d31877e2ffc2a4ddff5bb0029

Verified Source Code Partial Match

Compiler: v0.4.25+commit.59dbf8f1 EVM: byzantium Optimization: Yes (200 runs)
AsiaModelFestival.sol 292 lines
pragma solidity ^0.4.25;

contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address  to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address  to, uint256 value) public returns (bool);
    function approve(address  spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract DetailedERC20 is ERC20 {
    string public name;
    string public symbol;
    uint8 public decimals;
    
    constructor(string _name, string _symbol, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    event Approval(address indexed owner, address indexed spender, uint256 value);
    mapping(address => uint256)  balances;
    uint256  _totalSupply;
    
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    
    
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0) && _value != 0 &&_value <= balances[msg.sender],"Please check the amount of transmission error and the amount you send.");
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        
        return true;
    }
    
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }
}

contract ERC20Token is BasicToken, ERC20 {
    using SafeMath for uint256;
    event Approval(address indexed owner, address indexed spender, uint256 value);
    mapping (address => mapping (address => uint256))  allowed;
    mapping (address => uint256) public freezeOf;

    function approve(address _spender, uint256 _value) public returns (bool) {
        
        require(_value == 0 || allowed[msg.sender][_spender] == 0,"Please check the amount you want to approve.");
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    function increaseApproval(address _spender, uint256 _addedValue) public returns (bool success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    
    function decreaseApproval(address _spender, uint256 _subtractedValue) public returns (bool success) {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue >= oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}

contract Ownable {
    
    address public owner;
    mapping (address => bool) public admin;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() public {
        owner = msg.sender;
    }
    
    modifier onlyOwner() {
        require(msg.sender == owner,"I am not the owner of the wallet.");
        _;
    }
    
    modifier onlyOwnerOrAdmin() {
        require(msg.sender == owner || admin[msg.sender] == true,"It is not the owner or manager wallet address.");
        _;
    }
    
    function transferOwnership(address newOwner) onlyOwner public {
        require(newOwner != address(0) && newOwner != owner && admin[newOwner] == true,"It must be the existing manager wallet, not the existing owner's wallet.");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
    
    function setAdmin(address newAdmin) onlyOwner public {
        require(admin[newAdmin] != true && owner != newAdmin,"It is not an existing administrator wallet, and it must not be the owner wallet of the token.");
        admin[newAdmin] = true;
    }
    
    function unsetAdmin(address Admin) onlyOwner public {
        require(admin[Admin] != false && owner != Admin,"This is an existing admin wallet, it must not be a token holder wallet.");
        admin[Admin] = false;
    }

}

contract Pausable is Ownable {
    event Pause();
    event Unpause();
    bool public paused = false;
    
    modifier whenNotPaused() {
        require(!paused,"There is a pause.");
        _;
    }
    
    modifier whenPaused() {
        require(paused,"It is not paused.");
        _;
    }
    
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }
    
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }

}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {return 0; }	
        uint256 c = a * b;
        require(c / a == b,"An error occurred in the calculation process");
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b !=0,"The number you want to divide must be non-zero.");
        uint256 c = a / b;
        require(c * b == a,"An error occurred in the calculation process");
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a,"There are more to deduct.");
        return a - b;
    }
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a,"The number did not increase.");
        return c;
    }
}

contract BurnableToken is BasicToken, Ownable {
    
    event Burn(address indexed burner, uint256 amount);

    function burn(uint256 _value) onlyOwner public {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Burn(msg.sender, _value);
        emit Transfer(msg.sender, address(0), _value);
    }  
}

contract FreezeToken is BasicToken, Ownable {
    
    event Freezen(address indexed freezer, uint256 amount);
    event UnFreezen(address indexed freezer, uint256 amount);
    mapping (address => uint256) freezeOf;
    
    function freeze(uint256 _value) onlyOwner public {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        freezeOf[msg.sender] = freezeOf[msg.sender].add(_value);
        _totalSupply = _totalSupply.sub(_value);
        emit Freezen(msg.sender, _value);
    }
    
    function unfreeze(uint256 _value) onlyOwner public {
        require(freezeOf[msg.sender] >= _value,"The number to be processed is more than the total amount and the number currently frozen.");
        balances[msg.sender] = balances[msg.sender].add(_value);
        freezeOf[msg.sender] = freezeOf[msg.sender].sub(_value);
        _totalSupply = _totalSupply.add(_value);
        emit Freezen(msg.sender, _value);
    }
}


contract AsiaModelFestival is BurnableToken,FreezeToken, DetailedERC20, ERC20Token,Pausable{
    using SafeMath for uint256;
    
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event LockerChanged(address indexed owner, uint256 amount);
    mapping(address => uint) locker;
    

    uint8  private _decimals = 18;    
    uint256 public constant TOTAL_SUPPLY = 40 * (10**8) * (10**18);

    constructor() DetailedERC20("Asia Model Festival", "AMF", 18) public {
        _totalSupply = TOTAL_SUPPLY;
        balances[msg.sender] = TOTAL_SUPPLY;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    
    
    function transfer(address _to, uint256 _value)  public whenNotPaused returns (bool){
        require(balances[msg.sender].sub(_value) >= locker[msg.sender],"Attempting to send more than the locked number");
        return super.transfer(_to, _value);
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool){
    
        require(_to > address(0) && _from > address(0),"Please check the address" );
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value,"Please check the amount of transmission error and the amount you send.");
        require(balances[_from].sub(_value) >= locker[_from],"Attempting to send more than the locked number" );
        
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        
        emit Transfer(_from, _to, _value);
        
        return true;
        
    }
    
    function lockOf(address _address) public view returns (uint256 _locker) {
        return locker[_address];
    }
    
    function setLock(address _address, uint256 _value) public onlyOwnerOrAdmin {
        require(_value <= _totalSupply &&_address != address(0),"It is the first wallet or attempted to lock an amount greater than the total holding.");
        locker[_address] = _value;
        emit LockerChanged(_address, _value);
    }
    function setLockList(address[] _recipients, uint256[] _balances) public onlyOwnerOrAdmin{
        require(_recipients.length == _balances.length,"The number of wallet arrangements and the number of amounts are different.");
        
        for (uint i=0; i < _recipients.length; i++) {
            require(_recipients[i] != address(0),'Please check the address');
            
            locker[_recipients[i]] = _balances[i];
            emit LockerChanged(_recipients[i], _balances[i]);
        }
    }
    
  
    function transferList(address[] _recipients, uint256[] _balances) public onlyOwnerOrAdmin{
        require(_recipients.length == _balances.length,"The number of wallet arrangements and the number of amounts are different.");
        
        for (uint i=0; i < _recipients.length; i++) {
            balances[msg.sender] = balances[msg.sender].sub(_balances[i]);
            balances[_recipients[i]] = balances[_recipients[i]].add(_balances[i]);
            emit Transfer(msg.sender,_recipients[i],_balances[i]);
        }
    }
    
 
    function() public payable {
        revert();
    }
}

Read Contract

TOTAL_SUPPLY 0x902d55a5 → uint256
admin 0x63a846f8 → bool
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
freezeOf 0xcd4217c1 → uint256
lockOf 0x5a46d3b5 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
paused 0x5c975abb → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 16 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
burn 0x42966c68
uint256 _value
decreaseApproval 0x66188463
address _spender
uint256 _subtractedValue
returns: bool
freeze 0xd7a78db8
uint256 _value
increaseApproval 0xd73dd623
address _spender
uint256 _addedValue
returns: bool
pause 0x8456cb59
No parameters
setAdmin 0x704b6c02
address newAdmin
setLock 0xb0fc29e6
address _address
uint256 _value
setLockList 0x1d539764
address[] _recipients
uint256[] _balances
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
transferList 0x859bc2f3
address[] _recipients
uint256[] _balances
transferOwnership 0xf2fde38b
address newOwner
unfreeze 0x6623fc46
uint256 _value
unpause 0x3f4ba83a
No parameters
unsetAdmin 0x4d253b50
address Admin

Recent Transactions

This address has 1 on-chain transactions, but only 1.2% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →