Transaction Hash:
Block:
10842028 at Sep-11-2020 05:51:49 PM +UTC
Transaction Fee:
0.0184074 ETH
$38.89
Gas Used:
153,395 Gas / 120 Gwei
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x55C1e6e0...60CC03717 | 0.073700722478308799 Eth | 0.076315383780992205 Eth | 0.002614661302683406 | ||
| 0x949EB99D...2De4b18cA | 0 Eth | 0.001045864521073362 Eth | 0.001045864521073362 | ||
| 0xa0e8158f...094Eb6472 | 0.780900586439683409 Eth | 0.78142351870022009 Eth | 0.000522932260536681 | ||
| 0xC9089f5A...4d4Feb841 | 0.000792711023416731 Eth | 0.002361507805026774 Eth | 0.001568796781610043 | ||
| 0xDCdC578A...4479057D4 | 0.036334429350641693 Eth | 0.037118827741446714 Eth | 0.000784398390805021 | ||
| 0xEA05267f...6B2f54E4a |
0.249418993973699744 Eth
Nonce: 10
|
0.257158207000533805 Eth
Nonce: 11
| 0.007739213026834061 | ||
|
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 347.200510127670845076 Eth | 347.218917527670845076 Eth | 0.0184074 | |
| 0xf09D3e8D...02e8131B2 | 0.059462312225587714 Eth | 0.02677904594204514 Eth | 0.032683266283542574 |
Execution Trace
EtherProfits.CALL( )
- ETH 0.026146613026834061
0xea05267f3f32086732e73e3ed63fcca6b2f54e4a.CALL( ) - ETH 0.002614661302683406
0x55c1e6e03e3c68cdfe7c81d881bae9d60cc03717.CALL( ) - ETH 0.001568796781610043
0xc9089f5a3e54213275340126d97641c4d4feb841.CALL( ) - ETH 0.001045864521073362
0x949eb99d7ace8def3bf04dc91d01aee2de4b18ca.CALL( ) - ETH 0.000522932260536681
0xa0e8158f198346170cfd1e6a403e856094eb6472.CALL( ) - ETH 0.000784398390805021
0xdcdc578adca209a6f8b437c6fb928f84479057d4.CALL( )
[EtherProfits (ln:214)]
deposit[EtherProfits (ln:215)]setRefLink[EtherProfits (ln:152)]setInviter[EtherProfits (ln:73)]
setInviter[EtherProfits (ln:162)]refSpreader[EtherProfits (ln:166)]sub[EtherProfits (ln:115)]div[EtherProfits (ln:116)]mul[EtherProfits (ln:116)]add[EtherProfits (ln:117)]transfer[EtherProfits (ln:118)]sub[EtherProfits (ln:122)]div[EtherProfits (ln:123)]mul[EtherProfits (ln:123)]add[EtherProfits (ln:124)]transfer[EtherProfits (ln:125)]sub[EtherProfits (ln:129)]div[EtherProfits (ln:130)]mul[EtherProfits (ln:130)]add[EtherProfits (ln:131)]transfer[EtherProfits (ln:132)]sub[EtherProfits (ln:136)]div[EtherProfits (ln:137)]mul[EtherProfits (ln:137)]add[EtherProfits (ln:138)]transfer[EtherProfits (ln:139)]transfer[EtherProfits (ln:143)]div[EtherProfits (ln:143)]mul[EtherProfits (ln:143)]
add[EtherProfits (ln:168)]add[EtherProfits (ln:169)]transfer[EtherProfits (ln:170)]div[EtherProfits (ln:170)]mul[EtherProfits (ln:170)]transfer[EtherProfits (ln:171)]div[EtherProfits (ln:171)]mul[EtherProfits (ln:171)]
pragma solidity ^0.5.4;
// Website: https://www.etherprofits.club
contract EtherProfits {
using SafeMath for uint;
struct User {
uint32 level1;
uint32 level2;
uint32 level3;
uint32 level4;
uint32 refLink;
uint32 inviterLink;
uint investment;
uint timestamp;
uint balance;
uint totalRefReward;
uint payout;
address payable inviter;
uint8 tier;
}
uint[] public tierPrices;
uint[] public refReward;
uint public ownersPart;
uint public startDate;
address payable private feed1 = msg.sender;
address payable private feed2 = msg.sender;
address payable private owner;
uint public totalUsers;
uint public minDeposit;
uint32 public lastRefLink;
uint[] public rates;
mapping (address => User) public users;
mapping (uint32 => address payable) public links;
uint public totalInvested;
constructor(address payable ownerAddress) public {
owner = ownerAddress;
links[1] = ownerAddress;
totalUsers = 0;
totalInvested = 0;
minDeposit = 0.05 ether;
refReward = [10, 6, 4, 2];
ownersPart = 5;
lastRefLink = 0;
tierPrices = [0, 0.025 ether, 0.05 ether];
rates = [1041660, 1041665, 1041670];
startDate = 1597507200;
}
modifier restricted() {
require(msg.sender == owner);
_;
}
function getRefLink(address addr) public view returns(uint){
return users[addr].refLink;
}
function setRefLink(uint32 refLink) private {
User storage user = users[msg.sender];
if (user.refLink != 0) return;
lastRefLink = lastRefLink + 1;
user.refLink = lastRefLink;
links[lastRefLink] = msg.sender;
setInviter(refLink);
}
function setInviter(uint32 refLink) private {
User storage user = users[msg.sender];
address payable inviter1 = links[refLink] == address(0x0) ||
links[refLink] == msg.sender ? owner : links[refLink];
user.inviter = inviter1;
user.inviterLink = inviter1 == owner ? 1 : refLink;
address payable inviter2 = users[inviter1].inviter;
address payable inviter3 = users[inviter2].inviter;
address payable inviter4 = users[inviter3].inviter;
users[inviter1].level1++;
users[inviter2].level2++;
users[inviter3].level3++;
users[inviter4].level4++;
}
function checkout(address payable addr) private {
User storage user = users[addr];
uint secondsGone = now.sub(user.timestamp);
if (secondsGone == 0 || user.timestamp == 0) return;
if(now < startDate) {
user.timestamp = startDate;
} else {
uint profit = user.investment.mul(secondsGone).mul(rates[user.tier]).div(1e12);
user.balance = user.balance.add(profit);
user.timestamp = user.timestamp.add(secondsGone);
}
}
function refSpreader(address payable inviter1, uint amount) private {
address payable inviter2 = users[inviter1].inviter;
address payable inviter3 = users[inviter2].inviter;
address payable inviter4 = users[inviter3].inviter;
uint refSum = refReward[0] + refReward[1] + refReward[2] + refReward[3] + 3;
if (inviter1 != address(0x0)) {
refSum = refSum.sub(refReward[0]);
uint reward1 = amount.mul(refReward[0]).div(100);
users[inviter1].totalRefReward = users[inviter1].totalRefReward.add(reward1);
inviter1.transfer(reward1);
}
if (inviter2 != address(0x0)) {
refSum = refSum.sub(refReward[1]);
uint reward2 = amount.mul(refReward[1]).div(100);
users[inviter2].totalRefReward = users[inviter2].totalRefReward.add(reward2);
inviter2.transfer(reward2);
}
if (inviter3 != address(0x0)) {
refSum = refSum.sub(refReward[2]);
uint reward3 = amount.mul(refReward[2]).div(100);
users[inviter3].totalRefReward = users[inviter3].totalRefReward.add(reward3);
inviter3.transfer(reward3);
}
if (inviter4 != address(0x0)) {
refSum = refSum.sub(refReward[3]);
uint reward4 = amount.mul(refReward[3]).div(100);
users[inviter4].totalRefReward = users[inviter4].totalRefReward.add(reward4);
inviter4.transfer(reward4);
}
if (refSum == 0) return;
owner.transfer(amount.mul(refSum).div(100));
}
function deposit(uint32 refLink) public payable {
require(msg.value >= minDeposit);
checkout(msg.sender);
User storage user = users[msg.sender];
if (user.refLink == 0) {
setRefLink(refLink);
if(now < startDate) {
user.tier = 2;
}
}
if (user.timestamp == 0) {
totalUsers++;
user.timestamp = now;
if (user.inviter == address(0x0)) {
setInviter(refLink);
}
}
refSpreader(user.inviter, msg.value);
totalInvested = totalInvested.add(msg.value);
user.investment = user.investment.add(msg.value);
feed1.transfer(msg.value.mul(ownersPart).div(100));
feed2.transfer(msg.value.mul(ownersPart).div(100));
}
function reinvest() external payable {
require(now > startDate);
checkout(msg.sender);
User storage user = users[msg.sender];
require(user.balance > 0);
uint amount = user.balance;
user.balance = 0;
user.investment = user.investment.add(amount);
refSpreader(user.inviter, amount);
totalInvested = totalInvested.add(amount);
feed1.transfer(amount.mul(ownersPart).div(100));
feed2.transfer(amount.mul(ownersPart).div(100));
}
function withdraw() external payable {
require(now > startDate);
checkout(msg.sender);
User storage user = users[msg.sender];
require(user.balance > 0);
uint amount = user.balance.div(2);
user.payout = user.payout.add(amount);
user.balance = 0;
msg.sender.transfer(amount);
user.investment = user.investment.add(amount);
refSpreader(user.inviter, amount);
totalInvested = totalInvested.add(amount);
}
function upgradeTier() external payable {
User storage user = users[msg.sender];
require(user.refLink != 0);
require(user.tier < 2);
require(msg.value == tierPrices[user.tier + 1]);
checkout(msg.sender);
user.tier++;
owner.transfer(msg.value);
}
function () external payable {
deposit(0);
}
function _changeOwner(address payable newOwner) external restricted {
owner = newOwner;
links[1] = newOwner;
}
function _setTiers(uint newTier1, uint newTier2) external payable restricted {
tierPrices[1] = newTier1;
tierPrices[2] = newTier2;
}
function _setRates(uint rate0, uint rate1, uint rate2) external payable restricted {
rates[0] = rate0;
rates[1] = rate1;
rates[2] = rate2;
}
function _setRefReward(uint reward1, uint reward2, uint reward3, uint reward4) external payable restricted {
refReward[0] = reward1;
refReward[1] = reward2;
refReward[2] = reward3;
refReward[3] = reward4;
}
function _setMinDeposit(uint newMinDeposit) external payable restricted {
require(newMinDeposit >= 0.005 ether);
minDeposit = newMinDeposit;
}
function _setStartDate(uint newStartDate) external payable restricted {
startDate = newStartDate;
}
function _setOwnersPart(uint newPart) external payable restricted {
ownersPart = newPart;
}
function _setLastRefLink(uint32 newRefLink) external payable restricted {
lastRefLink = newRefLink;
}
function updateFeed1(address payable _address) external {
require(msg.sender==owner);
feed1 = _address;
}
function updateFeed2(address payable _address) external {
require(msg.sender==owner);
feed2 = _address;
}
function setOwner(address payable _address) public {
require(msg.sender==owner);
owner = _address;
}
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0);
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}