Latest 9 txns

TxHash Age From To Value [TxFee]
0xd4119d8b2ec16a2e1a3eed0b8aa28eff9205cf869b636ed96ac4bb9f3a2871f29 days 16 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.00123591
0x13966962af331f18333cb809ec0f921438e6f5244e600dafadf64ea3805ea29410 days 9 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.00123591
0xf494226b66082e69c46617518c7caeadbf65ba7f99071d076493a1ba0cdf9e7f10 days 10 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.000091547
0xa2400591a410332741bf9dd711f174e06feb0d7f590779afb8d0a60bc3bfdac010 days 10 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.000064001
0xd838ad6af0540784e911b466840d16c0c8314b1950777d471603c248f30fe88210 days 10 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.000024339
0xcf3cbeb0679c748bcc669ccd8954631063bfab67340f04293ff074c1308027cb10 days 10 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.000025001
0xbe3cf76f85edcdc283624eae14c5899b08cff941d9c72f2826977edbe3b43c3110 days 10 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.000025001
0x7668db0b29df23e173db0d69611e0f721fd39f2c723061fec790530fd3cc5bbf10 days 22 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN   0x38cf230043803a9b6bee0b2e961e04a26aba84cf0 Ether0.00075003
0xa42a48b6be38f671968569493407fa6f7d0604dfbd1e51e1d84ace3c8ec4c1df11 days 22 hrs ago0xb11a21f4cec2c954df533a16d682de73c423205e  IN    Contract Creation0 Ether0.00896081
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Token
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.23;

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: /home/chris/Projects/token-sale-crypto-api/smart-contracts/node_modules/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @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) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @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 Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// File: contracts/Token.sol

/// @title   Token
/// @author  Jose Perez - <[email protected]>
/// @notice  ERC20 token
/// @dev     The contract allows to perform a number of token sales in different periods in time.
///          allowing participants in previous token sales to transfer tokens to other accounts.
///          Additionally, token locking logic for KYC/AML compliance checking is supported.

contract Token is StandardToken, Ownable {
    using SafeMath for uint256;

    string public constant name = "Nynja";
    string public constant symbol = "NYN";
    uint256 public constant decimals = 18;

    // Using same number of decimal figures as ETH (i.e. 18).
    uint256 public constant TOKEN_UNIT = 10 ** uint256(decimals);

    // Maximum number of tokens in circulation
    uint256 public constant MAX_TOKEN_SUPPLY = 50000000 * TOKEN_UNIT;

    // Maximum number of tokens sales to be performed.
    uint256 public constant MAX_TOKEN_SALES = 1;

    // Maximum size of the batch functions input arrays.
    uint256 public constant MAX_BATCH_SIZE = 400;

    address public assigner;    // The address allowed to assign or mint tokens during token sale.
    address public locker;      // The address allowed to lock/unlock addresses.

    mapping(address => bool) public locked;        // If true, address' tokens cannot be transferred.

    uint256 public currentTokenSaleId = 0;           // The id of the current token sale.
    mapping(address => uint256) public tokenSaleId;  // In which token sale the address participated.

    bool public tokenSaleOngoing = false;

    event TokenSaleStarting(uint indexed tokenSaleId);
    event TokenSaleEnding(uint indexed tokenSaleId);
    event Lock(address indexed addr);
    event Unlock(address indexed addr);
    event Assign(address indexed to, uint256 amount);
    event Mint(address indexed to, uint256 amount);
    event LockerTransferred(address indexed previousLocker, address indexed newLocker);
    event AssignerTransferred(address indexed previousAssigner, address indexed newAssigner);

    /// @dev Constructor that initializes the contract.
    /// @param _assigner The assigner account.
    /// @param _locker The locker account.
    constructor(address _assigner, address _locker) public {
        require(_assigner != address(0));
        require(_locker != address(0));

        assigner = _assigner;
        locker = _locker;
    }

    /// @dev True if a token sale is ongoing.
    modifier tokenSaleIsOngoing() {
        require(tokenSaleOngoing);
        _;
    }

    /// @dev True if a token sale is not ongoing.
    modifier tokenSaleIsNotOngoing() {
        require(!tokenSaleOngoing);
        _;
    }

    /// @dev Throws if called by any account other than the assigner.
    modifier onlyAssigner() {
        require(msg.sender == assigner);
        _;
    }

    /// @dev Throws if called by any account other than the locker.
    modifier onlyLocker() {
        require(msg.sender == locker);
        _;
    }

    /// @dev Starts a new token sale. Only the owner can start a new token sale. If a token sale
    ///      is ongoing, it has to be ended before a new token sale can be started.
    ///      No more than `MAX_TOKEN_SALES` sales can be carried out.
    /// @return True if the operation was successful.
    function tokenSaleStart() external onlyOwner tokenSaleIsNotOngoing returns(bool) {
        require(currentTokenSaleId < MAX_TOKEN_SALES);
        currentTokenSaleId++;
        tokenSaleOngoing = true;
        emit TokenSaleStarting(currentTokenSaleId);
        return true;
    }

    /// @dev Ends the current token sale. Only the owner can end a token sale.
    /// @return True if the operation was successful.
    function tokenSaleEnd() external onlyOwner tokenSaleIsOngoing returns(bool) {
        emit TokenSaleEnding(currentTokenSaleId);
        tokenSaleOngoing = false;
        return true;
    }

    /// @dev Returns whether or not a token sale is ongoing.
    /// @return True if a token sale is ongoing.
    function isTokenSaleOngoing() external view returns(bool) {
        return tokenSaleOngoing;
    }

    /// @dev Getter of the variable `currentTokenSaleId`.
    /// @return Returns the current token sale id.
    function getCurrentTokenSaleId() external view returns(uint256) {
        return currentTokenSaleId;
    }

    /// @dev Getter of the variable `tokenSaleId[]`.
    /// @param _address The address of the participant.
    /// @return Returns the id of the token sale the address participated in.
    function getAddressTokenSaleId(address _address) external view returns(uint256) {
        return tokenSaleId[_address];
    }

    /// @dev Allows the current owner to change the assigner.
    /// @param _newAssigner The address of the new assigner.
    /// @return True if the operation was successful.
    function transferAssigner(address _newAssigner) external onlyOwner returns(bool) {
        require(_newAssigner != address(0));

        emit AssignerTransferred(assigner, _newAssigner);
        assigner = _newAssigner;
        return true;
    }

    /// @dev Function to mint tokens. It can only be called by the assigner during an ongoing token sale.
    /// @param _to The address that will receive the minted tokens.
    /// @param _amount The amount of tokens to mint.
    /// @return A boolean that indicates if the operation was successful.
    function mint(address _to, uint256 _amount) public onlyAssigner tokenSaleIsOngoing returns(bool) {
        totalSupply_ = totalSupply_.add(_amount);
        require(totalSupply_ <= MAX_TOKEN_SUPPLY);

        if (tokenSaleId[_to] == 0) {
            tokenSaleId[_to] = currentTokenSaleId;
        }
        require(tokenSaleId[_to] == currentTokenSaleId);

        balances[_to] = balances[_to].add(_amount);

        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /// @dev Mints tokens for several addresses in one single call.
    /// @param _to address[] The addresses that get the tokens.
    /// @param _amount address[] The number of tokens to be minted.
    /// @return A boolean that indicates if the operation was successful.
    function mintInBatches(address[] _to, uint256[] _amount) external onlyAssigner tokenSaleIsOngoing returns(bool) {
        require(_to.length > 0);
        require(_to.length == _amount.length);
        require(_to.length <= MAX_BATCH_SIZE);

        for (uint i = 0; i < _to.length; i++) {
            mint(_to[i], _amount[i]);
        }
        return true;
    }

    /// @dev Function to assign any number of tokens to a given address.
    ///      Compared to the `mint` function, the `assign` function allows not just to increase but also to decrease
    ///      the number of tokens of an address by assigning a lower value than the address current balance.
    ///      This function can only be executed during initial token sale.
    /// @param _to The address that will receive the assigned tokens.
    /// @param _amount The amount of tokens to assign.
    /// @return True if the operation was successful.
    function assign(address _to, uint256 _amount) public onlyAssigner tokenSaleIsOngoing returns(bool) {
        require(currentTokenSaleId == 1);

        // The desired value to assign (`_amount`) can be either higher or lower than the current number of tokens
        // of the address (`balances[_to]`). To calculate the new `totalSupply_` value, the difference between `_amount`
        // and `balances[_to]` (`delta`) is calculated first, and then added or substracted to `totalSupply_` accordingly.
        uint256 delta = 0;
        if (balances[_to] < _amount) {
            // balances[_to] will be increased, so totalSupply_ should be increased
            delta = _amount.sub(balances[_to]);
            totalSupply_ = totalSupply_.add(delta);
        } else {
            // balances[_to] will be decreased, so totalSupply_ should be decreased
            delta = balances[_to].sub(_amount);
            totalSupply_ = totalSupply_.sub(delta);
        }
        require(totalSupply_ <= MAX_TOKEN_SUPPLY);

        balances[_to] = _amount;
        tokenSaleId[_to] = currentTokenSaleId;

        emit Assign(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /// @dev Assigns tokens to several addresses in one call.
    /// @param _to address[] The addresses that get the tokens.
    /// @param _amount address[] The number of tokens to be assigned.
    /// @return True if the operation was successful.
    function assignInBatches(address[] _to, uint256[] _amount) external onlyAssigner tokenSaleIsOngoing returns(bool) {
        require(_to.length > 0);
        require(_to.length == _amount.length);
        require(_to.length <= MAX_BATCH_SIZE);

        for (uint i = 0; i < _to.length; i++) {
            assign(_to[i], _amount[i]);
        }
        return true;
    }

    /// @dev Allows the current owner to change the locker.
    /// @param _newLocker The address of the new locker.
    /// @return True if the operation was successful.
    function transferLocker(address _newLocker) external onlyOwner returns(bool) {
        require(_newLocker != address(0));

        emit LockerTransferred(locker, _newLocker);
        locker = _newLocker;
        return true;
    }

    /// @dev Locks an address. A locked address cannot transfer its tokens or other addresses' tokens out.
    ///      Only addresses participating in the current token sale can be locked.
    ///      Only the locker account can lock addresses and only during the token sale.
    /// @param _address address The address to lock.
    /// @return True if the operation was successful.
    function lockAddress(address _address) public onlyLocker tokenSaleIsOngoing returns(bool) {
        require(tokenSaleId[_address] == currentTokenSaleId);
        require(!locked[_address]);

        locked[_address] = true;
        emit Lock(_address);
        return true;
    }

    /// @dev Unlocks an address so that its owner can transfer tokens out again.
    ///      Addresses can be unlocked any time. Only the locker account can unlock addresses
    /// @param _address address The address to unlock.
    /// @return True if the operation was successful.
    function unlockAddress(address _address) public onlyLocker returns(bool) {
        require(locked[_address]);

        locked[_address] = false;
        emit Unlock(_address);
        return true;
    }

    /// @dev Locks several addresses in one single call.
    /// @param _addresses address[] The addresses to lock.
    /// @return True if the operation was successful.
    function lockInBatches(address[] _addresses) external onlyLocker returns(bool) {
        require(_addresses.length > 0);
        require(_addresses.length <= MAX_BATCH_SIZE);

        for (uint i = 0; i < _addresses.length; i++) {
            lockAddress(_addresses[i]);
        }
        return true;
    }

    /// @dev Unlocks several addresses in one single call.
    /// @param _addresses address[] The addresses to unlock.
    /// @return True if the operation was successful.
    function unlockInBatches(address[] _addresses) external onlyLocker returns(bool) {
        require(_addresses.length > 0);
        require(_addresses.length <= MAX_BATCH_SIZE);

        for (uint i = 0; i < _addresses.length; i++) {
            unlockAddress(_addresses[i]);
        }
        return true;
    }

    /// @dev Checks whether or not the given address is locked.
    /// @param _address address The address to be checked.
    /// @return Boolean indicating whether or not the address is locked.
    function isLocked(address _address) external view returns(bool) {
        return locked[_address];
    }

    /// @dev Transfers tokens to the specified address. It prevents transferring tokens from a locked address.
    ///      Locked addresses can receive tokens.
    ///      Current token sale's addresses cannot receive or send tokens until the token sale ends.
    /// @param _to The address to transfer tokens to.
    /// @param _value The number of tokens to be transferred.
    function transfer(address _to, uint256 _value) public returns(bool) {
        require(!locked[msg.sender]);

        if (tokenSaleOngoing) {
            require(tokenSaleId[msg.sender] < currentTokenSaleId);
            require(tokenSaleId[_to] < currentTokenSaleId);
        }

        return super.transfer(_to, _value);
    }

    /// @dev Transfers tokens from one address to another. It prevents transferring tokens if the caller is locked or
    ///      if the allowed address is locked.
    ///      Locked addresses can receive tokens.
    ///      Current token sale's addresses cannot receive or send tokens until the token sale ends.
    /// @param _from address The address to transfer tokens from.
    /// @param _to address The address to transfer tokens to.
    /// @param _value The number of tokens to be transferred.
    function transferFrom(address _from, address _to, uint256 _value) public returns(bool) {
        require(!locked[msg.sender]);
        require(!locked[_from]);

        if (tokenSaleOngoing) {
            require(tokenSaleId[msg.sender] < currentTokenSaleId);
            require(tokenSaleId[_from] < currentTokenSaleId);
            require(tokenSaleId[_to] < currentTokenSaleId);
        }

        return super.transferFrom(_from, _to, _value);
    }
}

    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":true,"inputs":[],"name":"assigner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"mintInBatches","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"lockAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenSaleStart","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"}],"name":"unlockInBatches","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isTokenSaleOngoing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","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":false,"inputs":[{"name":"_newAssigner","type":"address"}],"name":"transferAssigner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getAddressTokenSaleId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"assignInBatches","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"tokenSaleEnd","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentTokenSaleId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOKEN_SALES","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_UNIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_newLocker","type":"address"}],"name":"transferLocker","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"}],"name":"lockInBatches","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"unlockAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"assign","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_BATCH_SIZE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenSaleId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSaleOngoing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locker","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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"},{"constant":true,"inputs":[],"name":"currentTokenSaleId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOKEN_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_assigner","type":"address"},{"name":"_locker","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenSaleId","type":"uint256"}],"name":"TokenSaleStarting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenSaleId","type":"uint256"}],"name":"TokenSaleEnding","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Assign","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousLocker","type":"address"},{"indexed":true,"name":"newLocker","type":"address"}],"name":"LockerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAssigner","type":"address"},{"indexed":true,"name":"newAssigner","type":"address"}],"name":"AssignerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"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"}]

  Contract Creation Code Switch To Opcodes View
608060405260006007556009805460ff1916905534801561001f57600080fd5b5060405160408061190c83398101604052805160209091015160038054600160a060020a03191633600160a060020a03908116919091179091558216151561006657600080fd5b600160a060020a038116151561007b57600080fd5b60048054600160a060020a03938416600160a060020a03199182161790915560058054929093169116179055611856806100b66000396000f3006080604052600436106101e25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101e7578063095ea7b31461027157806318160ddd146102a957806319973261146102d057806323b872dd146103015780632ba253661461032b578063313ce5671461035757806334a90d021461036c578063403911a61461038d57806340c10f19146103a25780634a4fbeec146103c65780635b40d5dd146103e75780636007c4f814610407578063661884631461041c57806370a0823114610440578063737a76981461046157806380f6ab86146104825780638da5cb5b146104a35780638eb7ffe8146104b8578063952d6c22146104e457806395d89b41146104f9578063969bf3581461050e578063a413627214610523578063a5c9cd8214610538578063a9059cbb1461054d578063aa736f5714610571578063b0759c3e14610592578063b7eb5e0a146105b2578063be760488146105d3578063cbf9fe5f146105f7578063cfdbf25414610618578063d1bdd92f1461062d578063d4430bc71461064e578063d73dd62314610663578063d7b96d4e14610687578063dd62ed3e1461069c578063e0f0497d146106c3578063e489d510146106d8578063f2fde38b146106ed575b600080fd5b3480156101f357600080fd5b506101fc610710565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023657818101518382015260200161021e565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027d57600080fd5b50610295600160a060020a0360043516602435610747565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102be6107b1565b60408051918252519081900360200190f35b3480156102dc57600080fd5b506102e56107b7565b60408051600160a060020a039092168252519081900360200190f35b34801561030d57600080fd5b50610295600160a060020a03600435811690602435166044356107c6565b34801561033757600080fd5b5061029560246004803582810192908201359181359182019101356108a2565b34801561036357600080fd5b506102be610955565b34801561037857600080fd5b50610295600160a060020a036004351661095a565b34801561039957600080fd5b50610295610a26565b3480156103ae57600080fd5b50610295600160a060020a0360043516602435610aac565b3480156103d257600080fd5b50610295600160a060020a0360043516610c1d565b3480156103f357600080fd5b506102956004803560248101910135610c3b565b34801561041357600080fd5b50610295610cba565b34801561042857600080fd5b50610295600160a060020a0360043516602435610cc3565b34801561044c57600080fd5b506102be600160a060020a0360043516610dbc565b34801561046d57600080fd5b50610295600160a060020a0360043516610dd7565b34801561048e57600080fd5b506102be600160a060020a0360043516610e76565b3480156104af57600080fd5b506102e5610e91565b3480156104c457600080fd5b506102956024600480358281019290820135918135918201910135610ea0565b3480156104f057600080fd5b50610295610f47565b34801561050557600080fd5b506101fc610fb2565b34801561051a57600080fd5b506102be610fe9565b34801561052f57600080fd5b506102be610fef565b34801561054457600080fd5b506102be610ff4565b34801561055957600080fd5b50610295600160a060020a0360043516602435611000565b34801561057d57600080fd5b50610295600160a060020a036004351661108e565b34801561059e57600080fd5b50610295600480356024810191013561112d565b3480156105be57600080fd5b50610295600160a060020a03600435166111a2565b3480156105df57600080fd5b50610295600160a060020a0360043516602435611235565b34801561060357600080fd5b50610295600160a060020a03600435166113d0565b34801561062457600080fd5b506102be6113e5565b34801561063957600080fd5b506102be600160a060020a03600435166113eb565b34801561065a57600080fd5b506102956113fd565b34801561066f57600080fd5b50610295600160a060020a0360043516602435611406565b34801561069357600080fd5b506102e56114a8565b3480156106a857600080fd5b506102be600160a060020a03600435811690602435166114b7565b3480156106cf57600080fd5b506102be6114e2565b3480156106e457600080fd5b506102be6114e8565b3480156106f957600080fd5b5061070e600160a060020a03600435166114f7565b005b60408051808201909152600581527f4e796e6a61000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60015490565b600454600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff16156107ec57600080fd5b600160a060020a03841660009081526006602052604090205460ff161561081257600080fd5b60095460ff161561088f57600754600160a060020a0333166000908152600860205260409020541061084357600080fd5b600754600160a060020a0385166000908152600860205260409020541061086957600080fd5b600754600160a060020a0384166000908152600860205260409020541061088f57600080fd5b61089a848484611590565b949350505050565b600454600090819033600160a060020a039081169116146108c257600080fd5b60095460ff1615156108d357600080fd5b600085116108e057600080fd5b8483146108ec57600080fd5b6101908511156108fb57600080fd5b5060005b848110156109495761094086868381811061091657fe5b90506020020135600160a060020a0316858584818110151561093457fe5b90506020020135610aac565b506001016108ff565b50600195945050505050565b601281565b60055460009033600160a060020a0390811691161461097857600080fd5b60095460ff16151561098957600080fd5b600754600160a060020a038316600090815260086020526040902054146109af57600080fd5b600160a060020a03821660009081526006602052604090205460ff16156109d557600080fd5b600160a060020a038216600081815260066020526040808220805460ff19166001179055517fc1b5f12cea7c200ad495a43bf2d4c7ba1a753343c06c339093937849de84d9139190a2506001919050565b60035460009033600160a060020a03908116911614610a4457600080fd5b60095460ff1615610a5457600080fd5b600754600111610a6357600080fd5b600780546001908101918290556009805460ff191690911790556040517f876ae0acd69a7fae570f9828df9dc478f1772f47906e089652e7d185819f9f4690600090a250600190565b60045460009033600160a060020a03908116911614610aca57600080fd5b60095460ff161515610adb57600080fd5b600154610aee908363ffffffff6116fe16565b60018190556a295be96e640669720000001015610b0a57600080fd5b600160a060020a0383166000908152600860205260409020541515610b4657600754600160a060020a0384166000908152600860205260409020555b600754600160a060020a03841660009081526008602052604090205414610b6c57600080fd5b600160a060020a038316600090815260208190526040902054610b95908363ffffffff6116fe16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a0385169160009160008051602061180b8339815191529181900360200190a350600192915050565b600160a060020a031660009081526006602052604090205460ff1690565b600554600090819033600160a060020a03908116911614610c5b57600080fd5b60008311610c6857600080fd5b610190831115610c7757600080fd5b5060005b82811015610cb057610ca7848483818110610c9257fe5b90506020020135600160a060020a03166111a2565b50600101610c7b565b5060019392505050565b60095460ff1690565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610d2057600160a060020a033381166000908152600260209081526040808320938816835292905290812055610d57565b610d30818463ffffffff61171116565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b60035460009033600160a060020a03908116911614610df557600080fd5b600160a060020a0382161515610e0a57600080fd5b600454604051600160a060020a038085169216907f96796c61aa903b86a8d91c28b1355e94a6d8126dc339e81028ca80a0b04ac98390600090a35060048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a031660009081526008602052604090205490565b600354600160a060020a031681565b600454600090819033600160a060020a03908116911614610ec057600080fd5b60095460ff161515610ed157600080fd5b60008511610ede57600080fd5b848314610eea57600080fd5b610190851115610ef957600080fd5b5060005b8481101561094957610f3e868683818110610f1457fe5b90506020020135600160a060020a03168585848181101515610f3257fe5b90506020020135611235565b50600101610efd565b60035460009033600160a060020a03908116911614610f6557600080fd5b60095460ff161515610f7657600080fd5b6007546040517f3ab754a2b4b3c6b59edf2e5f7a39e63d76e0ee83c16a8f2160ec8bae241ca62290600090a2506009805460ff19169055600190565b60408051808201909152600381527f4e594e0000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600181565b670de0b6b3a764000081565b600160a060020a03331660009081526006602052604081205460ff161561102657600080fd5b60095460ff161561107d57600754600160a060020a0333166000908152600860205260409020541061105757600080fd5b600754600160a060020a0384166000908152600860205260409020541061107d57600080fd5b6110878383611723565b9392505050565b60035460009033600160a060020a039081169116146110ac57600080fd5b600160a060020a03821615156110c157600080fd5b600554604051600160a060020a038085169216907fb6a14cb7d716300f94e7de6bf44958c82a682b2aec5d25919186fa610951811090600090a35060058054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600554600090819033600160a060020a0390811691161461114d57600080fd5b6000831161115a57600080fd5b61019083111561116957600080fd5b5060005b82811015610cb05761119984848381811061118457fe5b90506020020135600160a060020a031661095a565b5060010161116d565b60055460009033600160a060020a039081169116146111c057600080fd5b600160a060020a03821660009081526006602052604090205460ff1615156111e757600080fd5b600160a060020a038216600081815260066020526040808220805460ff19169055517f0be774851955c26a1d6a32b13b020663a069006b4a3b643ff0b809d3182605729190a2506001919050565b600454600090819033600160a060020a0390811691161461125557600080fd5b60095460ff16151561126657600080fd5b60075460011461127557600080fd5b50600160a060020a0383166000908152602081905260408120548311156112de57600160a060020a0384166000908152602081905260409020546112c090849063ffffffff61171116565b6001549091506112d6908263ffffffff6116fe16565b600155611321565b600160a060020a038416600090815260208190526040902054611307908463ffffffff61171116565b60015490915061131d908263ffffffff61171116565b6001555b6001546a295be96e64066972000000101561133b57600080fd5b600160a060020a038416600081815260208181526040808320879055600754600883529281902092909255815186815291517f8a0e37b73a0d9c82e205d4d1a3ff3d0b57ce5f4d7bccf6bac03336dc101cb7ba9281900390910190a2604080518481529051600160a060020a0386169160009160008051602061180b8339815191529181900360200190a35060019392505050565b60066020526000908152604090205460ff1681565b61019081565b60086020526000908152604090205481565b60095460ff1681565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461143e908363ffffffff6116fe16565b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600554600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60075481565b6a295be96e6406697200000081565b60035433600160a060020a0390811691161461151257600080fd5b600160a060020a038116151561152757600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a03831615156115a757600080fd5b600160a060020a0384166000908152602081905260409020548211156115cc57600080fd5b600160a060020a03808516600090815260026020908152604080832033909416835292905220548211156115ff57600080fd5b600160a060020a038416600090815260208190526040902054611628908363ffffffff61171116565b600160a060020a03808616600090815260208190526040808220939093559085168152205461165d908363ffffffff6116fe16565b600160a060020a03808516600090815260208181526040808320949094558783168252600281528382203390931682529190915220546116a3908363ffffffff61171116565b600160a060020a0380861660008181526002602090815260408083203386168452825291829020949094558051868152905192871693919260008051602061180b833981519152929181900390910190a35060019392505050565b8181018281101561170b57fe5b92915050565b60008282111561171d57fe5b50900390565b6000600160a060020a038316151561173a57600080fd5b600160a060020a03331660009081526020819052604090205482111561175f57600080fd5b600160a060020a033316600090815260208190526040902054611788908363ffffffff61171116565b600160a060020a0333811660009081526020819052604080822093909355908516815220546117bd908363ffffffff6116fe16565b600160a060020a038085166000818152602081815260409182902094909455805186815290519193339093169260008051602061180b83398151915292918290030190a3506001929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820a9ae933ba7c3905dc028cbce4265621fea7e8a97a86e3efc0c4c1f0dd33bc8c80029000000000000000000000000b11a21f4cec2c954df533a16d682de73c423205e000000000000000000000000b11a21f4cec2c954df533a16d682de73c423205e

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b11a21f4cec2c954df533a16d682de73c423205e
Arg [1] : 000000000000000000000000b11a21f4cec2c954df533a16d682de73c423205e


   Swarm Source:
bzzr://a9ae933ba7c3905dc028cbce4265621fea7e8a97a86e3efc0c4c1f0dd33bc8c8

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward