ETH Price: $3,479.60 (+0.45%)

Token

vSlice (VSL)
 

Overview

Max Total Supply

33,390,496.03337560002666059 VSL

Holders

658 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
601 VSL

Value
$0.00
0x3393d3f9C5E73EeF8eaD8ef20ebed0a8500D2209
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

vSlice token contract has migrated to 0xDb144CD0F15eE40AaC5602364B470d703d7e16b6.

# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x2D224e27...604B79754
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.4.4+commit.4633f3de

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2016-11-14
*/

pragma solidity ^0.4.0;
/*
This vSlice token contract is based on the ERC20 token contract. Additional
functionality has been integrated:
* the contract Lockable, which is used as a parent of the Token contract
* the function mintTokens(), which makes use of the currentSwapRate() and safeToAdd() helpers
* the function disableTokenSwapLock()
*/

contract Lockable {
    uint public numOfCurrentEpoch;
    uint public creationTime;
    uint public constant UNLOCKED_TIME = 25 days;
    uint public constant LOCKED_TIME = 5 days;
    uint public constant EPOCH_LENGTH = 30 days;
    bool public lock;
    bool public tokenSwapLock;

    event Locked();
    event Unlocked();

    // This modifier should prevent tokens transfers while the tokenswap
    // is still ongoing
    modifier isTokenSwapOn {
        if (tokenSwapLock) throw;
        _;
    }

    // This modifier checks and, if needed, updates the value of current
    // token contract epoch, before executing a token transfer of any
    // kind
    modifier isNewEpoch {
        if (numOfCurrentEpoch * EPOCH_LENGTH + creationTime < now ) {
            numOfCurrentEpoch = (now - creationTime) / EPOCH_LENGTH + 1;
        }
        _;
    }

    // This modifier check whether the contract should be in a locked
    // or unlocked state, then acts and updates accordingly if
    // necessary
    modifier checkLock {
        if ((creationTime + numOfCurrentEpoch * UNLOCKED_TIME) +
        (numOfCurrentEpoch - 1) * LOCKED_TIME < now) {
            // avoids needless lock state change and event spamming
            if (lock) throw;

            lock = true;
            Locked();
            return;
        }
        else {
            // only set to false if in a locked state, to avoid
            // needless state change and event spam
            if (lock) {
                lock = false;
                Unlocked();
            }
        }
        _;
    }

    function Lockable() {
        creationTime = now;
        numOfCurrentEpoch = 1;
        tokenSwapLock = true;
    }
}


