-
-
Save RideSolo/1f671b39053a07abd743dddf19fda588 to your computer and use it in GitHub Desktop.
DailyETC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.18; | |
contract DailyETC{ | |
mapping (address => uint256) public investedETH; | |
mapping (address => uint256) public lastInvest; | |
mapping (address => uint256) public affiliateCommision; | |
address dev = 0x97a0C5ed827d54aa96830D94118ec3142626DFcd; | |
address promoter = 0x873913b910185B394F367566696f12A0D7c464c0; | |
function investETH(address referral) public payable { | |
require(msg.value >= 5 ether); | |
if(getProfit(msg.sender) > 0){ | |
uint256 profit = getProfit(msg.sender); | |
lastInvest[msg.sender] = now; | |
msg.sender.transfer(profit); | |
} | |
uint256 amount = msg.value; | |
uint256 commision = SafeMath.div(amount, 20); | |
if(referral != msg.sender && referral != 0x1 && referral != dev && referral != promoter){ | |
affiliateCommision[referral] = SafeMath.add(affiliateCommision[referral], commision); | |
} | |
affiliateCommision[dev] = SafeMath.add(affiliateCommision[dev], commision); | |
affiliateCommision[promoter] = SafeMath.add(affiliateCommision[promoter], commision); | |
investedETH[msg.sender] = SafeMath.add(investedETH[msg.sender], amount); | |
lastInvest[msg.sender] = now; | |
} | |
function withdraw() public{ | |
uint256 profit = getProfit(msg.sender); | |
require(profit > 0); | |
lastInvest[msg.sender] = now; | |
msg.sender.transfer(profit); | |
} | |
function getProfitFromSender() public view returns(uint256){ | |
return getProfit(msg.sender); | |
} | |
function getProfit(address customer) public view returns(uint256){ | |
uint256 secondsPassed = SafeMath.sub(now, lastInvest[customer]); | |
return SafeMath.div(SafeMath.mul(secondsPassed, investedETH[customer]), 2419200); | |
} | |
function reinvestProfit() public { | |
uint256 profit = getProfit(msg.sender); | |
require(profit > 0); | |
lastInvest[msg.sender] = now; | |
investedETH[msg.sender] = SafeMath.add(investedETH[msg.sender], profit); | |
} | |
function getAffiliateCommision() public view returns(uint256){ | |
return affiliateCommision[msg.sender]; | |
} | |
function withdrawAffiliateCommision() public { | |
require(affiliateCommision[msg.sender] > 0); | |
uint256 commision = affiliateCommision[msg.sender]; | |
affiliateCommision[msg.sender] = 0; | |
msg.sender.transfer(commision); | |
} | |
function getInvested() public view returns(uint256){ | |
return investedETH[msg.sender]; | |
} | |
function getBalance() public view returns(uint256){ | |
return this.balance; | |
} | |
function min(uint256 a, uint256 b) private pure returns (uint256) { | |
return a < b ? a : b; | |
} | |
function max(uint256 a, uint256 b) private pure returns (uint256) { | |
return a > b ? a : b; | |
} | |
} | |
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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment