Token migration announcement. vSlice token contract has migrated to a new address.
ERC-20
Old Contract
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)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | 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
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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.