Contract Source Code
Find Similiar Contracts
pragma solidity ^0.4.0;
contract CrypteloERC20{
function transfer(address to, uint amount);
}
contract CrypteloPreSale {
using SafeMath for uint256;
mapping (address => bool) private owners;
mapping (address => uint) private WhiteListed;
//if 1 its the first group, if 2 second group
//1st group minimum = 0.1 Ether
//2st group minimum = 40 Ether
mapping (address => uint256) private vestedTokens;
mapping (address => uint256) private dateInvested;
mapping (address => uint256) private firstDeadline;
uint private firstGminimumWeiAmount = 100000000000000000; //0.1 ether
uint private secondGminimumWeiAmount = 40000000000000000000; //40 ether
uint public weiHardCap = 3625000000000000000000; //3625 ether
uint public weiRaised = 0;
uint private weiLeft = weiHardCap;
uint private CRLTotal = 9062500000000000;
uint private CRLToSell = CRLTotal.div(2);
uint private totalVesting = 0;
uint private totalCRLDistributed = 0;
uint private CRLLeft = CRLTotal;
uint public CRLperEther = 1250000000000; //with full decimals
uint public CRLperMicroEther = CRLperEther.div(1000000);
address public CrypteloERC20Address = 0x7123027d76a5135e66b3a365efaba2b55de18a62;
address private forwardFundsWallet = 0xd6c56d07665D44159246517Bb4B2aC9bBeb040cf;
uint firstTimeOffset = 1 years;
//events
event eRefund(address _addr, uint _weiAmount, string where);
event eTokensToSend(address _addr, uint _CRLTokens);
event eSendTokens(address _addr, uint _amount);
function CrypteloPreSale(){
owners[msg.sender] = true;
}
function () payable {
uint amountEthWei = msg.value;
address sender = msg.sender;
uint totalAmountWei;
uint tokensToSend = 0;
uint limit = 0;
if ( WhiteListed[sender] == 0 || amountEthWei > weiLeft){
refund(sender, amountEthWei);
eRefund(sender, amountEthWei, "L 58");
}else{
if(WhiteListed[sender] == 1){ //sender is first group
limit = firstGminimumWeiAmount;
}else{
limit = secondGminimumWeiAmount;
}
if(amountEthWei >= limit){
uint amountMicroEther = amountEthWei.div(1000000000000);
tokensToSend = amountMicroEther.mul(CRLperMicroEther);
eTokensToSend(sender, tokensToSend);
if (totalCRLDistributed.add(tokensToSend) <= CRLToSell){
sendTokens(sender, tokensToSend);
totalCRLDistributed = totalCRLDistributed.add(tokensToSend);
vestTokens(sender, tokensToSend); //vest the same amount
forwardFunds(amountEthWei);
weiRaised = weiRaised.add(amountEthWei);
assert(weiLeft >= amountEthWei);
weiLeft = weiLeft.sub(amountEthWei);
}else{
refund(sender, amountEthWei);
eRefund(sender, amountEthWei, "L 84");
}
}else{
refund(sender, amountEthWei);
eRefund(sender, amountEthWei, "L 75");
}
}
}
function forwardFunds(uint _amountEthWei) private{
forwardFundsWallet.send(_amountEthWei); //find balance
}
function getTotalVesting() public returns (uint _totalvesting){
return totalVesting;
}
function getTotalDistributed() public returns (uint _totalvesting){
return totalCRLDistributed;
}
function vestTokens(address _addr, uint _amountCRL) private returns (bool _success){
totalVesting = totalVesting.add(_amountCRL);
vestedTokens[_addr] = _amountCRL;
dateInvested[_addr] = now;
firstDeadline[_addr] = now.add(firstTimeOffset);
}
function sendTokens(address _to, uint _amountCRL) private returns (address _addr, uint _amount){
//invoke call on token address
CrypteloERC20 _crypteloerc20;
_crypteloerc20 = CrypteloERC20(CrypteloERC20Address);
_crypteloerc20.transfer(_to, _amountCRL);
eSendTokens(_to, _amountCRL);
}
function checkMyTokens() public returns (uint256 _CRLtokens) {
return vestedTokens[msg.sender];
}
function checkMyVestingPeriod() public returns (uint256 _first){
return (firstDeadline[msg.sender]);
}
function claimTokens(address _addr){ //add wallet here
uint amount = 0;
if (dateInvested[_addr] > 0 && vestedTokens[_addr] > 0 && now > firstDeadline[_addr]){
amount = amount.add(vestedTokens[_addr]); //allow half of the tokens to be transferred
vestedTokens[_addr] = 0;
if (amount > 0){
//transfer amount to owner
sendTokens(msg.sender, amount);
totalVesting = totalVesting.sub(amount);
}
}
}
function refund(address _sender, uint _amountWei) private{
//refund ether to sender minus transaction fees
_sender.send(_amountWei);
}
function addWhiteList(address _addr, uint group){
if (owners[msg.sender] && group <= 2){
WhiteListed[_addr] = group;
}
}
function removeWhiteList(address _addr){
if (owners[msg.sender]){
WhiteListed[_addr] = 0;
}
}
function isWhiteList(address _addr) public returns (uint _group){
return WhiteListed[_addr];
}
function withdrawDistributionCRL(){
if (owners[msg.sender]){
uint amount = CRLTotal.sub(totalCRLDistributed).sub(totalCRLDistributed);
sendTokens(msg.sender, amount);
}
}
function withdrawAllEther(){
if (owners[msg.sender]){
msg.sender.send(this.balance);
}
}
}
/**
* @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) {
if (a == 0) {
return 0;
}
uint256 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 c;
}
/**
* @dev Substracts 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) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
Contract ABI
[{"constant":true,"inputs":[],"name":"weiHardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"removeWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CrypteloERC20Address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAllEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDistributionCRL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getTotalDistributed","outputs":[{"name":"_totalvesting","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"checkMyTokens","outputs":[{"name":"_CRLtokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"group","type":"uint256"}],"name":"addWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CRLperMicroEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"checkMyVestingPeriod","outputs":[{"name":"_first","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CRLperEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getTotalVesting","outputs":[{"name":"_totalvesting","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"isWhiteList","outputs":[{"name":"_group","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_weiAmount","type":"uint256"},{"indexed":false,"name":"where","type":"string"}],"name":"eRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_CRLTokens","type":"uint256"}],"name":"eTokensToSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"eSendTokens","type":"event"}]
Contract Creation Code
Switch To Opcodes View 606060405267016345785d8a000060055568022b1c8c1227a0000060065568c482fb15ed4704000060075560006008556007546009556620324bb546e800600a556100636002600a546101c164010000000002610806179091906401000000009004565b600b556000600c556000600d55600a54600e5565012309ce5400600f556100a5620f4240600f546101c164010000000002610806179091906401000000009004565b601055737123027d76a5135e66b3a365efaba2b55de18a62601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d6c56d07665d44159246517bb4b2ac9bbeb040cf601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506301e13380601355341561016557600080fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506101dc565b60008082848115156101cf57fe5b0490508091505092915050565b6110bc806101eb6000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a7cf2aa146105045780632042e5c21461052d5780632a10abc31461056657806331c91117146105bb5780634042b66f146105d05780634d720209146105f95780635695fa581461060e57806369658cf3146106375780636e2db8d71461066057806370cd89eb146106a2578063d3d8acf8146106cb578063d8b98118146106f4578063df8de3e71461071d578063e9afad3814610756578063f99031a71461077f575b60008060008060008034955033945060009250600091506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480610141575060095486115b156101f95761015085876107cc565b7f3335aa78c4dce732bb2b8d4699f3391c7ad8db87709f6d6a51fdeb4b5e87cef28587604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260048152602001807f4c20353800000000000000000000000000000000000000000000000000000000815250602001935050505060405180910390a16104fc565b60018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561024a576005549150610250565b60065491505b818610151561044c5761027164e8d4a510008761080690919063ffffffff16565b90506102886010548261082190919063ffffffff16565b92507f3711096713ac9ff5d39bd945b7d076df8bcd42d71a2c5b40acb370c3668255e48584604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600b5461030d84600d5461085c90919063ffffffff16565b1115156103985761031e858461087a565b505061033583600d5461085c90919063ffffffff16565b600d8190555061034585846109cd565b5061034f86610ad0565b6103648660085461085c90919063ffffffff16565b600881905550856009541015151561037857fe5b61038d86600954610b2b90919063ffffffff16565b600981905550610447565b6103a285876107cc565b7f3335aa78c4dce732bb2b8d4699f3391c7ad8db87709f6d6a51fdeb4b5e87cef28587604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260048152602001807f4c20383400000000000000000000000000000000000000000000000000000000815250602001935050505060405180910390a15b6104fb565b61045685876107cc565b7f3335aa78c4dce732bb2b8d4699f3391c7ad8db87709f6d6a51fdeb4b5e87cef28587604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260048152602001807f4c20373500000000000000000000000000000000000000000000000000000000815250602001935050505060405180910390a15b5b505050505050005b341561050f57600080fd5b610517610b44565b6040518082815260200191505060405180910390f35b341561053857600080fd5b610564600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b4a565b005b341561057157600080fd5b610579610be4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105c657600080fd5b6105ce610c0a565b005b34156105db57600080fd5b6105e3610cab565b6040518082815260200191505060405180910390f35b341561060457600080fd5b61060c610cb1565b005b341561061957600080fd5b610621610d41565b6040518082815260200191505060405180910390f35b341561064257600080fd5b61064a610d4b565b6040518082815260200191505060405180910390f35b341561066b57600080fd5b6106a0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d92565b005b34156106ad57600080fd5b6106b5610e39565b6040518082815260200191505060405180910390f35b34156106d657600080fd5b6106de610e3f565b6040518082815260200191505060405180910390f35b34156106ff57600080fd5b610707610e86565b6040518082815260200191505060405180910390f35b341561072857600080fd5b610754600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e8c565b005b341561076157600080fd5b61076961103d565b6040518082815260200191505060405180910390f35b341561078a57600080fd5b6107b6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611047565b6040518082815260200191505060405180910390f35b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050505050565b600080828481151561081457fe5b0490508091505092915050565b60008060008414156108365760009150610855565b828402905082848281151561084757fe5b0414151561085157fe5b8091505b5092915050565b600080828401905083811015151561087057fe5b8091505092915050565b6000806000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561094657600080fd5b6102c65a03f1151561095757600080fd5b5050507fb657ae630ba37e867b2c317246dd6089ed144afdf61c77ee30a6773b46cc0e698585604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1509250929050565b60006109e482600c5461085c90919063ffffffff16565b600c8190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a876013544261085c90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050505050565b6000828211151515610b3957fe5b818303905092915050565b60075481565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610be1576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ca9573373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050505b565b60085481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d3e57610d2f600d54610d21600d54600a54610b2b90919063ffffffff16565b610b2b90919063ffffffff16565b9050610d3b338261087a565b50505b50565b6000600d54905090565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610deb575060028111155b15610e355780600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b60105481565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600f5481565b60008090506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610f1f57506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b8015610f695750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442115b1561103957610fc0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261085c90919063ffffffff16565b90506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156110385761101a338261087a565b505061103181600c54610b2b90919063ffffffff16565b600c819055505b5b5050565b6000600c54905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490509190505600a165627a7a72305820bd93925f7cd91036248319572dede6c1f86b1abc2bbc64f75f75d2cb0721fdab0029
Swarm Source:
bzzr://bd93925f7cd91036248319572dede6c1f86b1abc2bbc64f75f75d2cb0721fdab