Address Contract Partially Verified
Address
0xFe69bc0920Fb63c5924CfC322dc4a5Cc23d9afED
Balance
0 ETH
Nonce
1
Code Size
3619 bytes
Creator
0xc81A8164...Edf5 at tx 0xc5a0645b...80b5b6
Indexed Transactions
0 (1 on-chain, 0.7% indexed)
Contract Bytecode
3619 bytes
0x60806040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610121578063095ea7b3146101ab57806318160ddd146101e35780631e89d5451461020a57806323b872dd146102985780632ff2e9dc146102c2578063313ce567146102d7578063395093511461030257806340c10f191461032657806342966c681461034a5780634fb2e45d1461036457806370a082311461038557806375829def146103a657806379cc6790146103c75780637d64bcb4146103eb5780638da5cb5b1461040057806395d89b4114610431578063a457c2d714610446578063a9059cbb1461046a578063dd62ed3e1461048e578063f851a440146104b5575b600080fd5b34801561012d57600080fd5b506101366104ca565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610170578181015183820152602001610158565b50505050905090810190601f16801561019d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b757600080fd5b506101cf600160a060020a0360043516602435610560565b604080519115158252519081900360200190f35b3480156101ef57600080fd5b506101f86105de565b60408051918252519081900360200190f35b34801561021657600080fd5b50604080516020600480358082013583810280860185019096528085526101cf95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506105e49650505050505050565b3480156102a457600080fd5b506101cf600160a060020a036004358116906024351660443561065c565b3480156102ce57600080fd5b506101f86106bf565b3480156102e357600080fd5b506102ec6106cf565b6040805160ff9092168252519081900360200190f35b34801561030e57600080fd5b506101cf600160a060020a03600435166024356106d8565b34801561033257600080fd5b506101cf600160a060020a0360043516602435610788565b34801561035657600080fd5b506103626004356107dd565b005b34801561037057600080fd5b50610362600160a060020a0360043516610801565b34801561039157600080fd5b506101f8600160a060020a0360043516610821565b3480156103b257600080fd5b50610362600160a060020a036004351661083c565b3480156103d357600080fd5b50610362600160a060020a036004351660243561085c565b3480156103f757600080fd5b506101cf610881565b34801561040c57600080fd5b50610415610927565b60408051600160a060020a039092168252519081900360200190f35b34801561043d57600080fd5b50610136610936565b34801561045257600080fd5b506101cf600160a060020a0360043516602435610996565b34801561047657600080fd5b506101cf600160a060020a03600435166024356109e1565b34801561049a57600080fd5b506101f8600160a060020a03600435811690602435166109ee565b3480156104c157600080fd5b50610415610a19565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105565780601f1061052b57610100808354040283529160200191610556565b820191906000526020600020905b81548152906001019060200180831161053957829003601f168201915b5050505050905090565b6000600160a060020a038316151561057757600080fd5b336000818152600560209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60035490565b600080600084511180156105f9575082518451145b151561060457600080fd5b5060005b83518110156106525761064a33858381518110151561062357fe5b90602001906020020151858481518110151561063b57fe5b90602001906020020151610a43565b600101610608565b5060019392505050565b600160a060020a0383166000908152600560209081526040808320338452909152812054610690908363ffffffff610b1216565b600160a060020a0385166000908152600560209081526040808320338452909152902055610652848484610a43565b6b033b2e3c9fd0803ce800000081565b60025460ff1690565b6000600160a060020a03831615156106ef57600080fd5b336000908152600560209081526040808320600160a060020a0387168452909152902054610723908363ffffffff610b2916565b336000818152600560209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600754600090600160a060020a031633146107a257600080fd5b60075474010000000000000000000000000000000000000000900460ff16156107ca57600080fd5b6107d48383610b42565b50600192915050565b600754600160a060020a031633146107f457600080fd5b6107fe3382610bee565b50565b600654600160a060020a0316331461081857600080fd5b6107fe81610c99565b600160a060020a031660009081526004602052604090205490565b600654600160a060020a0316331461085357600080fd5b6107fe81610d17565b600754600160a060020a0316331461087357600080fd5b61087d8282610d95565b5050565b600754600090600160a060020a0316331461089b57600080fd5b60075474010000000000000000000000000000000000000000900460ff16156108c357600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fb828d9b5c78095deeeeff2eca2e5d4fe046ce3feb4c99702624a3fd384ad2dbc90600090a150600190565b600654600160a060020a031690565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156105565780601f1061052b57610100808354040283529160200191610556565b6000600160a060020a03831615156109ad57600080fd5b336000908152600560209081526040808320600160a060020a0387168452909152902054610723908363ffffffff610b1216565b60006107d4338484610a43565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600654600090600160a060020a03163314610a3357600080fd5b50600754600160a060020a031690565b600160a060020a0382161515610a5857600080fd5b600160a060020a038316600090815260046020526040902054610a81908263ffffffff610b1216565b600160a060020a038085166000908152600460205260408082209390935590841681522054610ab6908263ffffffff610b2916565b600160a060020a0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008083831115610b2257600080fd5b5050900390565b600082820183811015610b3b57600080fd5b9392505050565b600160a060020a0382161515610b5757600080fd5b600354610b6a908263ffffffff610b2916565b600355600160a060020a038216600090815260046020526040902054610b96908263ffffffff610b2916565b600160a060020a03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a0382161515610c0357600080fd5b600354610c16908263ffffffff610b1216565b600355600160a060020a038216600090815260046020526040902054610c42908263ffffffff610b1216565b600160a060020a0383166000818152600460209081526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600160a060020a0381161515610cae57600080fd5b600654604051600160a060020a038084169216907f8934ce4adea8d9ce0d714d2c22b86790e41b7731c84b926fbbdc1d40ff6533c990600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0381161515610d2c57600080fd5b600754604051600160a060020a038084169216907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0382166000908152600560209081526040808320338452909152902054610dc9908263ffffffff610b1216565b600160a060020a038316600090815260056020908152604080832033845290915290205561087d8282610bee5600a165627a7a72305820209e562b307802b10ee2c81b7e85f16c82b785afd5c9f1a63cbd89021e6efdd50029
Verified Source Code Partial Match
Compiler: v0.4.24+commit.e67f0147
EVM: byzantium
Optimization: Yes (200 runs)
LYZEToken.sol 447 lines
pragma solidity ^0.4.24;
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title SafeMath
* @dev Math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, reverts on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0); // Solidity only automatically asserts when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
/**
* @dev Adds two numbers, reverts on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
/**
* @dev Divides two numbers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
/**
* @title Standard ERC20 token
*
* @dev Implementation of the basic standard token.
* https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
* Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract ERC20 is IERC20 {
using SafeMath for uint256;
string private _name;
string private _symbol;
uint8 private _decimals;
uint256 private _totalSupply;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowed;
constructor(string name, string symbol, uint8 decimals) public {
_name = name;
_symbol = symbol;
_decimals = decimals;
}
/**
* @return the name of the token.
*/
function name() public view returns(string) {
return _name;
}
/**
* @return the symbol of the token.
*/
function symbol() public view returns(string) {
return _symbol;
}
/**
* @return the number of decimals of the token.
*/
function decimals() public view returns(uint8) {
return _decimals;
}
/**
* @dev Total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
/**
* @dev Gets the balance of the specified address.
* @param owner The address to query the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address owner) public view returns (uint256) {
return _balances[owner];
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param owner address The address which owns the funds.
* @param spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address owner, address spender) public view returns (uint256) {
return _allowed[owner][spender];
}
/**
* @dev Transfer token for a specified address
* @param to The address to transfer to.
* @param value The amount to be transferred.
*/
function transfer(address to, uint256 value) public returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
/**
* @dev Transfer tokens from one address to another
* @param from address The address which you want to send tokens from
* @param to address The address which you want to transfer to
* @param value uint256 the amount of tokens to be transferred
*/
function transferFrom(address from, address to, uint256 value) public returns (bool) {
_allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
_transfer(from, to, value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
*/
function approve(address spender, uint256 value) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
* approve should be called when allowed_[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param spender The address which will spend the funds.
* @param addedValue The amount of tokens to increase the allowance by.
*/
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = (
_allowed[msg.sender][spender].add(addedValue));
emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
* approve should be called when allowed_[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param spender The address which will spend the funds.
* @param subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
require(spender != address(0));
_allowed[msg.sender][spender] = (
_allowed[msg.sender][spender].sub(subtractedValue));
emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
return true;
}
/**
* @dev Transfer token for a specified addresses
* @param from The address to transfer from.
* @param to The address to transfer to.
* @param value The amount to be transferred.
*/
function _transfer(address from, address to, uint256 value) internal {
require(to != address(0));
_balances[from] = _balances[from].sub(value);
_balances[to] = _balances[to].add(value);
emit Transfer(from, to, value);
}
/**
* @dev Internal function that mints an amount of the token and assigns it to
* an account. This encapsulates the modification of balances such that the
* proper events are emitted.
* @param account The account that will receive the created tokens.
* @param value The amount that will be created.
*/
function _mint(address account, uint256 value) internal {
require(account != address(0));
_totalSupply = _totalSupply.add(value);
_balances[account] = _balances[account].add(value);
emit Transfer(address(0), account, value);
}
/**
* @dev Internal function that burns an amount of the token of a given
* account.
* @param account The account whose tokens will be burnt.
* @param value The amount that will be burnt.
*/
function _burn(address account, uint256 value) internal {
require(account != address(0));
_totalSupply = _totalSupply.sub(value);
_balances[account] = _balances[account].sub(value);
emit Transfer(account, address(0), value);
}
/**
* @dev Internal function that burns an amount of the token of a given
* account, deducting from the sender's allowance for said account. Uses the
* internal burn function.
* @param account The account whose tokens will be burnt.
* @param value The amount that will be burnt.
*/
function _burnFrom(address account, uint256 value) internal {
// Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
// this function needs to emit an event with the updated approval.
_allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
_burn(account, value);
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address private _owner;
address private _admin;
event OwnerTransferred(address indexed previousOwner, address indexed newOwner);
event AdminTransferred(address indexed previousAdmin, address indexed newAdmin);
/**
* @dev The Ownable constructor sets the original owner and admin of the contract to the sender
* account.
*/
constructor() internal {
_owner = msg.sender;
_admin = msg.sender;
}
/**
* @return the address of the owner.
*/
function owner() public view returns(address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == _owner);
_;
}
/**
* @return the address of the Admin.
*/
function admin() public view onlyOwner returns(address) {
return _admin;
}
/**
* @dev Throws if called by any account other than the Admin.
*/
modifier onlyAdmin() {
require(msg.sender == _admin);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwner(address newOwner) public onlyOwner {
_transferOwner(newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function _transferOwner(address newOwner) internal {
require(newOwner != address(0));
emit OwnerTransferred(_owner, newOwner);
_owner = newOwner;
}
/**
* @dev Allows the current admin to transfer access of the contract mint, burn function to a newAdmin.
* @param newAdmin The address to transfer admin to.
*/
function transferAdmin(address newAdmin) public onlyOwner {
_transferAdmin(newAdmin);
}
/**
* @dev Transfers access of the contract mint, burn function to a newAdmin.
* @param newAdmin The address to transfer admin to.
*/
function _transferAdmin(address newAdmin) internal {
require(newAdmin != address(0));
emit AdminTransferred(_admin, newAdmin);
_admin = newAdmin;
}
}
/**
* @title LYZE Token
* @dev LYZE Token include minting, burning function
*/
contract LYZEToken is ERC20, Ownable {
uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** 18);
/**
* @dev Constructor that gives msg.sender all of existing tokens.
*/
constructor() public ERC20("LYZE Token", "LZE", 18) Ownable() {
_mint(msg.sender, INITIAL_SUPPLY);
}
bool private _mintingFinished = false;
event MintingFinished();
modifier canMint() {
require(!_mintingFinished);
_;
}
/**
* @dev Function to mint tokens
* @param to The address that will receive the minted tokens.
* @param value The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(address to, uint256 value) public onlyAdmin canMint returns (bool) {
_mint(to, value);
return true;
}
function finishMinting() public onlyAdmin canMint returns (bool) {
_mintingFinished = true;
emit MintingFinished();
return true;
}
/**
* @dev Burns a specific amount of tokens.
* @param value The amount of token to be burned.
*/
function burn(uint256 value) public onlyAdmin {
_burn(msg.sender, value);
}
/**
* @dev Burns a specific amount of tokens from the target address and decrements allowance
* @param from address The address which you want to send tokens from
* @param value uint256 The amount of token to be burned
*/
function burnFrom(address from, uint256 value) public onlyAdmin {
_burnFrom(from, value);
}
/**
* @dev Transfer token for a specified address array
* @param tos The address array to transfer to.
* @param values The amount array to be transferred.
*/
function multiTransfer(address[] tos, uint256[] values) public returns (bool) {
require(tos.length>0 && tos.length==values.length);
for (uint256 i = 0; i < tos.length; ++i) {
_transfer(msg.sender, tos[i], values[i]);
}
return true;
}
}
Read Contract
INITIAL_SUPPLY 0x2ff2e9dc → uint256
admin 0xf851a440 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 12 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
burnFrom 0x79cc6790
address from
uint256 value
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
finishMinting 0x7d64bcb4
No parameters
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
mint 0x40c10f19
address to
uint256 value
returns: bool
multiTransfer 0x1e89d545
address[] tos
uint256[] values
returns: bool
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferAdmin 0x75829def
address newAdmin
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwner 0x4fb2e45d
address newOwner
Recent Transactions
This address has 1 on-chain transactions, but only 0.7% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →