ETH Price: $3,181.80 (+5.09%)

Token

S3 COIN (S3C)
 

Overview

Max Total Supply

321,506,757.3347332 S3C

Holders

6,572

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 S3C

Value
$0.00
0x26365712f2ef550da2791618e527da21439cbcc3
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
S3Coin

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 7 of 9: S3Coin.sol
pragma solidity ^0.5.0;

import "./S3Stake.sol";
import "./ERC20Capped.sol";
import "./ERC20Mintable.sol";

contract S3Coin is ERC20Capped {
    using SafeMath for uint256;

    string public name = "S3 COIN";
    string public symbol = "S3C";
    uint8 public decimals = 18;

    // stake contract addresses
    uint32 private _stakeCount = 0;
    uint256 private _stakeTotal = 0;

    mapping (uint32 => address) private _stakes;

    // NewStake event
    event NewStake(address indexed account);


    /**
     * - cap: 1000000000000000000000000000 (1 bil)
     * - init: 300000000000000000000000000 (3 mil)
     */
    constructor (uint256 cap, uint256 init) public ERC20Capped(cap) {
        require(cap > 1000000000000000000, "S3Coin: cap must greater than 10^18");

        // mint to sender init tokens
        mint(msg.sender, init);
    }

    /**
     * Requirements:
     * - the caller must have the `StakerRole`.
     *
     * return new stake address.
     */
    function stake(uint32 id, address beneficiary, uint256 amount, uint256 releaseAmount, uint32 releaseTime)
        public onlyMinter returns (address) {
        require(_stakes[id] == address(0), "S3Coin: stake with ID already exist");
        require(balanceOf(msg.sender) >= amount, "S3Coin: there is not enough tokens to stake");
        require(amount >= releaseAmount, "S3Coin: there is not enough tokens to stake");

        // create new stake
        S3Stake newStake = new S3Stake(S3Coin(address(this)), beneficiary, releaseAmount, releaseTime);

        emit NewStake(address(newStake));

        // transfer amount of token to stake address
        require(transfer(address(newStake), amount), "S3Coin: transfer tokens to new stake failed");

        // update data
        _stakeCount += 1;
        _stakeTotal = _stakeTotal.add(amount);
        _stakes[id] = address(newStake);

        return _stakes[id];
    }

    /**
     * Get a stake contract address.
     */
    function stakeAddress(uint32 id) public view returns (address) {
        return _stakes[id];
    }

    /**
     * Get number of stakes.
     */
    function stakeCount() public view returns (uint) {
        return _stakeCount;
    }

    /**
     * Get total tokens were staked.
     */
    function stakeTotal() public view returns (uint256) {
        return _stakeTotal;
    }

}

File 1 of 9: ERC20.sol
pragma solidity ^0.5.0;

import "./IERC20.sol";
import "./SafeMath.sol";

/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    /**
     * @dev See `IERC20.totalSupply`.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IERC20.balanceOf`.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    // function _burn(address account, uint256 value) internal {
    //     require(account != address(0), "ERC20: burn from the zero address");

    //     _totalSupply = _totalSupply.sub(value);
    //     _balances[account] = _balances[account].sub(value);
    //     emit Transfer(account, address(0), value);
    // }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    // function _burnFrom(address account, uint256 amount) internal {
    //     _burn(account, amount);
    //     _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    // }
}

File 2 of 9: ERC20Capped.sol
pragma solidity ^0.5.0;

import "./ERC20Mintable.sol";

/**
 * @dev Extension of `ERC20Mintable` that adds a cap to the supply of tokens.
 */
contract ERC20Capped is ERC20Mintable {
    uint256 private _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor (uint256 cap) public {
        require(cap > 0, "ERC20Capped: cap is 0");
        _cap = cap;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @dev See `ERC20Mintable.mint`.
     *
     * Requirements:
     *
     * - `value` must not cause the total supply to go over the cap.
     */
    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _cap, "ERC20Capped: cap exceeded");
        super._mint(account, value);
    }
}

File 3 of 9: ERC20Mintable.sol
pragma solidity ^0.5.0;

import "./ERC20.sol";
import "./MinterRole.sol";

