Token Chroma

 

Overview [ERC-20]

Price
$0.23 @ 0.000121 Eth (-3.93%)
Fully Diluted Market Cap
Max Total Supply:
562,296,409.423021 CHR

Holders:
11,109 ( 0.036%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Chromia is a relational blockchain designed to make it much easier to make complex and scalable dapps.

Market

Volume (24H):$50,743,364.00
Market Capitalization:$128,246,435.00
Circulating Supply:562,296,409.00 CHR
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Chromia

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-04
*/

/**
 *Submitted for verification at Etherscan.io on 2019-05-27
*/

// Copyright (C) Chromapolis Devcenter OU 2019


// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.2;

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
    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);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.5.2;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, 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 unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 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 unsigned integers, 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 unsigned integers, 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 unsigned integers 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;
    }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.5.2;



/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://eips.ethereum.org/EIPS/eip-20
 * Originally based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 *
 * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
 * all accounts just by listening to said events. Note that this isn't required by the specification, and other
 * compliant implementations may not do it.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowed;

    uint256 private _totalSupply;

    /**
     * @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 A 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 to 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 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) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @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) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][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
     * Emits an Approval event.
     * @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) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][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
     * Emits an Approval event.
     * @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) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        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 Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0));
        require(owner != address(0));

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, 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.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _burn(account, value);
        _approve(account, msg.sender, _allowed[account][msg.sender].sub(value));
    }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol

pragma solidity ^0.5.2;


/**
 * @title ERC20Detailed token
 * @dev The decimals are only for visualization purposes.
 * All the operations are done using the smallest and indivisible token unit,
 * just as on Ethereum all the operations are done in wei.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// File: contracts/token/ERC20/Chromia.sol

// Copyright (C) Chromapolis Devcenter OU 2019

pragma solidity 0.5.8;



contract Chromia is ERC20, ERC20Detailed {
    uint8 public constant DECIMALS = 6;
    address private _minter;
    // one billion tokens with 6 decimals
    uint256 private _cap = 1000000000 * 1000000;

    event MinterSet(address indexed account);
    event TransferToChromia(address indexed from, bytes32 indexed to, uint256 value);
    event TransferFromChromia(address indexed to, bytes32 indexed refID, uint256 value);

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     * @param minter the multi-sig contract address
     */
    constructor(address minter, uint256 initialBalance) public ERC20Detailed("Chroma", "CHR", DECIMALS) {
        _mint(msg.sender, initialBalance);
        _setMinter(minter);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "caller is not a minter");
        _;
    }
    
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @dev Burns a specific amount of tokens and emit transfer event for Chromia
     * @param to The address to transfer to in Chromia.
     * @param value The amount of token to be burned.
     */
    function transferToChromia(bytes32 to, uint256 value) public {
        _burn(msg.sender, value);
        emit TransferToChromia(msg.sender, to, value);
    }

    /**
     * @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 transferFromChromia(address to, uint256 value, bytes32 refID) public onlyMinter returns (bool) {
        _mint(to, value);
        emit TransferFromChromia(to, refID, value);
        return true;
    }
    
    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, value);
    }

    function isMinter(address account) public view returns (bool) {
        return _minter == account;
    }

    function _setMinter(address account) internal {
        _minter = account;
        emit MinterSet(account);
    }
    
    function changeMinter(address newMinter) public onlyMinter {
        _setMinter(newMinter);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"bytes32"},{"name":"value","type":"uint256"}],"name":"transferToChromia","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinter","type":"address"}],"name":"changeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DECIMALS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"refID","type":"bytes32"}],"name":"transferFromChromia","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"minter","type":"address"},{"name":"initialBalance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TransferToChromia","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"refID","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TransferFromChromia","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405266038d7ea4c680006006553480156200001c57600080fd5b5060405160408062000f2d833981018060405260408110156200003e57600080fd5b50805160209182015160408051808201825260068082527f4368726f6d610000000000000000000000000000000000000000000000000000828701908152835180850190945260038085527f43485200000000000000000000000000000000000000000000000000000000009785019790975282519596949592949192620000c892919062000316565b508151620000de90600490602085019062000316565b506005805460ff191660ff9290921691909117905550620001099050338262000122602090811b901c565b6200011a82620001e460201b60201c565b5050620003b8565b620001326200023660201b60201c565b6200015b82620001476200023d60201b60201c565b6200024360201b620009f41790919060201c565b1115620001c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b620001e082826200025d60201b62000a911760201c565b5050565b60058054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f726b590ef91a8c76ad05bbe91a57ef84605276528f49cd47d787f558a4e755b690600090a250565b6006545b90565b60025490565b6000828201838110156200025657600080fd5b9392505050565b6001600160a01b0382166200027157600080fd5b6200028d816002546200024360201b620009f41790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002c0918390620009f462000243821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035957805160ff191683800117855562000389565b8280016001018555821562000389579182015b82811115620003895782518255916020019190600101906200036c565b50620003979291506200039b565b5090565b6200023a91905b80821115620003975760008155600101620003a2565b610b6580620003c86000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063355274ea116100a2578063a457c2d711610071578063a457c2d7146102f0578063a9059cbb1461031c578063aa271e1a14610348578063b57603e51461036e578063dd62ed3e146103a05761010b565b8063355274ea1461028e578063395093511461029657806370a08231146102c257806395d89b41146102e85761010b565b806323b872dd116100de57806323b872dd1461020c5780632c4d4d18146102425780632e0f262514610268578063313ce567146102865761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd5780631f35ec64146101e7575b600080fd5b6101186103ce565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b038135169060200135610464565b604080519115158252519081900360200190f35b6101d561047a565b60408051918252519081900360200190f35b61020a600480360360408110156101fd57600080fd5b5080359060200135610480565b005b6101b96004803603606081101561022257600080fd5b506001600160a01b038135811691602081013590911690604001356104c4565b61020a6004803603602081101561025857600080fd5b50356001600160a01b031661051b565b610270610584565b6040805160ff9092168252519081900360200190f35b610270610589565b6101d5610592565b6101b9600480360360408110156102ac57600080fd5b506001600160a01b038135169060200135610598565b6101d5600480360360208110156102d857600080fd5b50356001600160a01b03166105d4565b6101186105ef565b6101b96004803603604081101561030657600080fd5b506001600160a01b038135169060200135610650565b6101b96004803603604081101561033257600080fd5b506001600160a01b03813516906020013561068c565b6101b96004803603602081101561035e57600080fd5b50356001600160a01b0316610699565b6101b96004803603606081101561038457600080fd5b506001600160a01b0381351690602081013590604001356106b5565b6101d5600480360360408110156103b657600080fd5b506001600160a01b0381358116916020013516610768565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610471338484610793565b50600192915050565b60025490565b61048a338261081b565b604080518281529051839133917ea52c5916d1c00eb8d52b3e40a75956fd2e15339be0d111c44eff45ad0f533e9181900360200190a35050565b60006104d18484846108c2565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461051191869161050c908663ffffffff61098d16565b610793565b5060019392505050565b61052433610699565b6105785760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6572206973206e6f742061206d696e74657200000000000000000000604482015290519081900360640190fd5b610581816109a2565b50565b600681565b60055460ff1690565b60065490565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161047191859061050c908663ffffffff6109f416565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561045a5780601f1061042f5761010080835404028352916020019161045a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161047191859061050c908663ffffffff61098d16565b60006104713384846108c2565b60055461010090046001600160a01b0390811690821614919050565b60006106c033610699565b6107145760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6572206973206e6f742061206d696e74657200000000000000000000604482015290519081900360640190fd5b61071e8484610a0d565b60408051848152905183916001600160a01b038716917f7b8b4d473e148a23a96bf4ff0dddf156a76854397f7b206c1ed0185f24f5598f9181900360200190a35060019392505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0382166107a657600080fd5b6001600160a01b0383166107b957600080fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03821661082e57600080fd5b600254610841908263ffffffff61098d16565b6002556001600160a01b03821660009081526020819052604090205461086d908263ffffffff61098d16565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b0382166108d557600080fd5b6001600160a01b0383166000908152602081905260409020546108fe908263ffffffff61098d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610933908263ffffffff6109f416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561099c57600080fd5b50900390565b60058054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f726b590ef91a8c76ad05bbe91a57ef84605276528f49cd47d787f558a4e755b690600090a250565b600082820183811015610a0657600080fd5b9392505050565b610a15610592565b610a2d82610a2161047a565b9063ffffffff6109f416565b1115610a835760408051600160e51b62461bcd02815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610a8d8282610a91565b5050565b6001600160a01b038216610aa457600080fd5b600254610ab7908263ffffffff6109f416565b6002556001600160a01b038216600090815260208190526040902054610ae3908263ffffffff6109f416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505056fea165627a7a7230582050a1d6e08ee19b18063e8e283b2f39d2e3bd161a749b21a4469691e7e98413e900290000000000000000000000008708e8756f1202bc1760098cfc1c1bfa8306ca0d0000000000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008708e8756f1202bc1760098cfc1c1bfa8306ca0d0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : minter (address): 0x8708e8756f1202bc1760098cfc1c1bfa8306ca0d
Arg [1] : initialBalance (uint256): 0

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008708e8756f1202bc1760098cfc1c1bfa8306ca0d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

12050:2364:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12050:2364:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11518:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11518:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5766:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5766:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3919:91;;;:::i;:::-;;;;;;;;;;;;;;;;13237:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13237:160:0;;;;;;;:::i;:::-;;6387:228;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6387:228:0;;;;;;;;;;;;;;;;;:::i;14312:99::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14312:99:0;-1:-1:-1;;;;;14312:99:0;;:::i;12098:34::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11834:83;;;:::i;12941:75::-;;;:::i;7141:203::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7141:203:0;;;;;;;;:::i;4229:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4229:106:0;-1:-1:-1;;;;;4229:106:0;;:::i;11668:87::-;;;:::i;7875:213::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7875:213:0;;;;;;;;:::i;4979:140::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4979:140:0;;;;;;;;:::i;14070:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14070:106:0;-1:-1:-1;;;;;14070:106:0;;:::i;13652:214::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13652:214:0;;;;;;;;;;;;;:::i;4674:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4674:131:0;;;;;;;;;;:::i;11518:83::-;11588:5;11581:12;;;;;;;;-1:-1:-1;;11581:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11555:13;;11581:12;;11588:5;;11581:12;;11588:5;11581:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11518:83;:::o;5766:148::-;5831:4;5848:36;5857:10;5869:7;5878:5;5848:8;:36::i;:::-;-1:-1:-1;5902:4:0;5766:148;;;;:::o;3919:91::-;3990:12;;3919:91;:::o;13237:160::-;13309:24;13315:10;13327:5;13309;:24::i;:::-;13349:40;;;;;;;;13379:2;;13367:10;;13349:40;;;;;;;;;13237:160;;:::o;6387:228::-;6466:4;6483:26;6493:4;6499:2;6503:5;6483:9;:26::i;:::-;-1:-1:-1;;;;;6547:14:0;;;;;;:8;:14;;;;;;;;6535:10;6547:26;;;;;;;;;6520:65;;6529:4;;6547:37;;6578:5;6547:37;:30;:37;:::i;:::-;6520:8;:65::i;:::-;-1:-1:-1;6603:4:0;6387:228;;;;;:::o;14312:99::-;12862:20;12871:10;12862:8;:20::i;:::-;12854:55;;;;;-1:-1:-1;;;;;12854:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14382:21;14393:9;14382:10;:21::i;:::-;14312:99;:::o;12098:34::-;12131:1;12098:34;:::o;11834:83::-;11900:9;;;;11834:83;:::o;12941:75::-;13004:4;;12941:75;:::o;7141:203::-;7247:10;7221:4;7268:20;;;:8;:20;;;;;;;;-1:-1:-1;;;;;7268:29:0;;;;;;;;;;7221:4;;7238:76;;7259:7;;7268:45;;7302:10;7268:45;:33;:45;:::i;4229:106::-;-1:-1:-1;;;;;4311:16:0;4284:7;4311:16;;;;;;;;;;;;4229:106::o;11668:87::-;11740:7;11733:14;;;;;;;;-1:-1:-1;;11733:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11707:13;;11733:14;;11740:7;;11733:14;;11740:7;11733:14;;;;;;;;;;;;;;;;;;;;;;;;7875:213;7986:10;7960:4;8007:20;;;:8;:20;;;;;;;;-1:-1:-1;;;;;8007:29:0;;;;;;;;;;7960:4;;7977:81;;7998:7;;8007:50;;8041:15;8007:50;:33;:50;:::i;4979:140::-;5040:4;5057:32;5067:10;5079:2;5083:5;5057:9;:32::i;14070:106::-;14150:7;;;;;-1:-1:-1;;;;;14150:7:0;;;:18;;;;14070:106;;;:::o;13652:214::-;13750:4;12862:20;12871:10;12862:8;:20::i;:::-;12854:55;;;;;-1:-1:-1;;;;;12854:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13767:16;13773:2;13777:5;13767;:16::i;:::-;13799:37;;;;;;;;13823:5;;-1:-1:-1;;;;;13799:37:0;;;;;;;;;;;;-1:-1:-1;13854:4:0;13652:214;;;;;:::o;4674:131::-;-1:-1:-1;;;;;4773:15:0;;;4746:7;4773:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;4674:131::o;9974:254::-;-1:-1:-1;;;;;10067:21:0;;10059:30;;;;;;-1:-1:-1;;;;;10108:19:0;;10100:28;;;;;;-1:-1:-1;;;;;10141:15:0;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;10189:31;;;;;;;;;;;;;;;;;9974:254;;;:::o;9432:269::-;-1:-1:-1;;;;;9507:21:0;;9499:30;;;;;;9557:12;;:23;;9574:5;9557:23;:16;:23;:::i;:::-;9542:12;:38;-1:-1:-1;;;;;9612:18:0;;:9;:18;;;;;;;;;;;:29;;9635:5;9612:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;9591:18:0;;:9;:18;;;;;;;;;;;:50;;;;9657:36;;;;;;;9591:9;;9657:36;;;;;;;;;;;9432:269;;:::o;8315:262::-;-1:-1:-1;;;;;8403:16:0;;8395:25;;;;;;-1:-1:-1;;;;;8451:15:0;;:9;:15;;;;;;;;;;;:26;;8471:5;8451:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8433:15:0;;;:9;:15;;;;;;;;;;;:44;;;;8504:13;;;;;;;:24;;8522:5;8504:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;8488:13:0;;;:9;:13;;;;;;;;;;;;:40;;;;8544:25;;;;;;;8488:13;;8544:25;;;;;;;;;;;;;8315:262;;;:::o;2285:150::-;2343:7;2376:1;2371;:6;;2363:15;;;;;;-1:-1:-1;2401:5:0;;;2285:150::o;14184:116::-;14241:7;:17;;-1:-1:-1;;;;;;14241:17:0;;-1:-1:-1;;;;;14241:17:0;;;;;;;;;;;;14274:18;;;;-1:-1:-1;;14274:18:0;14184:116;:::o;2523:150::-;2581:7;2613:5;;;2637:6;;;;2629:15;;;;;;2664:1;2523:150;-1:-1:-1;;;2523:150:0:o;13878:184::-;13981:5;:3;:5::i;:::-;13953:24;13971:5;13953:13;:11;:13::i;:::-;:17;:24;:17;:24;:::i;:::-;:33;;13945:71;;;;;-1:-1:-1;;;;;13945:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14027:27;14039:7;14048:5;14027:11;:27::i;:::-;13878:184;;:::o;8929:269::-;-1:-1:-1;;;;;9004:21:0;;8996:30;;;;;;9054:12;;:23;;9071:5;9054:23;:16;:23;:::i;:::-;9039:12;:38;-1:-1:-1;;;;;9109:18:0;;:9;:18;;;;;;;;;;;:29;;9132:5;9109:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;9088:18:0;;:9;:18;;;;;;;;;;;:50;;;;9154:36;;;;;;;9088:18;;:9;;9154:36;;;;;;;;;;8929:269;;:::o

Swarm Source

bzzr://50a1d6e08ee19b18063e8e283b2f39d2e3bd161a749b21a4469691e7e98413e9

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.