ETH Price: $3,288.73 (+1.45%)
Gas: 2 Gwei

Contract

0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170
 
Transaction Hash
Method
Block
From
To
Transfer126641522021-06-19 10:06:241134 days ago1624097184IN
vSlice.io: Old VSL Token
0 ETH0.00529100
Transfer122373822021-04-14 9:26:561200 days ago1618392416IN
vSlice.io: Old VSL Token
0 ETH0.00663639192.57142857
Transfer119101622021-02-23 0:49:171250 days ago1614041357IN
vSlice.io: Old VSL Token
0 ETH0.01042635211
Transfer116224742021-01-09 19:28:311294 days ago1610220511IN
vSlice.io: Old VSL Token
0 ETH0.00523392120
Transfer115701062021-01-01 18:34:541302 days ago1609526094IN
vSlice.io: Old VSL Token
0 ETH0.00432861123
Transfer115158042020-12-24 10:38:551311 days ago1608806335IN
vSlice.io: Old VSL Token
0 ETH0.00314908110
Transfer115155602020-12-24 9:44:401311 days ago1608803080IN
vSlice.io: Old VSL Token
0 ETH0.0042042785
Transfer113979682020-12-06 8:08:021329 days ago1607242082IN
vSlice.io: Old VSL Token
0 ETH0.0039243690
Transfer113979372020-12-06 7:59:281329 days ago1607241568IN
vSlice.io: Old VSL Token
0 ETH0.0039254490
Transfer113979312020-12-06 7:58:131329 days ago1607241493IN
vSlice.io: Old VSL Token
0 ETH0.0039243690
Transfer113979232020-12-06 7:55:331329 days ago1607241333IN
vSlice.io: Old VSL Token
0 ETH0.0039243690
Transfer113979132020-12-06 7:53:551329 days ago1607241235IN
vSlice.io: Old VSL Token
0 ETH0.0039243690
Transfer113979032020-12-06 7:51:421329 days ago1607241102IN
vSlice.io: Old VSL Token
0 ETH0.0050421690
Transfer113021942020-11-21 15:08:341343 days ago1605971314IN
vSlice.io: Old VSL Token
0 ETH0.0033118167
Transfer112437142020-11-12 15:57:251352 days ago1605196645IN
vSlice.io: Old VSL Token
0 ETH0.0019608435
Transfer111046672020-10-22 7:32:511374 days ago1603351971IN
vSlice.io: Old VSL Token
0 ETH0.0012366525
Transfer110805762020-10-18 14:58:081377 days ago1603033088IN
vSlice.io: Old VSL Token
0 ETH0.0015693136
Transfer110791452020-10-18 9:41:221378 days ago1603014082IN
vSlice.io: Old VSL Token
0 ETH0.0008718420
Transfer110383582020-10-12 3:38:311384 days ago1602473911IN
vSlice.io: Old VSL Token
0 ETH0.0012470728.6
Transfer109372342020-09-26 8:41:381400 days ago1601109698IN
vSlice.io: Old VSL Token
0 ETH0.0024688260.18
Transfer109231232020-09-24 4:29:311402 days ago1600921771IN
vSlice.io: Old VSL Token
0 ETH0.0034065369
Transfer107820802020-09-02 13:28:181423 days ago1599053298IN
vSlice.io: Old VSL Token
0 ETH0.021796500
Transfer107573282020-08-29 18:35:441427 days ago1598726144IN
vSlice.io: Old VSL Token
0 ETH0.005934120
Transfer105884152020-08-03 18:21:501453 days ago1596478910IN
vSlice.io: Old VSL Token
0 ETH0.0017436840
Transfer103812512020-07-02 17:07:431485 days ago1593709663IN
vSlice.io: Old VSL Token
0 ETH0.002930250
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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"}]

Deployed Bytecode

0x606060405236156100cf5760e060020a6000350463018e13d081146100d4578063095ea7b3146100e257806318160ddd1461010957806323b872dd146101185780633592f369146101425780635334c231146101655780636ad5b3ea1461017257806370a0823114610189578063a9059cbb146101bc578063ac4746ab146101e3578063b7930507146101f2578063d81dfe3014610201578063d8270dce14610210578063dd62ed3e1461021e578063ef40c3e614610259578063f0dda65c14610270578063f83d08ba1461029c575b610002565b34610002576101aa60005481565b34610002576102ad60043560243560025460009060ff610100909104161561030057610002565b34610002576101aa6005545b90565b34610002576102ad60043560243560443560025460009060ff610100909104161561044457610002565b34610002576102c160065433600160a060020a0390811691161461065157610002565b34610002576101aa6102c8565b34610002576102e4600654600160a060020a031681565b3461000257600160a060020a03600435166000908152600360205260409020545b60408051918252519081900360200190f35b34610002576102ad60043560243560025460009060ff61010090910416156106c357610002565b34610002576101aa62278d0081565b34610002576101aa6220f58081565b34610002576101aa6206978081565b34610002576101aa60015481565b34610002576101aa600435602435600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b34610002576102ad60025460ff6101009091041681565b34610002576102c160043560243560065460009033600160a060020a039081169116146102c357610002565b34610002576102ad60025460ff1681565b604080519115158252519081900360200190f35b005b8161082a5b60004260016000505462093a8001111561068757506082610115565b60408051600160a060020a039092168252519081900360200190f35b4260016000505462278d006000600050540201101561032d5760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156103655760025460ff161561040957610002565b60025460ff16156103a4576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a03338116600081815260046020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3506001610253565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a1610253565b4260016000505462278d00600060005054020110156104715760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156104a95760025460ff161561050e57610002565b60025460ff16156104e8576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0384166000908152600360205260409020548290101561054c57610002565b6002805460ff191660011790556040517f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b90600090a15b9392505050565b600160a060020a03808516600090815260046020908152604080832033909416835292905220548290101561058057610002565b600160a060020a0383166000908152600360205260409020546105bc90835b600082828401101580156105b557508182840110155b9050610253565b15156105c757610002565b600160a060020a03808516600081815260046020908152604080832033861684528252808320805488900390558383526003825280832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610545565b6002805461ff00191690556040517f0d27864fb2752ddaaa945c943c62b77c1476125056d0343ab1e2159da779fa4090600090a1565b42600160005054621275000111156106a157506078610115565b426001600050546224ea000111156106bb57506064610115565b506000610115565b4260016000505462278d00600060005054020110156106f05760015462278d009042036001919004016000555b4262069780600160006000505403026220f58060006000505402600160005054010110156107285760025460ff161561040957610002565b60025460ff1615610767576002805460ff191690556040517f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd690600090a15b600160a060020a0333166000908152600360205260409020548290101561078d57610002565b600160a060020a0383166000908152600360205260409020546107b0908361059f565b15156107bb57610002565b600160a060020a03338116600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610253565b600160a060020a03851660009081526003602052604090205491029150610851908261059f565b151561085c57610002565b600554610869908261059f565b151561087457610002565b600160a060020a03831660008181526003602090815260409182902080548501905560058054850190558151928352820183905280517f36bf5aa3964be01dbd95a0154a8930793fe68353bdc580871ffb2c911366bbc79281900390910190a150505056

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

vSlice token contract has migrated to 0xDb144CD0F15eE40AaC5602364B470d703d7e16b6.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.