Sponsored Link:  Download the Monaco app for Android and iOS on Aug 31 - www.mona.co
Contract Overview | CoinDash
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 50583 txns
Token Tracker 0x177d39ac676ed1c67a2b268ad7f1e58826e5b0af
Misc
Address Watch Add To Watch List
Contract Creator 0xa869b2674914ec42b66dafe65acac797cd241cbaat txn 0x86b3f5bd87561248cea5710c3105ab94b08d63775b55047c178c5decf5966cb3
Token Tracker
  Latest 25 txns from a total Of 50583 transactions View All

TxHash Age From To Value [TxFee]
0x6d5b4a29d1b105e15d42f1a19b8a4296f84eda83c1144f18175fec6202d6a9554 mins ago0x6ceff07de153734c1fa9811ba5255677321e3416  IN   CoinDash0 Ether0.000878514875
0x23fa9d541ea69e3ffe3ffe161a43d2e54db6d599e8193ae0472f2f9c10d76b3e5 mins ago0x2b4e45e81f70e39933e7ea8453e31b518b115375  IN   CoinDash0 Ether0.000211628
0x559a69388e6c768e36ef2e79886c02e73cc876b1ca76d434fc215e8dbd6b89ae49 mins ago0xac70f08eada58bba7e3478eed54771ecbc9bc6ce  IN   CoinDash0 Ether0.00027389775
0x4584ab28f581cd3d1a8107f098c87e799d5a9f1186ad80beab5575c24940f67b1 hr 5 mins ago0xe2f58dbe3ce09a02bc47107b27681fd5503ba957  IN   CoinDash0 Ether0.000184232
0x547ec7f486fa50ad9fda6f3663b867209f7e988d85a2cb1a0f604e63d97e7e771 hr 6 mins ago0x995201bea1f6facfb72daf1c253fdad06595197b  IN   CoinDash0 Ether0.000793605
0xec8e878bbcdfe647b52fcb9db38c762821cebf3e795c6bfa8a319524ce3f48ed1 hr 7 mins ago0x04a60d8c7baeccc12ea5ba4444b5b14fece27679  IN   CoinDash0 Ether0.001322675
0xd9ed98811e2bc9ecc822523bf8bcb2b58646f59844f6cd532080e65ebcce11211 hr 49 mins ago0x92b1c6390e08b53e64741f9a00ed630ccd3ff623  IN   CoinDash0 Ether0.00075814
0x740a276302daf64bb562d1f78cc537620b839124c02d6e2fa29349252efead071 hr 52 mins ago0x92b1c6390e08b53e64741f9a00ed630ccd3ff623  IN   CoinDash0 Ether0.00075814
0x2385baaa69fd76a2e005da06bfc5d2254d40b39bd9127261e2884cb02fc32ddd1 hr 57 mins ago0x9cb95ee6a4fba2c8898f32254a26cea74ad7e26f  IN   CoinDash0 Ether0.0005957
0x06d3bb1157a30e95113f3a167f05cc49d62da1fd192533ae2a2b3dc948a429f92 hrs ago0x648c43761c3d3e77335e3e0eddf490d38793d0e0  IN   CoinDash0 Ether0.000037907
0x5d44ec31b916253cd5493120d0e5ff8a24ef997edf27addfc35da8deb44e61db2 hrs 4 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.00052971
0x9d0971a5216309c520a140967e9bcfe135ac1f3916a5238dfbab0c128dec4bcd2 hrs 7 mins ago0xcdb47f97afad84a079fa5cbdc4440f30d2d8a888  IN   CoinDash0 Ether0.00092372
0x9d2e4db41b15a9106d4763e5035a34338fb19bf269505b5b9717034b6d37e8792 hrs 10 mins ago0x648c43761c3d3e77335e3e0eddf490d38793d0e0  IN   CoinDash0 Ether0.000052779
0x942a6d3cc8872874bbbe7cc8797803ded141e1ae3657fb5a4414ada42a02656f2 hrs 12 mins ago0x92b1c6390e08b53e64741f9a00ed630ccd3ff623  IN   CoinDash0 Ether0.00075814
0x884ae8cfe4a33a8b45fb8995c60e75a7c411b891919905c62b247fce2fe60b1f2 hrs 20 mins ago0x04a60d8c7baeccc12ea5ba4444b5b14fece27679  IN   CoinDash0 Ether0.000947675
0x10273599311043d568dc436dcb370def708080dc018f037a70476825d17658612 hrs 26 mins ago0xae2ac5ebd9a1140c1c75a2be30c14269e32ed6fd  IN   CoinDash0 Ether0.000423768
0xe58f6b1573fbd7e340d838537c6446fa54921c2c6e0dd21050216a544da3b6d32 hrs 34 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.000303256
0x27f98f6ec9724f87719936c3426a6887a9a4324d7844d346b0367b4e3e7e74e62 hrs 37 mins ago0x007e48a5e307fcbe23928ff00f38316218d9dc5a  IN   CoinDash0 Ether0.00000183256
0x3c8cf2036bf4398f9a0c4c2c41406eb4adff42f982f6205ae83123d8afaf1e552 hrs 46 mins ago0x054af5c5332301589d0bedf5bfc9d6961f094701  IN   CoinDash0 Ether0.000022715
0xb45f0b0f954ae966ed33fc6d1d3267783cbbb802c41b9f10f82d5b45b794b8a02 hrs 52 mins ago0x17bc58b788808dab201a9a90817ff3c168bf3d61  IN   CoinDash0 Ether0.000303256
0x7313d6c6ef8efdec45ba1b99dbecf829fadde5692928663f48106b70b0d6a6772 hrs 57 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.00105558
0xe92a451b059be610acf969cb2d116ed8250b507bf9c093d7e8d048021a9826273 hrs 9 mins ago0x92b1c6390e08b53e64741f9a00ed630ccd3ff623  IN   CoinDash0 Ether0.00075814
0x39931a99ee23b9f2a2d4b54cb7a3971b11f0c5926a0b1b7b65f0bafc89665aaa3 hrs 18 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.00105814
0x9085194403145935e1a7f9effe12f2bbdfc6ee09f5f8e9b8831ef06e9d4c825e3 hrs 19 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.000302744
0x1bebc789ee980020e6aa749ce7a4b2508a7fb7a86ff27bbe48520a546a11c62e3 hrs 20 mins ago0x710b8352d4341d5910834e6d58fba82755784de7  IN   CoinDash0 Ether0.00000568605
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Name: CDTToken
Compiler Version: v0.4.8+commit.60cc1668
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.8;

