Latest 25 transactions from a total of 41 transactions

TxHash Age From To Value [TxFee]
0x277ff68c9517698e2e77700d01b95a8e3b0bcef171c3d478a70e0f8c7c17965c161 days 14 hrs ago0xfd5fc0439df052da161a557573f9e8cfe5ac5317  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.0000965991
0x623e8213fae65b9c17dc8b351c2491ddb33c01cd2afd4db10da79eb773751825176 days 17 hrs ago0xfd5fc0439df052da161a557573f9e8cfe5ac5317  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.0000617625
0x1997378c291e78f82683cff94763ec64b8a28ec9e26113b095f1af7fce1c7281194 days 10 hrs ago0x55d43e43959b2dd37ec36661d9d0d878414b0908  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.00148047
0x83635b3e33c068e71e0bbdbf4a341aa68800c21732edfef8447026bbddcab87b202 days 3 hrs ago0x553b2c3853b10f90303b5fd01c70b067413f6c46  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.00128043
0xe0c1df05fbf8894a5c60ea458fb43fa6abedb2459dad581524ca15b15f32442a202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.00128043
0x35b2752b159bc8c12e219112fe61c03f782114c52d286e2b576aabefb5730305202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.024567036
0x545a4f861daf79bfb70ac2f85b5d5d47a799d49cf1b9ebdde5b3f489302d55c6202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.00128043
0x9fb9de2c3adc996780b31759e122332d6d60a07ebaef1c127c088e75196c5d83202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.024567036
0xae48f9faee049b1ce14c2e9a0e106510cbf1fdabb8c1ab16dbad22d6bb3fa7bc202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.00128043
0xeacf63d2655231222f05b7b6f61c70cb2c81b1cd0b320074ea6b572cf84318b4202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.024567036
0x9c6389adf413039db8e7ad63a0cb748aa7891e2905eeb0ebf292bff20c635d4d202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.002865039
0xded40efc6e4807def3dad1780b8d20b1559263ab0a3b12fe1c3624088a0847e2202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.025182036
0xccd4f162a567656553f48b54b770ca50f2e6793acdd12136d4cd9e49355eded0202 days 3 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001086705
0x2674b374f3c64c4102afd133c5fc4aa201f75dc2e5b95b9d8fd35acd736eeee5202 days 4 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.002865039
0x86c5f660c9acbd78a657b18ea82027c98167152179ebb7a96dfac228ff18cbae202 days 4 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.025166292
0xee856de590c224345aedfd63755dfb784ba2590647744e7cf53ca3ff7b508f30202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001071904
0x8a6b4d99e8235dc2cfc3860e5eb8c2ad1c83889adf1584b2769438bb3b876875202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001058784
0xc6aae974d418ee3bd0c75f9364b5aed2875afa8d146504920fb51ceb3dfd4c91202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001071904
0x70e0ac6a666a2c8ab7392851318630f8a68d6d7afa23f319e44d3a7fea6605d6202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001071904
0x191f074d05d4599dfcfeae162667264a57e2278668e0db2370a1fde8aa88504e202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.001071904
0x2e62d32897f16842c135ff17d87e574b35dc865160d4d0f3ccaff7f3fe6877f5202 days 5 hrs ago0x409ec3b8c3ac3320cf2bd94d288334bbecc3079a  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.042280594
0x08b082afb8508e7b4a40273696eb705be3f51a7fd2dfa92dca378435ca31b03f202 days 5 hrs ago0x935d3be8136e04b843530a2359148385ee87beeb  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.000058384
0x879432451f5ab90a3ec35299ea35a371332643ac736705603ec1a19cde5358a2203 days 13 hrs ago0x55d43e43959b2dd37ec36661d9d0d878414b0908  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.0000453924
0xad5e59fd5651316455323ed6a38602ad02ed18bc6361d92d995ec19bbc91b813203 days 13 hrs ago0x55d43e43959b2dd37ec36661d9d0d878414b0908  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.0000453924
0x4bfaa96a10a2292c92f16feeb6a660019e119a9b41ed04245456d5fe794760ac204 days 10 hrs ago0x55d43e43959b2dd37ec36661d9d0d878414b0908  IN   0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether0.000813132
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x83635b3e33c068e71e0bbdbf4a341aa68800c21732edfef8447026bbddcab87b3754471202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x83635b3e33c068e71e0bbdbf4a341aa68800c21732edfef8447026bbddcab87b3754471202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x714f07485a665b4687bb184faaedf852bf9765270 Ether
0xe0c1df05fbf8894a5c60ea458fb43fa6abedb2459dad581524ca15b15f32442a3754417202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0xe0c1df05fbf8894a5c60ea458fb43fa6abedb2459dad581524ca15b15f32442a3754417202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x714f07485a665b4687bb184faaedf852bf9765270 Ether
0x35b2752b159bc8c12e219112fe61c03f782114c52d286e2b576aabefb57303053754412202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x35b2752b159bc8c12e219112fe61c03f782114c52d286e2b576aabefb57303053754412202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c1  Contract Creation0 Ether
0x35b2752b159bc8c12e219112fe61c03f782114c52d286e2b576aabefb57303053754412202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x545a4f861daf79bfb70ac2f85b5d5d47a799d49cf1b9ebdde5b3f489302d55c63754402202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x545a4f861daf79bfb70ac2f85b5d5d47a799d49cf1b9ebdde5b3f489302d55c63754402202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x714f07485a665b4687bb184faaedf852bf9765270 Ether
0x9fb9de2c3adc996780b31759e122332d6d60a07ebaef1c127c088e75196c5d833754402202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x9fb9de2c3adc996780b31759e122332d6d60a07ebaef1c127c088e75196c5d833754402202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c1  Contract Creation0 Ether
0x9fb9de2c3adc996780b31759e122332d6d60a07ebaef1c127c088e75196c5d833754402202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0xae48f9faee049b1ce14c2e9a0e106510cbf1fdabb8c1ab16dbad22d6bb3fa7bc3754394202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0xae48f9faee049b1ce14c2e9a0e106510cbf1fdabb8c1ab16dbad22d6bb3fa7bc3754394202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x714f07485a665b4687bb184faaedf852bf9765270 Ether
0xeacf63d2655231222f05b7b6f61c70cb2c81b1cd0b320074ea6b572cf84318b43754393202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0xeacf63d2655231222f05b7b6f61c70cb2c81b1cd0b320074ea6b572cf84318b43754393202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c1  Contract Creation0 Ether
0xeacf63d2655231222f05b7b6f61c70cb2c81b1cd0b320074ea6b572cf84318b43754393202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x9c6389adf413039db8e7ad63a0cb748aa7891e2905eeb0ebf292bff20c635d4d3754386202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x9c6389adf413039db8e7ad63a0cb748aa7891e2905eeb0ebf292bff20c635d4d3754386202 days 3 hrs ago0x714f07485a665b4687bb184faaedf852bf9765270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x9c6389adf413039db8e7ad63a0cb748aa7891e2905eeb0ebf292bff20c635d4d3754386202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x714f07485a665b4687bb184faaedf852bf9765270 Ether
0xded40efc6e4807def3dad1780b8d20b1559263ab0a3b12fe1c3624088a0847e23754384202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0xded40efc6e4807def3dad1780b8d20b1559263ab0a3b12fe1c3624088a0847e23754384202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c1  Contract Creation0 Ether
0xded40efc6e4807def3dad1780b8d20b1559263ab0a3b12fe1c3624088a0847e23754384202 days 3 hrs ago0x47ad76d6c4d7e1a01292869ac3c21578d44c76c10x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x2674b374f3c64c4102afd133c5fc4aa201f75dc2e5b95b9d8fd35acd736eeee53754281202 days 4 hrs ago0x4d384fa95d02053e8505f693e1dcd07d8deb2a270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
0x2674b374f3c64c4102afd133c5fc4aa201f75dc2e5b95b9d8fd35acd736eeee53754281202 days 4 hrs ago0x4d384fa95d02053e8505f693e1dcd07d8deb2a270x47ad76d6c4d7e1a01292869ac3c21578d44c76c10 Ether
[ Download CSV Export  ] 
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: UrbitToken
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

/**
 * @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);
}

/**
 * @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);
}

/**
 * @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;
  }
}

/**
 * @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];
  }

}

/**
 * @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;
  }

}

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(
    ERC20 token,
    address from,
    address to,
    uint256 value
  )
    internal
  {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address 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;
  }

}

/* solium-disable security/no-block-members */









/**
 * @title TokenVesting
 * @dev A token holder contract that can release its token balance gradually like a
 * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the
 * owner.
 */
contract TokenVesting is Ownable {
  using SafeMath for uint256;
  using SafeERC20 for ERC20Basic;

  event Released(uint256 amount);
  event Revoked();

  // beneficiary of tokens after they are released
  address public beneficiary;

  uint256 public cliff;
  uint256 public start;
  uint256 public duration;

  bool public revocable;

  mapping (address => uint256) public released;
  mapping (address => bool) public revoked;

  /**
   * @dev Creates a vesting contract that vests its balance of any ERC20 token to the
   * _beneficiary, gradually in a linear fashion until _start + _duration. By then all
   * of the balance will have vested.
   * @param _beneficiary address of the beneficiary to whom vested tokens are transferred
   * @param _cliff duration in seconds of the cliff in which tokens will begin to vest
   * @param _duration duration in seconds of the period in which the tokens will vest
   * @param _revocable whether the vesting is revocable or not
   */
  function TokenVesting(
    address _beneficiary,
    uint256 _start,
    uint256 _cliff,
    uint256 _duration,
    bool _revocable
  )
    public
  {
    require(_beneficiary != address(0));
    require(_cliff <= _duration);

    beneficiary = _beneficiary;
    revocable = _revocable;
    duration = _duration;
    cliff = _start.add(_cliff);
    start = _start;
  }

  /**
   * @notice Transfers vested tokens to beneficiary.
   * @param token ERC20 token which is being vested
   */
  function release(ERC20Basic token) public {
    uint256 unreleased = releasableAmount(token);

    require(unreleased > 0);

    released[token] = released[token].add(unreleased);

    token.safeTransfer(beneficiary, unreleased);

    emit Released(unreleased);
  }

  /**
   * @notice Allows the owner to revoke the vesting. Tokens already vested
   * remain in the contract, the rest are returned to the owner.
   * @param token ERC20 token which is being vested
   */
  function revoke(ERC20Basic token) public onlyOwner {
    require(revocable);
    require(!revoked[token]);

    uint256 balance = token.balanceOf(this);

    uint256 unreleased = releasableAmount(token);
    uint256 refund = balance.sub(unreleased);

    revoked[token] = true;

    token.safeTransfer(owner, refund);

    emit Revoked();
  }

  /**
   * @dev Calculates the amount that has already vested but hasn't been released yet.
   * @param token ERC20 token which is being vested
   */
  function releasableAmount(ERC20Basic token) public view returns (uint256) {
    return vestedAmount(token).sub(released[token]);
  }

  /**
   * @dev Calculates the amount that has already vested.
   * @param token ERC20 token which is being vested
   */
  function vestedAmount(ERC20Basic token) public view returns (uint256) {
    uint256 currentBalance = token.balanceOf(this);
    uint256 totalBalance = currentBalance.add(released[token]);

    if (block.timestamp < cliff) {
      return 0;
    } else if (block.timestamp >= start.add(duration) || revoked[token]) {
      return totalBalance;
    } else {
      return totalBalance.mul(block.timestamp.sub(start)).div(duration);
    }
  }
}

/**
 * @title PresaleTokenVesting
 * @dev PresaleTokenVesting allows for vesting periods which begin at
 * the time the token sale ends.
 */
contract PresaleTokenVesting is TokenVesting {

    function PresaleTokenVesting(address _beneficiary, uint256 _duration) TokenVesting(_beneficiary, 0, _duration, _duration, false) public {
    }

    function vestedAmount(ERC20Basic token) public view returns (uint256) {
        UrbitToken urbit = UrbitToken(token); 
        if (!urbit.saleClosed()) {
            return(0);
        } else {
            uint256 currentBalance = token.balanceOf(this);
            uint256 totalBalance = currentBalance.add(released[token]);
            uint256 saleClosedTime = urbit.saleClosedTimestamp();
            if (block.timestamp >= duration.add(saleClosedTime)) { // solium-disable-line security/no-block-members
                return totalBalance;
            } else {
                return totalBalance.mul(block.timestamp.sub(saleClosedTime)).div(duration); // solium-disable-line security/no-block-members

            }
        }
    }
}

/**
 * @title TokenVault
 * @dev TokenVault is a token holder contract that will allow a
 * beneficiary to spend the tokens from some function of a specified ERC20 token
 */
contract TokenVault {
    using SafeERC20 for ERC20;

    // ERC20 token contract being held
    ERC20 public token;

    function TokenVault(ERC20 _token) public {
        token = _token;
    }

    /**
     * @notice Allow the token itself to send tokens
     * using transferFrom().
     */
    function fillUpAllowance() public {
        uint256 amount = token.balanceOf(this);
        require(amount > 0);

        token.approve(token, amount);
    }
}

/**
 * @title UrbitToken
 * @dev UrbitToken is a contract for the Urbit token sale, creating the
 * tokens and managing the vaults.
 */