/**
 * @dev Extension of `ERC20` that adds a set of accounts with the `MinterRole`,
 * which have permission to mint (create) new tokens as they see fit.
 *
 * At construction, the deployer of the contract is the only minter.
 */
contract ERC20Mintable is ERC20, MinterRole {
    /**
     * @dev See `ERC20._mint`.
     *
     * Requirements:
     *
     * - the caller must have the `MinterRole`.
     */
    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
}

File 4 of 9: IERC20.sol
pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through `transferFrom`. This is
     * zero by default.
     *
     * This value changes when `approve` or `transferFrom` are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * > 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
     *
     * Emits an `Approval` event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to `approve`. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 9: MinterRole.sol
pragma solidity ^0.5.0;

import "./Roles.sol";

contract MinterRole {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(msg.sender);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(msg.sender);
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

File 6 of 9: Roles.sol
pragma solidity ^0.5.0;

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

File 8 of 9: S3Stake.sol
pragma solidity ^0.5.0;

import "./S3Coin.sol";
//import "./SafeMath.sol";
//import "./SafeERC20.sol";


/**
 * @title S3Stake
 * S3Stake is a token stake contract that will allow daily minting
 * to beneficiary, and allow beneficiary to extract the tokens after a given release time.
 */
contract S3Stake /*is TokenTimelock*/ {

    //using SafeMath for uint256;
    //using SafeERC20 for IERC20;

    // ERC20 basic token contract being held
    S3Coin private _token;

    // beneficiary of tokens after they are released
    address private _beneficiary;

    // amount will be release each success call
    uint256 private _releaseAmount;

    // timestamp when token release is enabled
    uint32 private _releaseTime;

    // last given release at (timestamp)
    uint32 private _lastReleaseTime;


    constructor (S3Coin token, address beneficiary, uint256 releaseAmount, uint32 releaseTime) public {
        // solhint-disable-next-line not-rely-on-time
        //require(releaseTime > block.timestamp, "TokenTimelock: release time is before current time");

        _token = token;
        _beneficiary = beneficiary;
        _releaseTime = releaseTime;
        _releaseAmount = releaseAmount;
        _lastReleaseTime = _releaseTime;
    }

    /**
     * @return the token being held.
     */
    function token() public view returns (S3Coin) {
        return _token;
    }

    /**
     * @return the beneficiary of the tokens.
     */
    function beneficiary() public view returns (address) {
        return _beneficiary;
    }

    /**
     * @return the time since then the tokens can be released.
     */
    function releaseTime() public view returns (uint32) {
        return _releaseTime;
    }

    /**
     * @return amount of token can be released a time.
     */
    function releaseAmount() public view returns (uint256) {
        return _releaseAmount;
    }

    /**
     * @return last released time.
     */
    function lastReleaseTime() public view returns (uint32) {
        return _lastReleaseTime;
    }

    /**
     * @return balance of the stake.
     */
    function balance() public view returns (uint256) {
        return _token.balanceOf(address(this));
    }

    /**
     * @notice Transfers tokens held by timelock to beneficiary base on release rate (5%) / week (7 days).
     */
    function release() public returns (bool) {
        uint256 amount = _token.balanceOf(address(this));
        require(amount > 0, "S3Stake: no tokens to release");

        // solhint-disable-next-line not-rely-on-time
        uint lastBlockTime = block.timestamp;

        require(lastBlockTime >= _releaseTime, "S3Stake: current time is before release time");

        // only able to release after each 7-days (7 * 24* 3600 = 604,800)
        uint32 nowReleaseTime = _lastReleaseTime + 604800;
        require(lastBlockTime >= nowReleaseTime, "S3Stake: token is only able to release each week (7 days)");

        // calculate number of tokens to release
        uint256 releasableAmount = (amount > _releaseAmount) ? _releaseAmount : amount;

        // transfer token to beneficiary address
        _token.transfer(_beneficiary, releasableAmount);

        // save release time
        _lastReleaseTime = nowReleaseTime;

        return true;
    }
}

File 9 of 9: SafeMath.sol
pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot 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, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"id","type":"uint32"}],"name":"stakeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"id","type":"uint32"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseAmount","type":"uint256"},{"internalType":"uint32","name":"releaseTime","type":"uint32"}],"name":"stake","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"init","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"NewStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052600760808190527f533320434f494e0000000000000000000000000000000000000000000000000060a090815262000040916005919062000668565b506040805180820190915260038082527f53334300000000000000000000000000000000000000000000000000000000006020909201918252620000879160069162000668565b506007805464ffffffff001960ff199091166012171690556000600855348015620000b157600080fd5b5060405162001ef638038062001ef683398181016040526040811015620000d757600080fd5b50805160209091015181620000f5336001600160e01b03620001e816565b600081116200016557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015290519081900360640190fd5b600455670de0b6b3a76400008211620001ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062001e816023913960400191505060405180910390fd5b620001df33826001600160e01b036200023a16565b5050506200070a565b62000203816003620002c560201b62000f581790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b600062000250336001600160e01b036200036c16565b620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062001ea46030913960400191505060405180910390fd5b620002bc83836001600160e01b036200038f16565b50600192915050565b620002da82826001600160e01b036200044716565b156200034757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000620003898260036200044760201b62000e011790919060201c565b92915050565b600454620003be82620003aa6001600160e01b03620004ca16565b620004d160201b62000c941790919060201c565b11156200042c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6200044382826200054d60201b62000e681760201c565b5050565b60006001600160a01b038216620004aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001ed46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6002545b90565b6000828201838110156200054657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216620005c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620005df81600254620004d160201b62000c941790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200061291839062000c94620004d1821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006ab57805160ff1916838001178555620006db565b82800160010185558215620006db579182015b82811115620006db578251825591602001919060010190620006be565b50620006e9929150620006ed565b5090565b620004ce91905b80821115620006e95760008155600101620006f4565b611767806200071a6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063586c64d2116100ad578063a457c2d711610071578063a457c2d7146103a9578063a9059cbb146103d5578063aa271e1a14610401578063c4a9e11614610427578063dd62ed3e1461042f5761012c565b8063586c64d21461030357806370a082311461034b57806395d89b4114610371578063983b2d561461037957806398650275146103a15761012c565b8063313ce567116100f4578063313ce5671461027d578063355274ea1461029b57806339509351146102a357806340c10f19146102cf5780634b5c8bdf146102fb5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd146102085780632f273fe01461023e575b600080fd5b61013961045d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104eb565b604080519115158252519081900360200190f35b6101f6610501565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b03813581169160208101359091169060400135610507565b6102616004803603602081101561025457600080fd5b503563ffffffff1661055e565b604080516001600160a01b039092168252519081900360200190f35b61028561057f565b6040805160ff9092168252519081900360200190f35b6101f6610588565b6101da600480360360408110156102b957600080fd5b506001600160a01b03813516906020013561058e565b6101da600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356105ca565b6101f661061a565b610261600480360360a081101561031957600080fd5b5063ffffffff81358116916001600160a01b036020820135169160408201359160608101359160809091013516610620565b6101f66004803603602081101561036157600080fd5b50356001600160a01b031661089a565b6101396108b5565b61039f6004803603602081101561038f57600080fd5b50356001600160a01b0316610910565b005b61039f610960565b6101da600480360360408110156103bf57600080fd5b506001600160a01b03813516906020013561096b565b6101da600480360360408110156103eb57600080fd5b506001600160a01b0381351690602001356109a7565b6101da6004803603602081101561041757600080fd5b50356001600160a01b03166109b4565b6101f66109cd565b6101f66004803603604081101561044557600080fd5b506001600160a01b03813581169160200135166109de565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081565b60006104f8338484610a09565b50600192915050565b60025490565b6000610514848484610af5565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461055491869161054f908663ffffffff610c3716565b610a09565b5060019392505050565b63ffffffff166000908152600960205260409020546001600160a01b031690565b60075460ff1681565b60045490565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c9416565b60006105d5336109b4565b6106105760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b6104f88383610cf5565b60085490565b600061062b336109b4565b6106665760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b0316156106c15760405162461bcd60e51b815260040180806020018281038252602381526020018061164f6023913960400191505060405180910390fd5b836106cb3361089a565b10156107085760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b828410156107475760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b60003086858560405161075990611040565b6001600160a01b03948516815292909316602083015260408083019190915263ffffffff9092166060820152905190819003608001906000f0801580156107a4573d6000803e3d6000fd5b506040519091506001600160a01b038216907f46d8ab1385f70e5a3673e97c23c764f7600f7ed7a09b6687deae7131d51752e290600090a26107e681866109a7565b6108215760405162461bcd60e51b815260040180806020018281038252602b8152602001806116dd602b913960400191505060405180910390fd5b6007805463ffffffff610100808304821660010182160264ffffffff001990921691909117909155600854610858918790610c9416565b60085563ffffffff8716600090815260096020526040902080546001600160a01b039283166001600160a01b0319909116179081905516905095945050505050565b6001600160a01b031660009081526020819052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b610919336109b4565b6109545760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b61095d81610d71565b50565b61096933610db9565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c3716565b60006104f8338484610af5565b60006109c760038363ffffffff610e0116565b92915050565b600754610100900463ffffffff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a4e5760405162461bcd60e51b81526004018080602001828103825260248152602001806116b96024913960400191505060405180910390fd5b6001600160a01b038216610a935760405162461bcd60e51b81526004018080602001828103825260228152602001806115dc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610b3a5760405162461bcd60e51b81526004018080602001828103825260258152602001806116946025913960400191505060405180910390fd5b6001600160a01b038216610b7f5760405162461bcd60e51b81526004018080602001828103825260238152602001806115b96023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ba8908263ffffffff610c3716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610bdd908263ffffffff610c9416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610c8e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610cee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600454610d1082610d04610501565b9063ffffffff610c9416565b1115610d63576040805162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610d6d8282610e68565b5050565b610d8260038263ffffffff610f5816565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610dca60038263ffffffff610fd916565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610e485760405162461bcd60e51b81526004018080602001828103825260228152602001806116726022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038216610ec3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ed6908263ffffffff610c9416565b6002556001600160a01b038216600090815260208190526040902054610f02908263ffffffff610c9416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610f628282610e01565b15610fb4576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610fe38282610e01565b61101e5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b61056b8061104e8339019056fe608060405234801561001057600080fd5b5060405161056b38038061056b8339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151600080546001600160a01b039485166001600160a01b031991821617909155600180549490931693169290921790556003805460029390935564010000000063ffffffff92831663ffffffff19909416939093179182169290920263ffffffff60201b199091161790556104ac806100bf6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b91d40011161005b578063b91d4001146100dc578063c062dc5f146100fd578063dfaf734a14610105578063fc0c546a1461010d5761007d565b806338af3eed1461008257806386d1a69f146100a6578063b69ef8a8146100c2575b600080fd5b61008a610115565b604080516001600160a01b039092168252519081900360200190f35b6100ae610124565b604080519115158252519081900360200190f35b6100ca610360565b60408051918252519081900360200190f35b6100e46103dd565b6040805163ffffffff9092168252519081900360200190f35b6100ca6103e9565b6100e46103ef565b61008a610403565b6001546001600160a01b031690565b60008054604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b50519050806101ef576040805162461bcd60e51b815260206004820152601d60248201527f53335374616b653a206e6f20746f6b656e7320746f2072656c65617365000000604482015290519081900360640190fd5b600354429063ffffffff168110156102385760405162461bcd60e51b815260040180806020018281038252602c815260200180610413602c913960400191505060405180910390fd5b60035462093a8063ffffffff6401000000009092048216019081168210156102915760405162461bcd60e51b815260040180806020018281038252603981526020018061043f6039913960400191505060405180910390fd5b600060025484116102a257836102a6565b6002545b600080546001546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955091169263a9059cbb92604480840193602093929083900390910190829087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050506040513d602081101561032d57600080fd5b50506003805463ffffffff9093166401000000000267ffffffff0000000019909316929092179091555060019250505090565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103ac57600080fd5b505afa1580156103c0573d6000803e3d6000fd5b505050506040513d60208110156103d657600080fd5b5051905090565b60035463ffffffff1690565b60025490565b600354640100000000900463ffffffff1690565b6000546001600160a01b03169056fe53335374616b653a2063757272656e742074696d65206973206265666f72652072656c656173652074696d6553335374616b653a20746f6b656e206973206f6e6c792061626c6520746f2072656c656173652065616368207765656b202837206461797329a265627a7a72315820bdd7c6d51db62238f2aabc0dece9a2ba286f3cfc952f33e416a1dba2922f932264736f6c634300050b003245524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c655333436f696e3a207374616b65207769746820494420616c7265616479206578697374526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735333436f696e3a207472616e7366657220746f6b656e7320746f206e6577207374616b65206661696c65645333436f696e3a207468657265206973206e6f7420656e6f75676820746f6b656e7320746f207374616b65a265627a7a723158201fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c64736f6c634300050b00325333436f696e3a20636170206d7573742067726561746572207468616e2031305e31384d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573730000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000f8277896582678ac000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063586c64d2116100ad578063a457c2d711610071578063a457c2d7146103a9578063a9059cbb146103d5578063aa271e1a14610401578063c4a9e11614610427578063dd62ed3e1461042f5761012c565b8063586c64d21461030357806370a082311461034b57806395d89b4114610371578063983b2d561461037957806398650275146103a15761012c565b8063313ce567116100f4578063313ce5671461027d578063355274ea1461029b57806339509351146102a357806340c10f19146102cf5780634b5c8bdf146102fb5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd146102085780632f273fe01461023e575b600080fd5b61013961045d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104eb565b604080519115158252519081900360200190f35b6101f6610501565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b03813581169160208101359091169060400135610507565b6102616004803603602081101561025457600080fd5b503563ffffffff1661055e565b604080516001600160a01b039092168252519081900360200190f35b61028561057f565b6040805160ff9092168252519081900360200190f35b6101f6610588565b6101da600480360360408110156102b957600080fd5b506001600160a01b03813516906020013561058e565b6101da600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356105ca565b6101f661061a565b610261600480360360a081101561031957600080fd5b5063ffffffff81358116916001600160a01b036020820135169160408201359160608101359160809091013516610620565b6101f66004803603602081101561036157600080fd5b50356001600160a01b031661089a565b6101396108b5565b61039f6004803603602081101561038f57600080fd5b50356001600160a01b0316610910565b005b61039f610960565b6101da600480360360408110156103bf57600080fd5b506001600160a01b03813516906020013561096b565b6101da600480360360408110156103eb57600080fd5b506001600160a01b0381351690602001356109a7565b6101da6004803603602081101561041757600080fd5b50356001600160a01b03166109b4565b6101f66109cd565b6101f66004803603604081101561044557600080fd5b506001600160a01b03813581169160200135166109de565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081565b60006104f8338484610a09565b50600192915050565b60025490565b6000610514848484610af5565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461055491869161054f908663ffffffff610c3716565b610a09565b5060019392505050565b63ffffffff166000908152600960205260409020546001600160a01b031690565b60075460ff1681565b60045490565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c9416565b60006105d5336109b4565b6106105760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b6104f88383610cf5565b60085490565b600061062b336109b4565b6106665760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b0316156106c15760405162461bcd60e51b815260040180806020018281038252602381526020018061164f6023913960400191505060405180910390fd5b836106cb3361089a565b10156107085760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b828410156107475760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b60003086858560405161075990611040565b6001600160a01b03948516815292909316602083015260408083019190915263ffffffff9092166060820152905190819003608001906000f0801580156107a4573d6000803e3d6000fd5b506040519091506001600160a01b038216907f46d8ab1385f70e5a3673e97c23c764f7600f7ed7a09b6687deae7131d51752e290600090a26107e681866109a7565b6108215760405162461bcd60e51b815260040180806020018281038252602b8152602001806116dd602b913960400191505060405180910390fd5b6007805463ffffffff610100808304821660010182160264ffffffff001990921691909117909155600854610858918790610c9416565b60085563ffffffff8716600090815260096020526040902080546001600160a01b039283166001600160a01b0319909116179081905516905095945050505050565b6001600160a01b031660009081526020819052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b610919336109b4565b6109545760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b61095d81610d71565b50565b61096933610db9565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c3716565b60006104f8338484610af5565b60006109c760038363ffffffff610e0116565b92915050565b600754610100900463ffffffff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a4e5760405162461bcd60e51b81526004018080602001828103825260248152602001806116b96024913960400191505060405180910390fd5b6001600160a01b038216610a935760405162461bcd60e51b81526004018080602001828103825260228152602001806115dc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610b3a5760405162461bcd60e51b81526004018080602001828103825260258152602001806116946025913960400191505060405180910390fd5b6001600160a01b038216610b7f5760405162461bcd60e51b81526004018080602001828103825260238152602001806115b96023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ba8908263ffffffff610c3716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610bdd908263ffffffff610c9416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610c8e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610cee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600454610d1082610d04610501565b9063ffffffff610c9416565b1115610d63576040805162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610d6d8282610e68565b5050565b610d8260038263ffffffff610f5816565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610dca60038263ffffffff610fd916565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610e485760405162461bcd60e51b81526004018080602001828103825260228152602001806116726022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038216610ec3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ed6908263ffffffff610c9416565b6002556001600160a01b038216600090815260208190526040902054610f02908263ffffffff610c9416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610f628282610e01565b15610fb4576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610fe38282610e01565b61101e5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b61056b8061104e8339019056fe608060405234801561001057600080fd5b5060405161056b38038061056b8339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151600080546001600160a01b039485166001600160a01b031991821617909155600180549490931693169290921790556003805460029390935564010000000063ffffffff92831663ffffffff19909416939093179182169290920263ffffffff60201b199091161790556104ac806100bf6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b91d40011161005b578063b91d4001146100dc578063c062dc5f146100fd578063dfaf734a14610105578063fc0c546a1461010d5761007d565b806338af3eed1461008257806386d1a69f146100a6578063b69ef8a8146100c2575b600080fd5b61008a610115565b604080516001600160a01b039092168252519081900360200190f35b6100ae610124565b604080519115158252519081900360200190f35b6100ca610360565b60408051918252519081900360200190f35b6100e46103dd565b6040805163ffffffff9092168252519081900360200190f35b6100ca6103e9565b6100e46103ef565b61008a610403565b6001546001600160a01b031690565b60008054604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b50519050806101ef576040805162461bcd60e51b815260206004820152601d60248201527f53335374616b653a206e6f20746f6b656e7320746f2072656c65617365000000604482015290519081900360640190fd5b600354429063ffffffff168110156102385760405162461bcd60e51b815260040180806020018281038252602c815260200180610413602c913960400191505060405180910390fd5b60035462093a8063ffffffff6401000000009092048216019081168210156102915760405162461bcd60e51b815260040180806020018281038252603981526020018061043f6039913960400191505060405180910390fd5b600060025484116102a257836102a6565b6002545b600080546001546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955091169263a9059cbb92604480840193602093929083900390910190829087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050506040513d602081101561032d57600080fd5b50506003805463ffffffff9093166401000000000267ffffffff0000000019909316929092179091555060019250505090565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103ac57600080fd5b505afa1580156103c0573d6000803e3d6000fd5b505050506040513d60208110156103d657600080fd5b5051905090565b60035463ffffffff1690565b60025490565b600354640100000000900463ffffffff1690565b6000546001600160a01b03169056fe53335374616b653a2063757272656e742074696d65206973206265666f72652072656c656173652074696d6553335374616b653a20746f6b656e206973206f6e6c792061626c6520746f2072656c656173652065616368207765656b202837206461797329a265627a7a72315820bdd7c6d51db62238f2aabc0dece9a2ba286f3cfc952f33e416a1dba2922f932264736f6c634300050b003245524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c655333436f696e3a207374616b65207769746820494420616c7265616479206578697374526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735333436f696e3a207472616e7366657220746f6b656e7320746f206e6577207374616b65206661696c65645333436f696e3a207468657265206973206e6f7420656e6f75676820746f6b656e7320746f207374616b65a265627a7a723158201fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c64736f6c634300050b0032

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

0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000f8277896582678ac000000

-----Decoded View---------------
Arg [0] : cap (uint256): 1000000000000000000000000000
Arg [1] : init (uint256): 300000000000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 000000000000000000000000000000000000000000f8277896582678ac000000


Deployed Bytecode Sourcemap

114:2314:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;114:2314:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;187:30;;;:::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;187:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2444:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2444:145:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1505:89;;;:::i;:::-;;;;;;;;;;;;;;;;3046:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3046:252:0;;;;;;;;;;;;;;;;;:::i;2028:100:6:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2028:100:6;;;;:::i;:::-;;;;-1:-1:-1;;;;;2028:100:6;;;;;;;;;;;;;;259:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;537:73:1;;;:::i;3693:203:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3693:203:0;;;;;;;;:::i;485:140:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;485:140:2;;;;;;;;:::i;2334:89:6:-;;;:::i;1020:944::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1020:944:6;;;;;;-1:-1:-1;;;;;1020:944:6;;;;;;;;;;;;;;;;;;;;;;;:::i;1652:108:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1652:108:0;-1:-1:-1;;;;;1652:108:0;;:::i;224:28:6:-;;;:::i;559:90:4:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;559:90:4;-1:-1:-1;;;;;559:90:4;;:::i;:::-;;655:75;;;:::i;4383:213:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4383:213:0;;;;;;;;:::i;1963:153::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1963:153:0;;;;;;;;:::i;446:107:4:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;446:107:4;-1:-1:-1;;;;;446:107:4;;:::i;2184:86:6:-;;;:::i;2174:132:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2174:132:0;;;;;;;;;;:::i;187:30:6:-;;;;;;;;;;;;;;;-1:-1:-1;;187:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2444:145:0:-;2509:4;2525:36;2534:10;2546:7;2555:5;2525:8;:36::i;:::-;-1:-1:-1;2578:4:0;2444:145;;;;:::o;1505:89::-;1575:12;;1505:89;:::o;3046:252::-;3135:4;3151:36;3161:6;3169:9;3180:6;3151:9;:36::i;:::-;-1:-1:-1;;;;;3226:19:0;;;;;;:11;:19;;;;;;;;3214:10;3226:31;;;;;;;;;3197:73;;3206:6;;3226:43;;3262:6;3226:43;:35;:43;:::i;:::-;3197:8;:73::i;:::-;-1:-1:-1;3287:4:0;3046:252;;;;;:::o;2028:100:6:-;2109:11;;2082:7;2109:11;;;:7;:11;;;;;;-1:-1:-1;;;;;2109:11:6;;2028:100::o;259:26::-;;;;;;:::o;537:73:1:-;599:4;;537:73;:::o;3693:203:0:-;3798:10;3773:4;3819:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;3819:32:0;;;;;;;;;;3773:4;;3789:79;;3810:7;;3819:48;;3856:10;3819:48;:36;:48;:::i;485:140:2:-;559:4;349:20:4;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;575:22:2;581:7;590:6;575:5;:22::i;2334:89:6:-;2404:11;;2334:89;:::o;1020:944::-;1162:7;349:20:4;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:11:6;;;1213:1;1190:11;;;:7;:11;;;;;;-1:-1:-1;;;;;1190:11:6;:25;1182:73;;;;-1:-1:-1;;;1182:73:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1299:6;1274:21;1284:10;1274:9;:21::i;:::-;:31;;1266:87;;;;-1:-1:-1;;;1266:87:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:13;1372:6;:23;;1364:79;;;;-1:-1:-1;;;1364:79:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1485:16;1531:4;1539:11;1552:13;1567:11;1504:75;;;;;:::i;:::-;-1:-1:-1;;;;;1504:75:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1504:75:6;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1597:27:6;;1485:94;;-1:-1:-1;;;;;;1597:27:6;;;;;;;;1699:35;1716:8;1727:6;1699:8;:35::i;:::-;1691:91;;;;-1:-1:-1;;;1691:91:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:11;:16;;;;;;;;;1834:1;1819:16;;;;-1:-1:-1;;1819:16:6;;;;;;;;;;1860:11;;:23;;1876:6;;1860:15;:23;:::i;:::-;1846:11;:37;1894:11;;;;;;;:7;:11;;;;;:31;;-1:-1:-1;;;;;1894:31:6;;;-1:-1:-1;;;;;;1894:31:6;;;;;;;;1945:11;;-1:-1:-1;1020:944:6;;;;;;;:::o;1652:108:0:-;-1:-1:-1;;;;;1735:18:0;1709:7;1735:18;;;;;;;;;;;;1652:108::o;224:28:6:-;;;;;;;;;;;;;;;-1:-1:-1;;224:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;559:90:4;349:20;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;623:19;634:7;623:10;:19::i;:::-;559:90;:::o;655:75::-;698:25;712:10;698:13;:25::i;:::-;655:75::o;4383:213:0:-;4493:10;4468:4;4514:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4514:32:0;;;;;;;;;;4468:4;;4484:84;;4505:7;;4514:53;;4551:15;4514:53;:36;:53;:::i;1963:153::-;2032:4;2048:40;2058:10;2070:9;2081:6;2048:9;:40::i;446:107:4:-;502:4;525:21;:8;538:7;525:21;:12;:21;:::i;:::-;518:28;446:107;-1:-1:-1;;446:107:4:o;2184:86:6:-;2251:11;;;;;;;;2184:86::o;2174:132:0:-;-1:-1:-1;;;;;2272:18:0;;;2246:7;2272:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2174:132::o;7126:329::-;-1:-1:-1;;;;;7218:19:0;;7210:68;;;;-1:-1:-1;;;7210:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7296:21:0;;7288:68;;;;-1:-1:-1;;;7288:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7367:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;7417:31;;;;;;;;;;;;;;;;;7126:329;;;:::o;5070:422::-;-1:-1:-1;;;;;5167:20:0;;5159:70;;;;-1:-1:-1;;;5159:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5247:23:0;;5239:71;;;;-1:-1:-1;;;5239:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5341:17:0;;:9;:17;;;;;;;;;;;:29;;5363:6;5341:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;5321:17:0;;;:9;:17;;;;;;;;;;;:49;;;;5403:20;;;;;;;:32;;5428:6;5403:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5380:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;5450:35;;;;;;;5380:20;;5450:35;;;;;;;;;;;;;5070:422;;;:::o;1274:179:8:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:8;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:8:o;774:180:1:-;876:4;;848:24;866:5;848:13;:11;:13::i;:::-;:17;:24;:17;:24;:::i;:::-;:32;;840:70;;;;;-1:-1:-1;;;840:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;920:27;932:7;941:5;920:11;:27::i;:::-;774:180;;:::o;736:119:4:-;792:21;:8;805:7;792:21;:12;:21;:::i;:::-;828:20;;-1:-1:-1;;;;;828:20:4;;;;;;;;736:119;:::o;861:127::-;920:24;:8;936:7;920:24;:15;:24;:::i;:::-;959:22;;-1:-1:-1;;;;;959:22:4;;;;;;;;861:127;:::o;779:200:5:-;851:4;-1:-1:-1;;;;;875:21:5;;867:68;;;;-1:-1:-1;;;867:68:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:5;:11;:20;;;;;;;;;;;;;;;779:200::o;5762:302:0:-;-1:-1:-1;;;;;5837:21:0;;5829:65;;;;;-1:-1:-1;;;5829:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:12;;:24;;5937:6;5920:24;:16;:24;:::i;:::-;5905:12;:39;-1:-1:-1;;;;;5975:18:0;;:9;:18;;;;;;;;;;;:30;;5998:6;5975:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;5954:18:0;;:9;:18;;;;;;;;;;;:51;;;;6020:37;;;;;;;5954:18;;:9;;6020:37;;;;;;;;;;5762:302;;:::o;260:175:5:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:5;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;-1:-1:-1;;;581:64:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:20:5;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:5;;;510:180::o;114:2314:6:-;;;;;;;;:::o

Swarm Source

bzzr://1fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.