/**
 * Math operations with safety checks
 */
library SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint a, uint b) internal returns (uint) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function add(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}

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

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


/**
 * @title LimitedTransferToken
 * @dev LimitedTransferToken defines the generic interface and the implementation to limit token 
 * transferability for different events. It is intended to be used as a base class for other token 
 * contracts. 
 * LimitedTransferToken has been designed to allow for different limiting factors,
 * this can be achieved by recursively calling super.transferableTokens() until the base class is 
 * hit. For example:
 *     function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
 *       return min256(unlockedTokens, super.transferableTokens(holder, time));
 *     }
 * A working example is VestedToken.sol:
 * https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/VestedToken.sol
 */

contract LimitedTransferToken is ERC20 {

  /**
   * @dev Checks whether it can transfer or otherwise throws.
   */
  modifier canTransfer(address _sender, uint _value) {
   if (_value > transferableTokens(_sender, uint64(now))) throw;
   _;
  }

  /**
   * @dev Checks modifier and allows transfer if tokens are not locked.
   * @param _to The address that will recieve the tokens.
   * @param _value The amount of tokens to be transferred.
   */
  function transfer(address _to, uint _value) canTransfer(msg.sender, _value) {
   return super.transfer(_to, _value);
  }

  /**
  * @dev Checks modifier and allows transfer if tokens are not locked.
  * @param _from The address that will send the tokens.
  * @param _to The address that will recieve the tokens.
  * @param _value The amount of tokens to be transferred.
  */
  function transferFrom(address _from, address _to, uint _value) canTransfer(_from, _value) {
   return super.transferFrom(_from, _to, _value);
  }

  /**
   * @dev Default transferable tokens function returns all tokens for a holder (no limit).
   * @dev Overwriting transferableTokens(address holder, uint64 time) is the way to provide the 
   * specific logic for limiting token transferability for a holder over time.
   */
  function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
    return balanceOf(holder);
  }
}


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

  mapping(address => uint) balances;

  /**
   * @dev Fix for the ERC20 short address attack.
   */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }

  /**
  * @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, uint _value) onlyPayloadSize(2 * 32) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
  }

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

}


/**
 * @title Standard ERC20 token
 *
 * @dev Implemantation of the basic standart 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 BasicToken, ERC20 {

  mapping (address => mapping (address => uint)) 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 uint the amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;

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

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on beahlf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint _value) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
  }

  /**
   * @dev Function to check the amount of tokens than 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 uint specifing the amount of tokens still avaible for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}


/**
 * @title Vested token
 * @dev Tokens that can be vested for a group of addresses.
 */
contract VestedToken is StandardToken, LimitedTransferToken {

  uint256 MAX_GRANTS_PER_ADDRESS = 20;

  struct TokenGrant {
    address granter;     // 20 bytes
    uint256 value;       // 32 bytes
    uint64 cliff;
    uint64 vesting;
    uint64 start;        // 3 * 8 = 24 bytes
    bool revokable;
    bool burnsOnRevoke;  // 2 * 1 = 2 bits? or 2 bytes?
  } // total 78 bytes = 3 sstore per operation (32 per sstore)

  mapping (address => TokenGrant[]) public grants;

  event NewTokenGrant(address indexed from, address indexed to, uint256 value, uint256 grantId);

  /**
   * @dev Grant tokens to a specified address
   * @param _to address The address which the tokens will be granted to.
   * @param _value uint256 The amount of tokens to be granted.
   * @param _start uint64 Time of the beginning of the grant.
   * @param _cliff uint64 Time of the cliff period.
   * @param _vesting uint64 The vesting period.
   */
  function grantVestedTokens(
    address _to,
    uint256 _value,
    uint64 _start,
    uint64 _cliff,
    uint64 _vesting,
    bool _revokable,
    bool _burnsOnRevoke
  ) public {

    // Check for date inconsistencies that may cause unexpected behavior
    if (_cliff < _start || _vesting < _cliff) {
      throw;
    }

    if (tokenGrantsCount(_to) > MAX_GRANTS_PER_ADDRESS) throw;   // To prevent a user being spammed and have his balance locked (out of gas attack when calculating vesting).

    uint count = grants[_to].push(
                TokenGrant(
                  _revokable ? msg.sender : 0, // avoid storing an extra 20 bytes when it is non-revokable
                  _value,
                  _cliff,
                  _vesting,
                  _start,
                  _revokable,
                  _burnsOnRevoke
                )
              );

    transfer(_to, _value);

    NewTokenGrant(msg.sender, _to, _value, count - 1);
  }

  /**
   * @dev Revoke the grant of tokens of a specifed address.
   * @param _holder The address which will have its tokens revoked.
   * @param _grantId The id of the token grant.
   */
  function revokeTokenGrant(address _holder, uint _grantId) public {
    TokenGrant grant = grants[_holder][_grantId];

    if (!grant.revokable) { // Check if grant was revokable
      throw;
    }

    if (grant.granter != msg.sender) { // Only granter can revoke it
      throw;
    }

    address receiver = grant.burnsOnRevoke ? 0xdead : msg.sender;

    uint256 nonVested = nonVestedTokens(grant, uint64(now));

    // remove grant from array
    delete grants[_holder][_grantId];
    grants[_holder][_grantId] = grants[_holder][grants[_holder].length.sub(1)];
    grants[_holder].length -= 1;

    balances[receiver] = balances[receiver].add(nonVested);
    balances[_holder] = balances[_holder].sub(nonVested);

    Transfer(_holder, receiver, nonVested);
  }


  /**
   * @dev Calculate the total amount of transferable tokens of a holder at a given time
   * @param holder address The address of the holder
   * @param time uint64 The specific time.
   * @return An uint representing a holder's total amount of transferable tokens.
   */
  function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
    uint256 grantIndex = tokenGrantsCount(holder);

    if (grantIndex == 0) return balanceOf(holder); // shortcut for holder without grants

    // Iterate through all the grants the holder has, and add all non-vested tokens
    uint256 nonVested = 0;
    for (uint256 i = 0; i < grantIndex; i++) {
      nonVested = SafeMath.add(nonVested, nonVestedTokens(grants[holder][i], time));
    }

    // Balance - totalNonVested is the amount of tokens a holder can transfer at any given time
    uint256 vestedTransferable = SafeMath.sub(balanceOf(holder), nonVested);

    // Return the minimum of how many vested can transfer and other value
    // in case there are other limiting transferability factors (default is balanceOf)
    return SafeMath.min256(vestedTransferable, super.transferableTokens(holder, time));
  }

  /**
   * @dev Check the amount of grants that an address has.
   * @param _holder The holder of the grants.
   * @return A uint representing the total amount of grants.
   */
  function tokenGrantsCount(address _holder) constant returns (uint index) {
    return grants[_holder].length;
  }

  /**
   * @dev Calculate amount of vested tokens at a specifc time.
   * @param tokens uint256 The amount of tokens grantted.
   * @param time uint64 The time to be checked
   * @param start uint64 A time representing the begining of the grant
   * @param cliff uint64 The cliff period.
   * @param vesting uint64 The vesting period.
   * @return An uint representing the amount of vested tokensof a specif grant.
   *  transferableTokens
   *   |                         _/--------   vestedTokens rect
   *   |                       _/
   *   |                     _/
   *   |                   _/
   *   |                 _/
   *   |                /
   *   |              .|
   *   |            .  |
   *   |          .    |
   *   |        .      |
   *   |      .        |
   *   |    .          |
   *   +===+===========+---------+----------> time
   *      Start       Clift    Vesting
   */
  function calculateVestedTokens(
    uint256 tokens,
    uint256 time,
    uint256 start,
    uint256 cliff,
    uint256 vesting) constant returns (uint256)
    {
      // Shortcuts for before cliff and after vesting cases.
      if (time < cliff) return 0;
      if (time >= vesting) return tokens;

      // Interpolate all vested tokens.
      // As before cliff the shortcut returns 0, we can use just calculate a value
      // in the vesting rect (as shown in above's figure)

      // vestedTokens = tokens * (time - start) / (vesting - start)
      uint256 vestedTokens = SafeMath.div(
                                    SafeMath.mul(
                                      tokens,
                                      SafeMath.sub(time, start)
                                      ),
                                    SafeMath.sub(vesting, start)
                                    );

      return vestedTokens;
  }

  /**
   * @dev Get all information about a specifc grant.
   * @param _holder The address which will have its tokens revoked.
   * @param _grantId The id of the token grant.
   * @return Returns all the values that represent a TokenGrant(address, value, start, cliff,
   * revokability, burnsOnRevoke, and vesting) plus the vested value at the current time.
   */
  function tokenGrant(address _holder, uint _grantId) constant returns (address granter, uint256 value, uint256 vested, uint64 start, uint64 cliff, uint64 vesting, bool revokable, bool burnsOnRevoke) {
    TokenGrant grant = grants[_holder][_grantId];

    granter = grant.granter;
    value = grant.value;
    start = grant.start;
    cliff = grant.cliff;
    vesting = grant.vesting;
    revokable = grant.revokable;
    burnsOnRevoke = grant.burnsOnRevoke;

    vested = vestedTokens(grant, uint64(now));
  }

  /**
   * @dev Get the amount of vested tokens at a specific time.
   * @param grant TokenGrant The grant to be checked.
   * @param time The time to be checked
   * @return An uint representing the amount of vested tokens of a specific grant at a specific time.
   */
  function vestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
    return calculateVestedTokens(
      grant.value,
      uint256(time),
      uint256(grant.start),
      uint256(grant.cliff),
      uint256(grant.vesting)
    );
  }

  /**
   * @dev Calculate the amount of non vested tokens at a specific time.
   * @param grant TokenGrant The grant to be checked.
   * @param time uint64 The time to be checked
   * @return An uint representing the amount of non vested tokens of a specifc grant on the 
   * passed time frame.
   */
  function nonVestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
    return grant.value.sub(vestedTokens(grant, time));
  }

  /**
   * @dev Calculate the date when the holder can trasfer all its tokens
   * @param holder address The address of the holder
   * @return An uint representing the date of the last transferable tokens.
   */
  function lastTokenIsTransferableDate(address holder) constant public returns (uint64 date) {
    date = uint64(now);
    uint256 grantIndex = grants[holder].length;
    for (uint256 i = 0; i < grantIndex; i++) {
      date = SafeMath.max64(grants[holder][i].vesting, date);
    }
  }
}

contract CDTToken is VestedToken {
	using SafeMath for uint;

	//FIELDS
	//CONSTANTS
	uint public constant decimals = 18;  // 18 decimal places, the same as ETH.
	string public constant name = "CoinDash Token";
  	string public constant symbol = "CDT";

	//ASSIGNED IN INITIALIZATION
	address public creator; //address of the account which may mint new tokens

	//May only be called by the owner address
	modifier only_owner() {
		if (msg.sender != creator) throw;
		_;
	}


	// Initialization contract assigns address of crowdfund contract and end time.
	function CDTToken(uint supply) {
		totalSupply = supply;
		creator = msg.sender;
		
		balances[msg.sender] = supply;

		MAX_GRANTS_PER_ADDRESS = 2;
	}

	// Fallback function throws when called.
	function() {
		throw;
	}

	function vestedBalanceOf(address _owner) constant returns (uint balance) {
	    return transferableTokens(_owner, uint64(now));
    }

        //failsafe drain
	function drain()
		only_owner
	{
		if (!creator.send(this.balance)) throw;
	}
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"tokenGrantsCount","outputs":[{"name":"index","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"vestedBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"grants","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"start","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"tokenGrant","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"vested","type":"uint256"},{"name":"start","type":"uint64"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"}],"name":"lastTokenIsTransferableDate","outputs":[{"name":"date","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_start","type":"uint64"},{"name":"_cliff","type":"uint64"},{"name":"_vesting","type":"uint64"},{"name":"_revokable","type":"bool"},{"name":"_burnsOnRevoke","type":"bool"}],"name":"grantVestedTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"vesting","type":"uint256"}],"name":"calculateVestedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"revokeTokenGrant","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"grantId","type":"uint256"}],"name":"NewTokenGrant","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
60606040526014600355346100005760405160208061172f83398101604052515b600081815560058054600160a060020a03191633600160a060020a0316908117909155815260016020526040902081905560026003555b505b6116c7806100686000396000f300606060405236156100f65763ffffffff60e060020a60003504166302a72a4c811461010857806302d05d3f1461013357806306fdde031461015c578063095ea7b3146101e95780630e2d1a2a1461020757806318160ddd1461023257806323b872dd146102515780632c71e60a14610275578063313ce567146102e2578063600e85b7146103015780636c182e991461037757806370a08231146103ac57806395d89b41146103d75780639754a4d9146104645780639890220b146104a4578063a9059cbb146104b3578063d347c205146104d1578063dd62ed3e14610508578063df3c211b14610539578063eb944e4c14610567575b34610000576101065b610000565b565b005b3461000057610121600160a060020a0360043516610585565b60408051918252519081900360200190f35b34610000576101406105a4565b60408051600160a060020a039092168252519081900360200190f35b34610000576101696105b3565b6040805160208082528351818301528351919283929083019185019080838382156101af575b8051825260208311156101af57601f19909201916020918201910161018f565b505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610106600160a060020a03600435166024356105ea565b005b3461000057610121600160a060020a0360043516610689565b60408051918252519081900360200190f35b346100005761012161069d565b60408051918252519081900360200190f35b3461000057610106600160a060020a03600435811690602435166044356106a3565b005b3461000057610291600160a060020a03600435166024356106cf565b60408051600160a060020a03909816885260208801969096526001604060020a039485168787015292841660608701529216608085015290151560a0840152151560c0830152519081900360e00190f35b346100005761012161074c565b60408051918252519081900360200190f35b346100005761031d600160a060020a0360043516602435610751565b60408051600160a060020a0390991689526020890197909752878701959095526001604060020a039384166060880152918316608087015290911660a0850152151560c0840152151560e083015251908190036101000190f35b3461000057610390600160a060020a0360043516610960565b604080516001604060020a039092168252519081900360200190f35b3461000057610121600160a060020a03600435166109eb565b60408051918252519081900360200190f35b3461000057610169610a0a565b6040805160208082528351818301528351919283929083019185019080838382156101af575b8051825260208311156101af57601f19909201916020918201910161018f565b505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610106600160a060020a03600435166024356001604060020a036044358116906064358116906084351660a435151560c4351515610a41565b005b3461000057610106610cdd565b005b3461000057610106600160a060020a0360043516602435610d31565b005b3461000057610121600160a060020a03600435166001604060020a0360243516610d5b565b60408051918252519081900360200190f35b3461000057610121600160a060020a0360043581169060243516610ea5565b60408051918252519081900360200190f35b3461000057610121600435602435604435606435608435610ed2565b60408051918252519081900360200190f35b3461000057610106600160a060020a0360043516602435610f2b565b005b600160a060020a0381166000908152600460205260409020545b919050565b600554600160a060020a031681565b60408051808201909152600e81527f436f696e4461736820546f6b656e000000000000000000000000000000000000602082015281565b801580159061061d5750600160a060020a0333811660009081526002602090815260408083209386168352929052205415155b1561062757610000565b600160a060020a03338116600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5050565b60006106958242610d5b565b90505b919050565b60005481565b82816106af8242610d5b565b8111156106bb57610000565b6106c6858585611350565b5b5b5050505050565b600460205281600052604060002081815481101561000057906000526020600020906003020160005b5080546001820154600290920154600160a060020a0390911693509091506001604060020a0380821691604060020a8104821691608060020a8204169060ff60c060020a820481169160c860020a90041687565b601281565b600060006000600060006000600060006000600460008c600160a060020a0316600160a060020a031681526020019081526020016000208a815481101561000057906000526020600020906003020160005b5090508060000160009054906101000a9004600160a060020a03169850806001015497508060020160109054906101000a90046001604060020a031695508060020160009054906101000a90046001604060020a031694508060020160089054906101000a90046001604060020a031693508060020160189054906101000a900460ff1692508060020160199054906101000a900460ff16915061094f8160e060405190810160405290816000820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001600182015481526020016002820160009054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820160089054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820160109054906101000a90046001604060020a03166001604060020a03166001604060020a031681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff16151515158152505042611473565b96505b509295985092959890939650565b600160a060020a03811660009081526004602052604081205442915b818110156109e357600160a060020a038416600090815260046020526040902080546109d89190839081101561000057906000526020600020906003020160005b5060020154604060020a90046001604060020a0316846114bf565b92505b60010161097c565b5b5050919050565b600160a060020a0381166000908152600160205260409020545b919050565b60408051808201909152600381527f4344540000000000000000000000000000000000000000000000000000000000602082015281565b6000856001604060020a0316856001604060020a03161080610a745750846001604060020a0316846001604060020a0316105b15610a7e57610000565b600354610a8a89610585565b1115610a9557610000565b600160a060020a03881660009081526004602052604090208054600181018083558281838015829011610b1857600302816003028360005260206000209182019101610b1891905b80821115610b14578054600160a060020a031916815560006001820155600281018054600160d060020a0319169055600301610add565b5090565b5b505050916000526020600020906003020160005b60e06040519081016040528087610b45576000610b47565b335b600160a060020a03908116825260208083018e90526001604060020a038c81166040808601919091528c82166060808701919091528f83166080808801919091528d151560a0808901919091528d151560c09889015288518b54600160a060020a0319169716969096178a559387015160018a01559086015160029098018054918701519387015194870151969095015167ffffffffffffffff19909116978216979097176fffffffffffffffff00000000000000001916604060020a928216929092029190911777ffffffffffffffff000000000000000000000000000000001916608060020a92909116919091021760c060020a60ff02191660c060020a921515929092029190911760c860020a60ff02191660c860020a9315159390930292909217909155509050610c7c8888610d31565b87600160a060020a031633600160a060020a03167ff9565aecd648a0466ffb964a79eeccdf1120ad6276189c687a6e9fe73984d9bb8960018503604051808381526020018281526020019250505060405180910390a35b5050505050505050565b60055433600160a060020a03908116911614610cf857610000565b600554604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050151561010457610000565b5b5b565b3381610d3d8242610d5b565b811115610d4957610000565b610d5384846114ec565b5b5b50505050565b60006000600060006000610d6e87610585565b9350831515610d8757610d80876109eb565b9450610e9b565b60009250600091505b83821015610e7157610e6383610e5e600460008b600160a060020a0316600160a060020a0316815260200190815260200160002085815481101561000057906000526020600020906003020160005b506040805160e0810182528254600160a060020a03168152600183015460208201526002909201546001604060020a0380821692840192909252604060020a810482166060840152608060020a8104909116608083015260ff60c060020a82048116151560a084015260c860020a90910416151560c0820152896115b9565b6115e2565b92505b600190910190610d90565b610e83610e7d886109eb565b846115fe565b9050610e9881610e938989611617565b61162b565b94505b5050505092915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b6000600083861015610ee75760009150610f21565b828610610ef657869150610f21565b610f1b610f0c88610f0789896115fe565b611645565b610f1685886115fe565b611671565b90508091505b5095945050505050565b600160a060020a0382166000908152600460205260408120805482918291859081101561000057906000526020600020906003020160005b50600281015490935060c060020a900460ff161515610f8157610000565b825433600160a060020a03908116911614610f9b57610000565b600283015460c860020a900460ff16610fb45733610fb8565b61dead5b6040805160e0810182528554600160a060020a031681526001860154602082015260028601546001604060020a0380821693830193909352604060020a810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015290925061103e90426115b9565b600160a060020a0386166000908152600460205260409020805491925090859081101561000057906000526020600020906003020160005b508054600160a060020a03191681556000600180830182905560029092018054600160d060020a0319169055600160a060020a0387168152600460205260409020805490916110cb919063ffffffff6115fe16565b815481101561000057906000526020600020906003020160005b50600160a060020a03861660009081526004602052604090208054869081101561000057906000526020600020906003020160005b5081548154600160a060020a031916600160a060020a03918216178255600180840154908301556002928301805493909201805467ffffffffffffffff19166001604060020a03948516178082558354604060020a908190048616026fffffffffffffffff000000000000000019909116178082558354608060020a9081900490951690940277ffffffffffffffff000000000000000000000000000000001990941693909317808455825460ff60c060020a918290048116151590910260c060020a60ff021990921691909117808555925460c860020a9081900490911615150260c860020a60ff021990921691909117909155851660009081526004602052604090208054600019810180835591908290801582901161128c5760030281600302836000526020600020918201910161128c91905b80821115610b14578054600160a060020a031916815560006001820155600281018054600160d060020a0319169055600301610add565b5090565b5b505050600160a060020a0383166000908152600160205260409020546112ba91508263ffffffff6115e216565b600160a060020a0380841660009081526001602052604080822093909355908716815220546112ef908263ffffffff6115fe16565b600160a060020a0380871660008181526001602090815260409182902094909455805185815290519286169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35b5050505050565b60006060606436101561136257610000565b600160a060020a0380861660009081526002602090815260408083203385168452825280832054938816835260019091529020549092506113a9908463ffffffff6115e216565b600160a060020a0380861660009081526001602052604080822093909355908716815220546113de908463ffffffff6115fe16565b600160a060020a038616600090815260016020526040902055611407828463ffffffff6115fe16565b600160a060020a038087166000818152600260209081526040808320338616845282529182902094909455805187815290519288169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35b5b5050505050565b60006114b68360200151836001604060020a031685608001516001604060020a031686604001516001604060020a031687606001516001604060020a0316610ed2565b90505b92915050565b6000816001604060020a0316836001604060020a031610156114e157816114b6565b825b90505b92915050565b604060443610156114fc57610000565b600160a060020a033316600090815260016020526040902054611525908363ffffffff6115fe16565b600160a060020a03338116600090815260016020526040808220939093559085168152205461155a908363ffffffff6115e216565b600160a060020a038085166000818152600160209081526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5b505050565b60006114b66115c88484611473565b60208501519063ffffffff6115fe16565b90505b92915050565b60008282016115f38482101561168b565b8091505b5092915050565b600061160c8383111561168b565b508082035b92915050565b60006114b6836109eb565b90505b92915050565b60008183106114e157816114b6565b825b90505b92915050565b60008282026115f3841580611661575083858381156100005704145b61168b565b8091505b5092915050565b6000600082848115610000570490508091505b5092915050565b80151561169757610000565b5b505600a165627a7a72305820cda948482ca91b403feb47c3d04aa6b66f868fe80ea247b0dbf908d9ad4e61f300290000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

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

-----Decoded View---------------
Found 1 constructor arguments :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000


   Swarm Source:
bzzr://cda948482ca91b403feb47c3d04aa6b66f868fe80ea247b0dbf908d9ad4e61f3
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.