contract UrbitToken is BurnableToken, StandardToken {
    string public constant name = "Urbit Token"; // solium-disable-line uppercase
    string public constant symbol = "URB"; // solium-disable-line uppercase
    uint8 public constant decimals = 18; // solium-disable-line uppercase
    uint256 public constant MAGNITUDE = 10**uint256(decimals);

    /// Maximum tokens to be allocated (600 million)
    uint256 public constant HARD_CAP = 600000000 * MAGNITUDE;

    /// This address is used to manage the admin functions and allocate vested tokens
    address public urbitAdminAddress;

    /// This address is used to keep the tokens for sale
    address public saleTokensAddress;

    /// This vault is used to keep the bounty and marketing tokens
    TokenVault public bountyTokensVault;

    /// This vault is used to keep the team and founders tokens
    TokenVault public urbitTeamTokensVault;

    /// This vault is used to keep the advisors tokens
    TokenVault public advisorsTokensVault;

    /// This vault is used to keep the rewards tokens
    TokenVault public rewardsTokensVault;

    /// This vault is used to keep the retained tokens
    TokenVault public retainedTokensVault;

    /// Store the vesting contracts addresses
    mapping(address => address[]) public vestingsOf;

    /// when the token sale is closed, the trading is open
    uint256 public saleClosedTimestamp = 0;

    /// Only allowed to execute before the token sale is closed
    modifier beforeSaleClosed {
        require(!saleClosed());
        _;
    }

    /// Limiting functions to the admins of the token only
    modifier onlyAdmin {
        require(senderIsAdmin());
        _;
    }

    function UrbitToken(
        address _urbitAdminAddress,
        address _saleTokensAddress) public
    {
        require(_urbitAdminAddress != address(0));
        require(_saleTokensAddress != address(0));

        urbitAdminAddress = _urbitAdminAddress;
        saleTokensAddress = _saleTokensAddress;
    }

    /// @dev allows the admin to assign a new admin
    function changeAdmin(address _newUrbitAdminAddress) external onlyAdmin {
        require(_newUrbitAdminAddress != address(0));
        urbitAdminAddress = _newUrbitAdminAddress;
    }

    /// @dev creates the tokens needed for sale
    function createSaleTokens() external onlyAdmin beforeSaleClosed {
        require(bountyTokensVault == address(0));

        /// Maximum tokens to be allocated on the sale
        /// 252,000,000 URB
        createTokens(252000000, saleTokensAddress);

        /// Bounty tokens - 24M URB
        bountyTokensVault = createTokenVault(24000000);
    }

    /// @dev Close the token sale
    function closeSale() external onlyAdmin beforeSaleClosed {
        createAwardTokens();
        saleClosedTimestamp = block.timestamp; // solium-disable-line security/no-block-members
    }

    /// @dev Once the token sale is closed and tokens are distributed,
    /// burn the remaining unsold, undistributed tokens
    function burnUnsoldTokens() external onlyAdmin {
        require(saleClosed());
        _burn(saleTokensAddress, balances[saleTokensAddress]);
        _burn(bountyTokensVault, balances[bountyTokensVault]);
    }

    function lockBountyTokens(uint256 _tokensAmount, address _beneficiary, uint256 _duration) external beforeSaleClosed {
        require(msg.sender == saleTokensAddress || senderIsAdmin());
        _presaleLock(bountyTokensVault, _tokensAmount, _beneficiary, _duration);
    }

    /// @dev Shorter version of vest tokens (lock for a single whole period)
    function lockTokens(address _fromVault, uint256 _tokensAmount, address _beneficiary, uint256 _unlockTime) external onlyAdmin {
        this.vestTokens(_fromVault, _tokensAmount, _beneficiary, _unlockTime, 0, 0, false); // solium-disable-line arg-overflow
    }

    /// @dev Vest tokens
    function vestTokens(
        address _fromVault,
        uint256 _tokensAmount,
        address _beneficiary,
        uint256 _start,
        uint256 _cliff,
        uint256 _duration,
        bool _revocable)
        external onlyAdmin
    {
        TokenVesting vesting = new TokenVesting(_beneficiary, _start, _cliff, _duration, _revocable);
        vestingsOf[_beneficiary].push(address(vesting));

        require(this.transferFrom(_fromVault, vesting, _tokensAmount));
    }

    /// @dev releases vested tokens for the caller's own address
    function releaseVestedTokens() external {
        this.releaseVestedTokensFor(msg.sender);
    }

    /// @dev releases vested tokens for the specified address.
    /// Can be called by any account for any address.
    function releaseVestedTokensFor(address _owner) external {
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            TokenVesting tv = TokenVesting(vestingsOf[_owner][i]);
            tv.release(ERC20Basic(address(this)));
        }
    }

    /// @dev returns whether the sender is admin (or the contract itself)
    function senderIsAdmin() public view returns (bool) {
        return (msg.sender == urbitAdminAddress || msg.sender == address(this));
    }

    /// @dev The sale is closed when the saleClosedTimestamp is set.
    function saleClosed() public view returns (bool) {
        return (saleClosedTimestamp > 0);
    }

    /// @dev check the locked balance for an address
    function lockedBalanceOf(address _owner) public view returns (uint256) {
        uint256 result = 0;
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            result += balances[vestingsOf[_owner][i]];
        }
        return result;
    }

    /// @dev check the locked but releasable balance for an address
    function releasableBalanceOf(address _owner) public view returns (uint256) {
        uint256 result = 0;
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            result += TokenVesting(vestingsOf[_owner][i]).releasableAmount(this);
        }
        return result;
    }

    /// @dev get the number of TokenVesting contracts for an address
    function vestingCountOf(address _owner) public view returns (uint) {
        return vestingsOf[_owner].length;
    }

    /// @dev get the specified TokenVesting contract address for an address
    function vestingOf(address _owner, uint _index) public view returns (address) {
        return vestingsOf[_owner][_index];
    }

    /// @dev Trading is limited before the sale is closed
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        if (saleClosed() || msg.sender == saleTokensAddress || senderIsAdmin()) {
            return super.transferFrom(_from, _to, _value);
        }
        return false;
    }

    /// @dev Trading is limited before the sale is closed
    function transfer(address _to, uint256 _value) public returns (bool) {
        if (saleClosed() || msg.sender == saleTokensAddress || senderIsAdmin()) {
            return super.transfer(_to, _value);
        }
        return false;
    }

    /// @dev Grant tokens which begin vesting upon close of sale.
    function _presaleLock(TokenVault _fromVault, uint256 _tokensAmount, address _beneficiary, uint256 _duration) internal {
        PresaleTokenVesting vesting = new PresaleTokenVesting(_beneficiary, _duration);
        vestingsOf[_beneficiary].push(address(vesting));

        require(this.transferFrom(_fromVault, vesting, _tokensAmount));
    }

    // @dev create specified number of toekns and transfer to destination
    function createTokens(uint32 count, address destination) internal onlyAdmin {
        uint256 tokens = count * MAGNITUDE;
        totalSupply_ = totalSupply_.add(tokens);
        balances[destination] = tokens;
        emit Transfer(0x0, destination, tokens);
    }

    /// @dev Create a TokenVault and fill with the specified newly minted tokens
    function createTokenVault(uint32 count) internal onlyAdmin returns (TokenVault) {
        TokenVault tokenVault = new TokenVault(ERC20(this));
        createTokens(count, tokenVault);
        tokenVault.fillUpAllowance();
        return tokenVault;
    }

    /// @dev Creates the tokens awarded after the sale is closed
    function createAwardTokens() internal onlyAdmin {
        /// Team tokens - 30M URB
        urbitTeamTokensVault = createTokenVault(30000000);

        /// Advisors tokens - 24M URB
        advisorsTokensVault = createTokenVault(24000000);

        /// Rewards tokens - 150M URB
        rewardsTokensVault = createTokenVault(150000000);

        /// Retained tokens - 120M URB
        retainedTokensVault = createTokenVault(120000000);
    }
}

    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":false,"inputs":[{"name":"_fromVault","type":"address"},{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_unlockTime","type":"uint256"}],"name":"lockTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"vestingCountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"urbitTeamTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleClosedTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"releasableBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseVestedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_duration","type":"uint256"}],"name":"lockBountyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"lockedBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"retainedTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"senderIsAdmin","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":"MAGNITUDE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"vestingOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_newUrbitAdminAddress","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"burnUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"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":"createSaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleTokensAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fromVault","type":"address"},{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_revocable","type":"bool"}],"name":"vestTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"releaseVestedTokensFor","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"bountyTokensVault","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":"","type":"address"},{"name":"","type":"uint256"}],"name":"vestingsOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"urbitAdminAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"advisorsTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_urbitAdminAddress","type":"address"},{"name":"_saleTokensAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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
60806040526000600b5534801561001557600080fd5b50604051604080613007833981016040528051602090910151600160a060020a038216151561004357600080fd5b600160a060020a038116151561005857600080fd5b60038054600160a060020a03938416600160a060020a03199182161790915560048054929093169116179055612f74806100936000396000f300608060405260043610620001fe5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811462000203578063095ea7b314620002935780630f98a9cc14620002ce57806318160ddd146200030157806323b872dd146200032b578063257341a814620003585780632740509d146200037c578063313ce56714620003b05780633a03171c14620003de57806342966c6814620003f657806348a50a5414620004115780634f801270146200042957806354dd1da4146200044d57806356d40468146200046557806359355736146200048f5780636117c9db14620004b3578063621d388c14620004cb5780636618846314620004e35780636d3036a7146200050a5780636f503e67146200052257806370a0823114620005495780638f283970146200056d578063940bb344146200059157806395d89b4114620005a9578063a9059cbb14620005c1578063ab90a8ac14620005e8578063ae75c4f71462000600578063afa317441462000618578063b8c766b81462000630578063bccb8fc01462000648578063c26fe7ce1462000684578063d73dd62314620006a8578063dc16565214620006cf578063dd62ed3e14620006e7578063dfb9366d1462000711578063e19136a41462000738578063ee55efee1462000750578063fd82a59f1462000768575b600080fd5b3480156200021057600080fd5b506200021b62000780565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620002575781810151838201526020016200023d565b50505050905090810190601f168015620002855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015620002a057600080fd5b50620002ba600160a060020a0360043516602435620007b7565b604080519115158252519081900360200190f35b348015620002db57600080fd5b50620002ff600160a060020a0360043581169060243590604435166064356200081e565b005b3480156200030e57600080fd5b5062000319620008dd565b60408051918252519081900360200190f35b3480156200033857600080fd5b50620002ba600160a060020a0360043581169060243516604435620008e3565b3480156200036557600080fd5b5062000319600160a060020a03600435166200093c565b3480156200038957600080fd5b506200039462000957565b60408051600160a060020a039092168252519081900360200190f35b348015620003bd57600080fd5b50620003c862000966565b6040805160ff9092168252519081900360200190f35b348015620003eb57600080fd5b50620003196200096b565b3480156200040357600080fd5b50620002ff6004356200097b565b3480156200041e57600080fd5b50620003196200098a565b3480156200043657600080fd5b5062000319600160a060020a036004351662000990565b3480156200045a57600080fd5b50620002ff62000a8f565b3480156200047257600080fd5b50620002ff600435600160a060020a036024351660443562000b02565b3480156200049c57600080fd5b5062000319600160a060020a036004351662000b61565b348015620004c057600080fd5b506200039462000be2565b348015620004d857600080fd5b50620002ba62000bf1565b348015620004f057600080fd5b50620002ba600160a060020a036004351660243562000c12565b3480156200051757600080fd5b506200031962000d06565b3480156200052f57600080fd5b5062000394600160a060020a036004351660243562000d12565b3480156200055657600080fd5b5062000319600160a060020a036004351662000d53565b3480156200057a57600080fd5b50620002ff600160a060020a036004351662000d6e565b3480156200059e57600080fd5b50620002ff62000dbc565b348015620005b657600080fd5b506200021b62000e38565b348015620005ce57600080fd5b50620002ba600160a060020a036004351660243562000e6f565b348015620005f557600080fd5b50620002ff62000ec5565b3480156200060d57600080fd5b506200039462000f55565b3480156200062557600080fd5b506200039462000f64565b3480156200063d57600080fd5b50620002ba62000f73565b3480156200065557600080fd5b50620002ff600160a060020a03600435811690602435906044351660643560843560a43560c435151562000f7c565b3480156200069157600080fd5b50620002ff600160a060020a0360043516620010cb565b348015620006b557600080fd5b50620002ba600160a060020a0360043516602435620011a6565b348015620006dc57600080fd5b506200039462001241565b348015620006f457600080fd5b5062000319600160a060020a036004358116906024351662001250565b3480156200071e57600080fd5b5062000394600160a060020a03600435166024356200127b565b3480156200074557600080fd5b5062000394620012b3565b3480156200075d57600080fd5b50620002ff620012c2565b3480156200077557600080fd5b5062000394620012fd565b60408051808201909152600b81527f557262697420546f6b656e000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6200082862000bf1565b15156200083457600080fd5b604080517fbccb8fc0000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201869052841660448201526064810183905260006084820181905260a4820181905260c482018190529151309263bccb8fc09260e4808201939182900301818387803b158015620008be57600080fd5b505af1158015620008d3573d6000803e3d6000fd5b5050505050505050565b60015490565b6000620008ef62000f73565b80620009055750600454600160a060020a031633145b806200091657506200091662000bf1565b156200093157620009298484846200130c565b905062000935565b5060005b9392505050565b600160a060020a03166000908152600a602052604090205490565b600654600160a060020a031681565b601281565b6b01f04ef12cb04cf15800000081565b6200098733826200147b565b50565b600b5481565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a8857600160a060020a0384166000908152600a60205260409020805482908110620009db57fe5b6000918252602080832090910154604080517f1726cbc80000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0390921693631726cbc89360248084019491939192918390030190829087803b15801562000a4c57600080fd5b505af115801562000a61573d6000803e3d6000fd5b505050506040513d602081101562000a7857600080fd5b5051919091019060010162000995565b5092915050565b604080517fc26fe7ce0000000000000000000000000000000000000000000000000000000081523360048201529051309163c26fe7ce91602480830192600092919082900301818387803b15801562000ae757600080fd5b505af115801562000afc573d6000803e3d6000fd5b50505050565b62000b0c62000f73565b1562000b1757600080fd5b600454600160a060020a031633148062000b36575062000b3662000bf1565b151562000b4257600080fd5b60055462000b5c90600160a060020a031684848462001570565b505050565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a8857600160a060020a0384166000908152600a6020526040812080548291908490811062000baf57fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054919091019060010162000b66565b600954600160a060020a031681565b600354600090600160a060020a031633148062000c0d57503330145b905090565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111562000c6957336000908152600260209081526040808320600160a060020a038816845290915281205562000ca0565b62000c7b818463ffffffff6200169516565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b670de0b6b3a764000081565b600160a060020a0382166000908152600a6020526040812080548390811062000d3757fe5b600091825260209091200154600160a060020a03169392505050565b600160a060020a031660009081526020819052604090205490565b62000d7862000bf1565b151562000d8457600080fd5b600160a060020a038116151562000d9a57600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b62000dc662000bf1565b151562000dd257600080fd5b62000ddc62000f73565b151562000de857600080fd5b600454600160a060020a031660008181526020819052604090205462000e0f91906200147b565b600554600160a060020a031660008181526020819052604090205462000e3691906200147b565b565b60408051808201909152600381527f5552420000000000000000000000000000000000000000000000000000000000602082015281565b600062000e7b62000f73565b8062000e915750600454600160a060020a031633145b8062000ea2575062000ea262000bf1565b1562000ebc5762000eb48383620016a8565b905062000818565b50600092915050565b62000ecf62000bf1565b151562000edb57600080fd5b62000ee562000f73565b1562000ef057600080fd5b600554600160a060020a03161562000f0757600080fd5b60045462000f2490630f05370090600160a060020a03166200177e565b62000f3363016e360062001800565b60058054600160a060020a031916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600454600160a060020a031681565b600b5460001090565b600062000f8862000bf1565b151562000f9457600080fd5b858585858562000fa3620019bb565b600160a060020a039095168552602085019390935260408085019290925260608401529015156080830152519081900360a001906000f08015801562000fed573d6000803e3d6000fd5b50600160a060020a038781166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948e1660048601526024850152604484018c90525193945030936323b872dd93606480820194918390030190829087803b1580156200109157600080fd5b505af1158015620010a6573d6000803e3d6000fd5b505050506040513d6020811015620010bd57600080fd5b50511515620008d357600080fd5b6000805b600160a060020a0383166000908152600a602052604090205482101562000b5c57600160a060020a0383166000908152600a602052604090208054839081106200111557fe5b6000918252602082200154604080517f191655870000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a039092169350839263191655879260248084019382900301818387803b1580156200118057600080fd5b505af115801562001195573d6000803e3d6000fd5b505060019093019250620010cf9050565b336000908152600260209081526040808320600160a060020a0386168452909152812054620011dc908363ffffffff620018d916565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600554600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600a602052816000526040600020818154811015156200129757fe5b600091825260209091200154600160a060020a03169150829050565b600354600160a060020a031681565b620012cc62000bf1565b1515620012d857600080fd5b620012e262000f73565b15620012ed57600080fd5b620012f7620018e7565b42600b55565b600754600160a060020a031681565b6000600160a060020a03831615156200132457600080fd5b600160a060020a0384166000908152602081905260409020548211156200134a57600080fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156200137b57600080fd5b600160a060020a038416600090815260208190526040902054620013a6908363ffffffff6200169516565b600160a060020a038086166000908152602081905260408082209390935590851681522054620013dd908363ffffffff620018d916565b600160a060020a0380851660009081526020818152604080832094909455918716815260028252828120338252909152205462001421908363ffffffff6200169516565b600160a060020a038086166000818152600260209081526040808320338452825291829020949094558051868152905192871693919260008051602062002f29833981519152929181900390910190a35060019392505050565b600160a060020a038216600090815260208190526040902054811115620014a157600080fd5b600160a060020a038216600090815260208190526040902054620014cc908263ffffffff6200169516565b600160a060020a038316600090815260208190526040902055600154620014fa908263ffffffff6200169516565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a0385169160008051602062002f298339815191529181900360200190a35050565b600082826200157e620019cc565b600160a060020a0390921682526020820152604080519182900301906000f080158015620015b0573d6000803e3d6000fd5b50600160a060020a038481166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948b1660048601526024850152604484018990525193945030936323b872dd93606480820194918390030190829087803b1580156200165457600080fd5b505af115801562001669573d6000803e3d6000fd5b505050506040513d60208110156200168057600080fd5b505115156200168e57600080fd5b5050505050565b600082821115620016a257fe5b50900390565b6000600160a060020a0383161515620016c057600080fd5b33600090815260208190526040902054821115620016dd57600080fd5b33600090815260208190526040902054620016ff908363ffffffff6200169516565b3360009081526020819052604080822092909255600160a060020a0385168152205462001733908363ffffffff620018d916565b600160a060020a0384166000818152602081815260409182902093909355805185815290519192339260008051602062002f298339815191529281900390910190a350600192915050565b60006200178a62000bf1565b15156200179657600080fd5b5060015463ffffffff808416670de0b6b3a76400000291620017bb918390620018d916565b600155600160a060020a0382166000818152602081815260408083208590558051858152905160008051602062002f29833981519152929181900390910190a3505050565b6000806200180d62000bf1565b15156200181957600080fd5b3062001824620019dd565b600160a060020a03909116815260405190819003602001906000f08015801562001852573d6000803e3d6000fd5b5090506200186183826200177e565b80600160a060020a03166312d60f866040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015620018b957600080fd5b505af1158015620018ce573d6000803e3d6000fd5b509295945050505050565b818101828110156200081857fe5b620018f162000bf1565b1515620018fd57600080fd5b6200190c6301c9c38062001800565b60068054600160a060020a031916600160a060020a03929092169190911790556200193b63016e360062001800565b60078054600160a060020a031916600160a060020a03929092169190911790556200196a6308f0d18062001800565b60088054600160a060020a031916600160a060020a0392909216919091179055620019996307270e0062001800565b60098054600160a060020a031916600160a060020a0392909216919091179055565b6040516108fb80620019ef83390190565b6040516109a580620022ea83390190565b60405161029a8062002c8f833901905600608060405234801561001057600080fd5b5060405160a0806108fb8339810160409081528151602083015191830151606084015160809094015160008054600160a060020a0319163317905591939091600160a060020a038516151561006457600080fd5b8183111561007157600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100b684846401000000006100c581026107011704565b600255505050600355506100d8565b818101828110156100d257fe5b92915050565b610814806100e76000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b506101666104a0565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a03600435166104af565b3480156101af57600080fd5b506101b8610616565b604080519115158252519081900360200190f35b3480156101d857600080fd5b5061016661061f565b3480156101ed57600080fd5b506100c5600160a060020a036004351661062e565b34801561020e57600080fd5b506100c5610640565b34801561022357600080fd5b5061012e600160a060020a0360043516610646565b34801561024457600080fd5b506101b8600160a060020a03600435166106da565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6106ef16565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff61070116565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff61070e16565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600083600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050506040513d60208110156103d357600080fd5b5051600160a060020a03851660009081526006602052604090205490925061040290839063ffffffff61070116565b90506002544210156104175760009250610499565b60045460035461042c9163ffffffff61070116565b421015806104525750600160a060020a03841660009081526007602052604090205460ff165b1561045f57809250610499565b61049660045461048a61047d600354426106ef90919063ffffffff16565b849063ffffffff6107aa16565b9063ffffffff6107d316565b92505b5050919050565b600154600160a060020a031681565b6000805481908190600160a060020a031633146104cb57600080fd5b60055460ff1615156104dc57600080fd5b600160a060020a03841660009081526007602052604090205460ff161561050257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561056357600080fd5b505af1158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b5051925061059a84610265565b91506105ac838363ffffffff6106ef16565b600160a060020a038086166000818152600760205260408120805460ff19166001179055549293506105e7929091168363ffffffff61070e16565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461065d57600080fd5b600160a060020a038116151561067257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156106fb57fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b505115156107a557fe5b505050565b60008215156107bb57506000610297565b508181028183828115156107cb57fe5b041461029757fe5b600081838115156107e057fe5b0493925050505600a165627a7a723058203b912808ba389219e34f80a7eafe3b87073bdb93e2915516f5ef68eee3f7619c0029608060405234801561001057600080fd5b506040516040806109a583398101604052805160209091015160008054600160a060020a031916331781558290828082600160a060020a038516151561005557600080fd5b8183111561006257600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100a784846401000000006100b981026107b71704565b600255505050600355506100cc915050565b818101828110156100c657fe5b92915050565b6108ca806100db6000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b50610166610556565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a0360043516610565565b3480156101af57600080fd5b506101b86106cc565b604080519115158252519081900360200190f35b3480156101d857600080fd5b506101666106d5565b3480156101ed57600080fd5b506100c5600160a060020a03600435166106e4565b34801561020e57600080fd5b506100c56106f6565b34801561022357600080fd5b5061012e600160a060020a03600435166106fc565b34801561024457600080fd5b506101b8600160a060020a0360043516610790565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6107a516565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff6107b716565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff6107c416565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600080600085935083600160a060020a031663b8c766b86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050506040513d60208110156103bc57600080fd5b505115156103cd576000945061054d565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038816916370a082319160248083019260209291908290030181600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b5051600160a060020a03871660009081526006602052604090205490935061048790849063ffffffff6107b716565b915083600160a060020a03166348a50a546040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050506040513d60208110156104f157600080fd5b5051600454909150610509908263ffffffff6107b716565b42106105175781945061054d565b60045461054a9061053e610531428563ffffffff6107a516565b859063ffffffff61086016565b9063ffffffff61088916565b94505b50505050919050565b600154600160a060020a031681565b6000805481908190600160a060020a0316331461058157600080fd5b60055460ff16151561059257600080fd5b600160a060020a03841660009081526007602052604090205460ff16156105b857600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561061957600080fd5b505af115801561062d573d6000803e3d6000fd5b505050506040513d602081101561064357600080fd5b5051925061065084610265565b9150610662838363ffffffff6107a516565b600160a060020a038086166000818152600760205260408120805460ff191660011790555492935061069d929091168363ffffffff6107c416565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461071357600080fd5b600160a060020a038116151561072857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156107b157fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b5051151561085b57fe5b505050565b600082151561087157506000610297565b5081810281838281151561088157fe5b041461029757fe5b6000818381151561089657fe5b0493925050505600a165627a7a7230582026228171c6f63dd3c8956f7e0d4072ae436cda9d4555b53e3e73fcd3c4f016f90029608060405234801561001057600080fd5b5060405160208061029a833981016040525160008054600160a060020a03909216600160a060020a0319909216919091179055610248806100526000396000f30060806040526004361061004b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312d60f868114610050578063fc0c546a14610067575b600080fd5b34801561005c57600080fd5b506100656100a5565b005b34801561007357600080fd5b5061007c610200565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a082319160248082019260209290919082900301818787803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b505050506040513d602081101561014257600080fd5b505190506000811161015357600080fd5b60008054604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301819052602483018590529051909263095ea7b392604480820193602093909283900390910190829087803b1580156101d157600080fd5b505af11580156101e5573d6000803e3d6000fd5b505050506040513d60208110156101fb57600080fd5b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a7230582051a22c0b4950de51e45d2b916904359c176e8e454873b20012677c7b6f8f4c5f0029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820a10118b9c44f35049c290ea65a8fd9796a3ad091e5fb9b8a9445a4783d497b8a0029000000000000000000000000935d3be8136e04b843530a2359148385ee87beeb00000000000000000000000055d43e43959b2dd37ec36661d9d0d878414b0908

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000935d3be8136e04b843530a2359148385ee87beeb
Arg [1] : 00000000000000000000000055d43e43959b2dd37ec36661d9d0d878414b0908


   Swarm Source:
bzzr://a10118b9c44f35049c290ea65a8fd9796a3ad091e5fb9b8a9445a4783d497b8a

 

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