contract ERC20 {
    function totalSupply() constant returns (uint);
    function balanceOf(address who) constant returns (uint);
    function allowance(address owner, address spender) constant returns (uint);

    function transfer(address to, uint value) returns (bool ok);
    function transferFrom(address from, address to, uint value) returns (bool ok);
    function approve(address spender, uint value) returns (bool ok);

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

contract Token is ERC20, Lockable {

  mapping( address => uint ) _balances;
  mapping( address => mapping( address => uint ) ) _approvals;
  uint _supply;
  address public walletAddress;

  event TokenMint(address newTokenHolder, uint amountOfTokens);
  event TokenSwapOver();

  modifier onlyFromWallet {
      if (msg.sender != walletAddress) throw;
      _;
  }

  function Token( uint initial_balance, address wallet) {
    _balances[msg.sender] = initial_balance;
    _supply = initial_balance;
    walletAddress = wallet;
  }

  function totalSupply() constant returns (uint supply) {
    return _supply;
  }

  function balanceOf( address who ) constant returns (uint value) {
    return _balances[who];
  }

  function allowance(address owner, address spender) constant returns (uint _allowance) {
    return _approvals[owner][spender];
  }

  // A helper to notify if overflow occurs
  function safeToAdd(uint a, uint b) internal returns (bool) {
    return (a + b >= a && a + b >= b);
  }

  function transfer( address to, uint value)
    isTokenSwapOn
    isNewEpoch
    checkLock
    returns (bool ok) {

    if( _balances[msg.sender] < value ) {
        throw;
    }
    if( !safeToAdd(_balances[to], value) ) {
        throw;
    }

    _balances[msg.sender] -= value;
    _balances[to] += value;
    Transfer( msg.sender, to, value );
    return true;
  }

  function transferFrom( address from, address to, uint value)
    isTokenSwapOn
    isNewEpoch
    checkLock
    returns (bool ok) {
    // if you don't have enough balance, throw
    if( _balances[from] < value ) {
        throw;
    }
    // if you don't have approval, throw
    if( _approvals[from][msg.sender] < value ) {
        throw;
    }
    if( !safeToAdd(_balances[to], value) ) {
        throw;
    }
    // transfer and return true
    _approvals[from][msg.sender] -= value;
    _balances[from] -= value;
    _balances[to] += value;
    Transfer( from, to, value );
    return true;
  }

  function approve(address spender, uint value)
    isTokenSwapOn
    isNewEpoch
    checkLock
    returns (bool ok) {
    _approvals[msg.sender][spender] = value;
    Approval( msg.sender, spender, value );
    return true;
  }

  // The function currentSwapRate() returns the current exchange rate
  // between vSlice tokens and Ether during the token swap period
  function currentSwapRate() constant returns(uint) {
      if (creationTime + 1 weeks > now) {
          return 130;
      }
      else if (creationTime + 2 weeks > now) {
          return 120;
      }
      else if (creationTime + 4 weeks > now) {
          return 100;
      }
      else {
          return 0;
      }
  }

  // The function mintTokens is only usable by the chosen wallet
  // contract to mint a number of tokens proportional to the
  // amount of ether sent to the wallet contract. The function
  // can only be called during the tokenswap period
  function mintTokens(address newTokenHolder, uint etherAmount)
    external
    onlyFromWallet {

        uint tokensAmount = currentSwapRate() * etherAmount;
        if(!safeToAdd(_balances[newTokenHolder],tokensAmount )) throw;
        if(!safeToAdd(_supply,tokensAmount)) throw;

        _balances[newTokenHolder] += tokensAmount;
        _supply += tokensAmount;

        TokenMint(newTokenHolder, tokensAmount);
  }

  // The function disableTokenSwapLock() is called by the wallet
  // contract once the token swap has reached its end conditions
  function disableTokenSwapLock()
    external
    onlyFromWallet {
        tokenSwapLock = false;
        TokenSwapOver();
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"numOfCurrentEpoch","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableTokenSwapLock","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentSwapRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"walletAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"value","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"EPOCH_LENGTH","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"UNLOCKED_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"LOCKED_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"creationTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"_allowance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenSwapLock","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newTokenHolder","type":"address"},{"name":"etherAmount","type":"uint256"}],"name":"mintTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lock","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"inputs":[{"name":"initial_balance","type":"uint256"},{"name":"wallet","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newTokenHolder","type":"address"},{"indexed":false,"name":"amountOfTokens","type":"uint256"}],"name":"TokenMint","type":"event"},{"anonymous":false,"inputs":[],"name":"TokenSwapOver","type":"event"},{"anonymous":false,"inputs":[],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

606060408181528061095a833960a09052516080514260019081556000556002805461ff001916610100179055600160a060020a03331660009081526003602052604090208290556005829055600680546c0100000000000000000000000080840204600160a060020a031990911617905550506108d9806100816000396000f3606060405236156100cf5760e060020a6000350463018e13d081146100d4578063095ea7b3146100e257806318160ddd1461010957806323b872dd146101185780633592f369146101425780635334c231146101655780636ad5b3ea1461017257806370a0823114610189578063a9059cbb146101bc578063ac4746ab146101e3578063b7930507146101f2578063d81dfe3014610201578063d8270dce14610210578063dd62ed3e1461021e578063ef40c3e614610259578063f0dda65c14610270578063f83d08ba1461029c575b610002565b34610002576101aa60005481565b34610002576102ad60043560243560025460009060ff610100909104161561030057610002565b34610002576101aa6005545b90565b34610002576102ad60043560243560443560025460009060ff610100909104161561044457610002565b34610002576102c160065433600160a060020a0390811691161461065157610002565b34610002576101aa6102c8565b34610002576102e4600654600160a060020a031681565b3461000257600160a060020a03600435166000908152600360205260409020545b60408051918252519081900360200190f35b34610002576102ad60043560243560025460009060ff61010090910416156106c357610002565b34610002576101aa62278d0081565b34610002576101aa6220f58081565b34610002576101aa6206978081565b34610002576101aa60015481565b34610002576101aa600435602435600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b34610002576102ad60025460ff6101009091041681565b34610002576102c160043560243560065460009033600160a060020a039081169116146102c357610002565b34610002576102ad60025460ff1681565b604080519115158252519081900360200190f35b005b8161082a5b60004260016000505462093a8001111561068757506082610115565b60408051600160a060020a039092168252519081900360200190f35b4260016000505462278d006000600050540201101561032d5760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156103655760025460ff161561040957610002565b60025460ff16156103a4576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a03338116600081815260046020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3506001610253565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a1610253565b4260016000505462278d00600060005054020110156104715760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156104a95760025460ff161561050e57610002565b60025460ff16156104e8576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0384166000908152600360205260409020548290101561054c57610002565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a15b9392505050565b600160a060020a03808516600090815260046020908152604080832033909416835292905220548290101561058057610002565b600160a060020a0383166000908152600360205260409020546105bc90835b600082828401101580156105b557508182840110155b9050610253565b15156105c757610002565b600160a060020a03808516600081815260046020908152604080832033861684528252808320805488900390558383526003825280832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610545565b6002805461ff00191690556040517f0d27864fb2752ddaaa945c943c62b77c1476125056d0343ab1e2159da779fa4090600090a1565b42600160005054621275000111156106a157506078610115565b426001600050546224ea000111156106bb57506064610115565b506000610115565b4260016000505462278d00600060005054020110156106f05760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156107285760025460ff161561040957610002565b60025460ff1615610767576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0333166000908152600360205260409020548290101561078d57610002565b600160a060020a0383166000908152600360205260409020546107b0908361059f565b15156107bb57610002565b600160a060020a03338116600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610253565b600160a060020a03851660009081526003602052604090205491029150610851908261059f565b151561085c57610002565b600554610869908261059f565b151561087457610002565b600160a060020a03831660008181526003602090815260409182902080548501905560058054850190558151928352820183905280517f36bf5aa3964be01dbd95a0154a8930793fe68353bdc580871ffb2c911366bbc79281900390910190a150505056

Deployed Bytecode

0x606060405236156100cf5760e060020a6000350463018e13d081146100d4578063095ea7b3146100e257806318160ddd1461010957806323b872dd146101185780633592f369146101425780635334c231146101655780636ad5b3ea1461017257806370a0823114610189578063a9059cbb146101bc578063ac4746ab146101e3578063b7930507146101f2578063d81dfe3014610201578063d8270dce14610210578063dd62ed3e1461021e578063ef40c3e614610259578063f0dda65c14610270578063f83d08ba1461029c575b610002565b34610002576101aa60005481565b34610002576102ad60043560243560025460009060ff610100909104161561030057610002565b34610002576101aa6005545b90565b34610002576102ad60043560243560443560025460009060ff610100909104161561044457610002565b34610002576102c160065433600160a060020a0390811691161461065157610002565b34610002576101aa6102c8565b34610002576102e4600654600160a060020a031681565b3461000257600160a060020a03600435166000908152600360205260409020545b60408051918252519081900360200190f35b34610002576102ad60043560243560025460009060ff61010090910416156106c357610002565b34610002576101aa62278d0081565b34610002576101aa6220f58081565b34610002576101aa6206978081565b34610002576101aa60015481565b34610002576101aa600435602435600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b34610002576102ad60025460ff6101009091041681565b34610002576102c160043560243560065460009033600160a060020a039081169116146102c357610002565b34610002576102ad60025460ff1681565b604080519115158252519081900360200190f35b005b8161082a5b60004260016000505462093a8001111561068757506082610115565b60408051600160a060020a039092168252519081900360200190f35b4260016000505462278d006000600050540201101561032d5760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156103655760025460ff161561040957610002565b60025460ff16156103a4576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a03338116600081815260046020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3506001610253565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a1610253565b4260016000505462278d00600060005054020110156104715760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156104a95760025460ff161561050e57610002565b60025460ff16156104e8576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0384166000908152600360205260409020548290101561054c57610002565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a15b9392505050565b600160a060020a03808516600090815260046020908152604080832033909416835292905220548290101561058057610002565b600160a060020a0383166000908152600360205260409020546105bc90835b600082828401101580156105b557508182840110155b9050610253565b15156105c757610002565b600160a060020a03808516600081815260046020908152604080832033861684528252808320805488900390558383526003825280832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610545565b6002805461ff00191690556040517f0d27864fb2752ddaaa945c943c62b77c1476125056d0343ab1e2159da779fa4090600090a1565b42600160005054621275000111156106a157506078610115565b426001600050546224ea000111156106bb57506064610115565b506000610115565b4260016000505462278d00600060005054020110156106f05760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156107285760025460ff161561040957610002565b60025460ff1615610767576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0333166000908152600360205260409020548290101561078d57610002565b600160a060020a0383166000908152600360205260409020546107b0908361059f565b15156107bb57610002565b600160a060020a03338116600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610253565b600160a060020a03851660009081526003602052604090205491029150610851908261059f565b151561085c57610002565b600554610869908261059f565b151561087457610002565b600160a060020a03831660008181526003602090815260409182902080548501905560058054850190558151928352820183905280517f36bf5aa3964be01dbd95a0154a8930793fe68353bdc580871ffb2c911366bbc79281900390910190a150505056

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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